[freetds] One row good, two rows "memory exhausted"
Mark Bird
markabird at hotmail.com
Sat Sep 13 22:15:43 EDT 2008
Hi there,
A little more info, I turned on logging in freetds.log and what I find is very interesting. In the log everything seems fine until PHP starts to read from the result set that returns 2 records. Then, apparently as it tries to read the second record, you read "leaving dbnextrow() returning BUF_FULL" and it appears to begin trying to read the second record again and again, each time ending with "leaving dbnextrow() returning BUF_FULL" It appears to get into some kind of endless loop until it finally runs out of memory.
Below is the section of the log that begins repeating. If anybody has any ideas I'd appreciate it a ton. Thanks!
util.c:162:Changed query state from PENDING to READING
token.c:510:processing result tokens. marker is d1(ROW)
token.c:2166:tds_process_row(): reading column 0
token.c:1915:tds_get_data: type 39, varint size 2
token.c:1975:tds_get_data(): wire column size is 23
util.c:162:Changed query state from READING to PENDING
buffering.h:231:buffer_transfer_bound_data(0x5555644c41b0 4040 -1 0x5555644c41a0 1)
dblib.c:2030:leaving dbnextrow() returning REG_ROW/MORE_ROWS
dblib.c:6884:dblastrow(0x5555644c41a0)
dblib.c:2698:dbclrbuf(0x5555644c41a0, 0)
dblib.c:3032:dbdatlen(0x5555644c41a0, 1)
dblib.c:3040:dbdatlen() type = 39, len= 23
dblib.c:3060:dbdata(0x5555644c41a0, 1)
dblib.c:3032:dbdatlen(0x5555644c41a0, 1)
dblib.c:3040:dbdatlen() type = 39, len= 23
dblib.c:3060:dbdata(0x5555644c41a0, 1)
dblib.c:1948:dbnextrow(0x5555644c41a0)
dblib.c:1961:dbnextrow() dbresults_state = 2 (_DB_RES_RESULTSET_ROWS)
dblib.c:2030:leaving dbnextrow() returning BUF_FULL
dblib.c:6884:dblastrow(0x5555644c41a0)
dblib.c:2698:dbclrbuf(0x5555644c41a0, 0)
dblib.c:3032:dbdatlen(0x5555644c41a0, 1)
dblib.c:3040:dbdatlen() type = 39, len= 23
dblib.c:3060:dbdata(0x5555644c41a0, 1)
dblib.c:3032:dbdatlen(0x5555644c41a0, 1)
dblib.c:3040:dbdatlen() type = 39, len= 23
dblib.c:3060:dbdata(0x5555644c41a0, 1)
dblib.c:1948:dbnextrow(0x5555644c41a0)
dblib.c:1961:dbnextrow() dbresults_state = 2 (_DB_RES_RESULTSET_ROWS)
dblib.c:2030:leaving dbnextrow() returning BUF_FULL
dblib.c:6884:dblastrow(0x5555644c41a0)
dblib.c:2698:dbclrbuf(0x5555644c41a0, 0)
dblib.c:3032:dbdatlen(0x5555644c41a0, 1)
dblib.c:3040:dbdatlen() type = 39, len= 23
dblib.c:3060:dbdata(0x5555644c41a0, 1)
dblib.c:3032:dbdatlen(0x5555644c41a0, 1)
dblib.c:3040:dbdatlen() type = 39, len= 23
dblib.c:3060:dbdata(0x5555644c41a0, 1)
dblib.c:1948:dbnextrow(0x5555644c41a0)
dblib.c:1961:dbnextrow() dbresults_state = 2 (_DB_RES_RESULTSET_ROWS)
dblib.c:2030:leaving dbnextrow() returning BUF_FULL
dblib.c:6884:dblastrow(0x5555644c41a0)
dblib.c:2698:dbclrbuf(0x5555644c41a0, 0)
dblib.c:3032:dbdatlen(0x5555644c41a0, 1)
dblib.c:3040:dbdatlen() type = 39, len= 23
dblib.c:3060:dbdata(0x5555644c41a0, 1)
dblib.c:3032:dbdatlen(0x5555644c41a0, 1)
dblib.c:3040:dbdatlen() type = 39, len= 23
dblib.c:3060:dbdata(0x5555644c41a0, 1)
dblib.c:1948:dbnextrow(0x5555644c41a0)
dblib.c:1961:dbnextrow() dbresults_state = 2 (_DB_RES_RESULTSET_ROWS)
dblib.c:2030:leaving dbnextrow() returning BUF_FULL
dblib.c:6884:dblastrow(0x5555644c41a0) ...
Then it just repeats over and over...
Thanks for taking a look.
Mark
_________________________________________________________________
See how Windows Mobile brings your life together—at home, work, or on the go.
http://clk.atdmt.com/MRT/go/msnnkwxp1020093182mrt/direct/01/
More information about the FreeTDS
mailing list