Loosing Control With Bad SQL

Ken Collins <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <[email protected]>
Hey All,

I am writing a tiny tds client using db-lib (currently testing 0.82) and I am not able to cleanup/cancel the command buffer after executing some bad sql. Given this small example below.

dbcmd(dbproc,sql); // sql = "SELECT * FROM [foobar]"
dbsqlexec(dbproc);

or

dbcmd(dbproc,sql); // sql = "SELECT * FROM [foobar]"
dbsqlsend(dbproc);
dbsqlok(dbproc);

I can never get dbsqlexec or dbsqlok to return a status, just seems my program stops at that point. So the next time I come back around to putting something in the command buffer and executing it, I get a "Attempt to initiate a new Adaptive Server operation with results pending" error. It looks as tho I might be in a situation of checking the connection's state before on my own (which I'm sure I can do) and then doing the cleanup of the previous failure. Tho I'm thinking I am missing something and would love some input. The freetds.log is below if interested.


 - Thanks in advance,
    Ken


dblib.c:1243:dbcmd(0x10151c850, SELECT * FROM [foobar])
dblib.c:1250:dbcmd() bufsz = 0
dblib.c:6722:dbsqlsend(0x10151c850)
mem.c:563:tds_free_all_results()
util.c:162:Changed query state from IDLE to QUERYING
write.c:136:tds_put_string converting 22 bytes of "SELECT * FROM [foobar]"
write.c:164:tds_put_string wrote 44 bytes
util.c:162:Changed query state from QUERYING to PENDING
net.c:779:Sending packet
0000 01 01 00 34 00 00 01 00-53 00 45 00 4c 00 45 00 |...4.... S.E.L.E.|
0010 43 00 54 00 20 00 2a 00-20 00 46 00 52 00 4f 00 |C.T. .*.  .F.R.O.|
0020 4d 00 20 00 5b 00 66 00-6f 00 6f 00 62 00 61 00 |M. .[.f. o.o.b.a.|
0030 72 00 5d 00            -                        |r.].|

dblib.c:4532:dbsqlok(0x10151c850)
net.c:592:Received header
0000 04 01 00 70 00 35 01 00-                        |...p.5..|

net.c:671:Received packet
0000 aa 5c 00 d0 00 00 00 01-10 1d 00 49 00 6e 00 76 |.\...... ...I.n.v|
0010 00 61 00 6c 00 69 00 64-00 20 00 6f 00 62 00 6a |.a.l.i.d . .o.b.j|
0020 00 65 00 63 00 74 00 20-00 6e 00 61 00 6d 00 65 |.e.c.t.  .n.a.m.e|
0030 00 20 00 27 00 66 00 6f-00 6f 00 62 00 61 00 72 |. .'.f.o .o.b.a.r|
0040 00 27 00 2e 00 0b 53 00-51 00 4c 00 53 00 45 00 |.'....S. Q.L.S.E.|
0050 52 00 56 00 45 00 52 00-30 00 38 00 00 01 00 fd |R.V.E.R. 0.8.....|
0060 02 00 fd 00 00 00 00 00-                        |........|

dblib.c:4565:dbsqlok() not done, calling tds_process_tokens()
token.c:495:tds_process_tokens(0x10151cb30, 0x7fff5fbedf88, 0x7fff5fbedf8c, 0x6914)
util.c:162:Changed query state from PENDING to READING
token.c:510:processing result tokens.  marker is  aa(ERROR)
token.c:108:tds_process_default_tokens() marker is aa(ERROR)
token.c:2451:tds_process_msg() reading message from server
token.c:2516:tds_process_msg() calling client msg handler
dbutil.c:86:_dblib_handle_info_message(0x10151d400, 0x10151cb30, 0x7fff5fbeddb0)
dbutil.c:87:msgno 208: "Invalid object name 'foobar'."
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.