[python-sybase] MemoryError using Sybase, FreeTDS, MS SQL

Dave Cole djc at object-craft.com.au
24 Jan 2003 12:04:10 +1100


> 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