From: Dave C. <dj...@ob...> - 2003-01-24 20:04:10
|
> Hi, Dave, thanks for your response. We have a big interest in this > module because without it, we have to use a combination of Perl and > Python and it's pretty ugly. Funny, that is why I wrote the module - I was looking at either Perl or ISQL... [snip] > ct_describe(cmd1, 10, &fmt) -> CS_SUCCEED, datafmt9=[name:"material" > type:CS_TEXT_TYPE status:CS_CANBENULL format:CS_FMT_UNUSED count:1 > maxlength:2147483647] I think that maxlength is the problem here. Can you try a little experiment for me... Try this patch: --- Sybase.py 23 Jan 2003 10:11:02 -0000 1.56 +++ Sybase.py 24 Jan 2003 01:01:13 -0000 @@ -158,6 +158,8 @@ fmt.count = count if fmt.datatype == CS_VARBINARY_TYPE: fmt.datatype = CS_BINARY_TYPE + if fmt.maxlngth > 65536: + fmx.maxlength = 65536 status, buf = cmd.ct_bind(i + 1, fmt) if status != CS_SUCCEED: raise Error('ct_bind') I am not sure if will solve the problem or not, but it is worth a try. > There should be two more columns after the "material" column, so it > seems that it does not finish retrieving one row, but stops at the > first text type row. > > Knowing this, I've tried a similar query on a table that does not > have a text column and I get a different error. Here is part of the > output, the full output is attached in "output2". > > ct_describe(cmd1, 8, &fmt) -> CS_SUCCEED, datafmt7=[name:"energy" > type:CS_FLOAT_TYPE status:CS_FALSE format:CS_FMT_UNUSED count:1 > maxlength:8 scale:0 precision:0] > ct_bind(cmd1, 8, &datafmt7->fmt=[name:"energy" type:CS_FLOAT_TYPE > status:CS_FALSE format:CS_FMT_UNUSED count:32 maxlength:8 scale:0 > precision:0], databuf7->buff, databuf7->copied, databuf7->indicator) > -> > CS_SUCCEED, databuf7 > ct_fetch(cmd1, CS_UNUSED, CS_UNUSED, CS_UNUSED, &rows_read) -> > CS_ROW_FAIL, 0 This looks like another column binding problem. Can you send a more complete debug trace? - Dave -- http://www.object-craft.com.au |