Re: DBD::Sybase placeholder support
"Dan Wierenga" <[email protected]>
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Message-ID | <24CF2B9B9D2BCC4B8F6EA9528B63C8360A20A40E@LA-EXCLUST01.corp.valueclick.com> |
> -----Original Message----- > From: [email protected] [mailto:freetds- > [email protected]] On Behalf Of James K. Lowden > > If you send me a TDSDUMP log, I hope I'd be able to tell you how it > works. Script and log attached. > Could I ask you to test with 0.82, too? I'd love to announce this a > new > tested, confirmed feature (even though it began working some time > back). > I'd hate to announce it *used* to work and is now broken again. :-/ I'll see if I can install 0.82 soonish. I gave a brief try yesterday and ran into some build problems; I'll try again when I have some time. > Also, do output parameters work? With my proc declared as: create proc proc_foo (@moo datetime, @foo datetime output) as begin select @foo = @moo; select * from dano; end then my $proc_sth = $dbh->prepare(q| declare @foo datetime exec proc_foo ?, @foo output |); $proc_sth->execute('2008-05-09 12:34:56'); { while (my @foo = $proc_sth->fetchrow_array) { print join(', ', @foo); } redo if $proc_sth->{syb_more_results}; } prints the usual result set (from the select * from dano statement) and prints the record from the 2nd recordset, which is the OUTPUT parameter. The DBD::Sybase documentation is actually pretty good on this. > I don't even know how that's supposed to work in Perl. See, that's > what > comes from not using placeholders. ;-) > > Many thanks. This is very cool. > > --jkl > _______________________________________________ > FreeTDS mailing list > [email protected] > http://lists.ibiblio.org/mailman/listinfo/freetds _______________________________________________ FreeTDS mailing list [email protected] http://lists.ibiblio.org/mailman/listinfo/freetds
bar.pl
(application/octet-stream, 468 B)
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
$\ = "\n";
my $dbh = DBI->connect('dbi:Sybase:host=################################;port=####;database=dantest', '#######', '##############', {RaiseError => 1});
my $sth = $dbh->prepare(qq|SELECT bar FROM dano WHERE foo = ?|);
$sth->execute('oink');
while (my @foo = $sth->fetchrow_array) {
print join(', ', @foo);
}
print "Dynamic support: " . $dbh->{syb_dynamic_supported};
$dbh->disconnect;
tds.log
(application/octet-stream, 19.1 KB)
util.c:288:Starting log file for FreeTDS 0.64 on 2008-05-09 10:17:16 with debug flags 0x4fff. iconv.c:195:names for ISO-8859-1: ISO-8859-1 iconv.c:195:names for UTF-8: UTF-8 iconv.c:195:names for UCS-2LE: UCS-2LE iconv.c:195:names for UCS-2BE: UCS-2BE iconv.c:361:iconv to convert client-side data to the "ISO-8859-1" character set iconv.c:514:tds_iconv_info_init: converting "ISO-8859-1"->"UCS-2LE" net.c:168:Connecting to ###.###.##.### port 1533. net.c:673:Sending packet <snip> ... </snip> token.c:314:looking for login token, got e3(ENVCHANGE) token.c:105:tds_process_default_tokens() marker is e3(ENVCHANGE) read.c:179:tds_get_string: reading 6 from wire to give 6 to client. read.c:179:tds_get_string: reading 6 from wire to give 6 to client. token.c:314:looking for login token, got ab(INFO) token.c:105:tds_process_default_tokens() marker is ab(INFO) token.c:2439:tds_process_msg() reading message from server read.c:179:tds_get_string: reading 37 from wire to give 37 to client. read.c:179:tds_get_string: reading 20 from wire to give 20 to client. token.c:2501:tds_process_msg() calling client msg handler ct.c:333:ct_con_props() action = CS_GET property = 9108 ct.c:475:fetching userdata 0x96834e8 token.c:2514:tds_process_msg() returning TDS_SUCCEED token.c:314:looking for login token, got e3(ENVCHANGE) token.c:105:tds_process_default_tokens() marker is e3(ENVCHANGE) read.c:179:tds_get_string: reading 5 from wire to give 5 to client. read.c:179:tds_get_string: reading 1 from wire to give 1 to client. token.c:314:looking for login token, got ad(LOGINACK) read.c:179:tds_get_string: reading 22 from wire to give 22 to client. token.c:314:looking for login token, got e3(ENVCHANGE) token.c:105:tds_process_default_tokens() marker is e3(ENVCHANGE) read.c:179:tds_get_string: reading 3 from wire to give 3 to client. read.c:179:tds_get_string: reading 3 from wire to give 3 to client. token.c:314:looking for login token, got fd(DONE) token.c:105:tds_process_default_tokens() marker is fd(DONE) token.c:2143:tds_process_end: more_results = 0 was_cancelled = 0 error = 0 done_count_valid = 0 token.c:2159:tds_process_end() state set to TDS_IDLE util.c:119:Changing query state from IDLE to IDLE token.c:387:leaving tds_process_login_tokens() returning 1 util.c:119:Changing query state from IDLE to QUERYING mem.c:519:tds_free_all_results() util.c:119:Changing query state from QUERYING to PENDING net.c:673:Sending packet 0000 01 01 00 1b 00 00 00 00-73 65 74 20 74 65 78 74 |........ set text| 0010 73 69 7a 65 20 36 34 35-31 32 20 |size 645 12 | util.c:119:Changing query state from PENDING to READING net.c:446:Received header 0000 04 01 00 11 00 35 01 00- |.....5..| net.c:542:Received packet 0000 fd 00 00 be 00 00 00 00-00 |........ .| token.c:526:processing result tokens. marker is fd(DONE) token.c:2143:tds_process_end: more_results = 0 was_cancelled = 0 error = 0 done_count_valid = 0 token.c:2159:tds_process_end() state set to TDS_IDLE util.c:119:Changing query state from READING to IDLE util.c:119:Changing query state from IDLE to PENDING token.c:514:tds_process_tokens() state is COMPLETED ct.c:592:leaving ct_connect() returning 1 ct.c:603:ct_cmd_alloc() ct.c:214:setting command state from IDLE to IDLE ct.c:622:ct_cmd_alloc() : allocating command list to head ct.c:644:ct_command() ct.c:214:setting command state from IDLE to IDLE ct.c:214:setting command state from IDLE to IDLE ct.c:214:setting command state from IDLE to READY ct.c:808:ct_send() command_type = 148 util.c:119:Changing query state from IDLE to QUERYING mem.c:519:tds_free_all_results() util.c:119:Changing query state from QUERYING to PENDING net.c:673:Sending packet 0000 01 01 00 13 00 00 00 00-75 73 65 20 64 61 6e 74 |........ use dant| 0010 65 73 74 - |est| ct.c:214:setting command state from READY to SENT ct.c:930:ct_send() succeeded ct.c:1064:ct_results() util.c:119:Changing query state from PENDING to READING net.c:446:Received header 0000 04 01 00 6d 00 35 01 00- |...m.5..| net.c:542:Received packet 0000 e3 10 00 01 07 64 61 6e-74 65 73 74 06 6d 61 73 |.....dan test.mas| 0010 74 65 72 ab 46 00 45 16-00 00 01 00 26 00 43 68 |ter.F.E. ....&.Ch| 0020 61 6e 67 65 64 20 64 61-74 61 62 61 73 65 20 63 |anged da tabase c| 0030 6f 6e 74 65 78 74 20 74-6f 20 27 64 61 6e 74 65 |ontext t o 'dante| 0040 73 74 27 2e 14 57 4c 2d-53 51 4c 30 31 2d 44 45 |st'..WL- SQL01-DE| 0050 56 5c 43 4f 52 50 53 59-53 00 01 00 fd 00 00 e2 |V\CORPSY S.......| 0060 00 00 00 00 00 - |.....| token.c:526:processing result tokens. marker is e3(ENVCHANGE) token.c:105:tds_process_default_tokens() marker is e3(ENVCHANGE) read.c:179:tds_get_string: reading 7 from wire to give 7 to client. read.c:179:tds_get_string: reading 6 from wire to give 6 to client. token.c:526:processing result tokens. marker is ab(INFO) token.c:105:tds_process_default_tokens() marker is ab(INFO) token.c:2439:tds_process_msg() reading message from server read.c:179:tds_get_string: reading 38 from wire to give 38 to client. read.c:179:tds_get_string: reading 20 from wire to give 20 to client. token.c:2501:tds_process_msg() calling client msg handler ct.c:333:ct_con_props() action = CS_GET property = 9108 ct.c:475:fetching userdata 0x96834e8 token.c:2514:tds_process_msg() returning TDS_SUCCEED token.c:526:processing result tokens. marker is fd(DONE) token.c:2143:tds_process_end: more_results = 0 was_cancelled = 0 error = 0 done_count_valid = 0 token.c:2159:tds_process_end() state set to TDS_IDLE util.c:119:Changing query state from READING to IDLE util.c:119:Changing query state from IDLE to PENDING ct.c:1121:ct_results() process_result_tokens returned 1 (type 4052) ct.c:1226:ct_results() results state = 0 ct.c:1227:ct_results() command type = 148 ct.c:1228:ct_results() dynamic cmd = 0 ct.c:1064:ct_results() ct.c:1064:ct_results() token.c:514:tds_process_tokens() state is COMPLETED ct.c:1121:ct_results() process_result_tokens returned 2 (type 4052) ct.c:214:setting command state from SENT to READY ct.c:1765:ct_cmd_drop() ct.c:1799:ct_cmd_drop() : command entry found in list ct.c:1804:ct_cmd_drop() : relinking list ct.c:1811:ct_cmd_drop() : relinked list ct.c:3594:ct_options: CS_SET, option = 5025 ct.c:3792: tds_submit_optioncmd will be action(CS_SET) option(25) arg(0) arglen(1) query.c:2577:tds_submit_optioncmd() ct.c:603:ct_cmd_alloc() ct.c:214:setting command state from IDLE to IDLE ct.c:622:ct_cmd_alloc() : allocating command list to head ct.c:644:ct_command() ct.c:214:setting command state from IDLE to IDLE ct.c:214:setting command state from IDLE to IDLE ct.c:214:setting command state from IDLE to READY ct.c:808:ct_send() command_type = 148 util.c:119:Changing query state from IDLE to QUERYING mem.c:519:tds_free_all_results() util.c:119:Changing query state from QUERYING to PENDING net.c:673:Sending packet 0000 01 01 00 18 00 00 00 00-73 65 6c 65 63 74 20 40 |........ select @| 0010 40 76 65 72 73 69 6f 6e- |@version| ct.c:214:setting command state from READY to SENT ct.c:930:ct_send() succeeded ct.c:1064:ct_results() util.c:119:Changing query state from PENDING to READING net.c:446:Received header 0000 04 01 00 dd 00 35 01 00- |.....5..| net.c:542:Received packet 0000 a0 01 00 00 a1 06 00 02-00 21 00 27 ff d1 bd 4d |........ .!.'...M| 0010 69 63 72 6f 73 6f 66 74-20 53 51 4c 20 53 65 72 |icrosoft SQL Ser| 0020 76 65 72 20 32 30 30 35-20 2d 20 39 2e 30 30 2e |ver 2005 - 9.00.| 0030 33 30 35 34 2e 30 30 20-28 49 6e 74 65 6c 20 58 |3054.00 (Intel X| 0040 38 36 29 20 0a 09 4d 61-72 20 32 33 20 32 30 30 |86) ..Ma r 23 200| 0050 37 20 31 36 3a 32 38 3a-35 32 20 0a 09 43 6f 70 |7 16:28: 52 ..Cop| 0060 79 72 69 67 68 74 20 28-63 29 20 31 39 38 38 2d |yright ( c) 1988-| 0070 32 30 30 35 20 4d 69 63-72 6f 73 6f 66 74 20 43 |2005 Mic rosoft C| 0080 6f 72 70 6f 72 61 74 69-6f 6e 0a 09 53 74 61 6e |orporati on..Stan| 0090 64 61 72 64 20 45 64 69-74 69 6f 6e 20 6f 6e 20 |dard Edi tion on | 00a0 57 69 6e 64 6f 77 73 20-4e 54 20 35 2e 32 20 28 |Windows NT 5.2 (| 00b0 42 75 69 6c 64 20 33 37-39 30 3a 20 53 65 72 76 |Build 37 90: Serv| 00c0 69 63 65 20 50 61 63 6b-20 32 29 0a fd 10 00 c1 |ice Pack 2).....| 00d0 00 01 00 00 00 - |.....| token.c:526:processing result tokens. marker is a0(COLNAME) mem.c:519:tds_free_all_results() token.c:526:processing result tokens. marker is a1(COLFMT) token.c:1036:processing result. type = 39(varchar), varint_size 1 util.c:119:Changing query state from READING to PENDING ct.c:1121:ct_results() process_result_tokens returned 1 (type 4049) util.c:119:Changing query state from PENDING to READING token.c:526:processing result tokens. marker is d1(ROW) util.c:119:Changing query state from READING to PENDING ct.c:1121:ct_results() process_result_tokens returned 1 (type 4040) ct.c:2267:ct_describe() ct.c:1858:_ct_get_client_type(type 39, user 2, size 255) ct.c:2288:ct_describe() datafmt->datatype = 0 server type 39 ct.c:1398:ct_bind() datafmt count = 1 column_number = 1 ct.c:1454:ct_fetch() util.c:119:Changing query state from PENDING to READING token.c:526:processing result tokens. marker is d1(ROW) token.c:1863:tds_get_data: column 0, type 39, varint size 1 token.c:1920:processing row. column size is 189 util.c:119:Changing query state from READING to PENDING ct.c:1519:inside ct_fetch()process_row_tokens returned 1 ct.c:1670:_ct_bind_data() ct.c:1677:_ct_bind_data(): column_type: 39 column_len: 189 ct.c:1971:_ct_get_server_type(0) ct.c:1858:_ct_get_client_type(type 39, user 2, size 255) cs.c:351:cs_convert() ct.c:1971:_ct_get_server_type(0) ct.c:1971:_ct_get_server_type(0) cs.c:358:cs_convert() srctype = 47 (189) desttype = 47 (255) cs.c:383:cs_convert() srctype = desttype cs.c:419:cs_convert() desttype = character ct.c:1454:ct_fetch() ct.c:1064:ct_results() util.c:119:Changing query state from PENDING to READING token.c:526:processing result tokens. marker is fd(DONE) token.c:2143:tds_process_end: more_results = 0 was_cancelled = 0 error = 0 done_count_valid = 1 token.c:2159:tds_process_end() state set to TDS_IDLE util.c:119:Changing query state from READING to IDLE token.c:2175: rows_affected = 1 util.c:119:Changing query state from IDLE to PENDING ct.c:1121:ct_results() process_result_tokens returned 1 (type 4052) ct.c:1226:ct_results() results state = 2 ct.c:1227:ct_results() command type = 148 ct.c:1228:ct_results() dynamic cmd = 0 ct.c:1064:ct_results() token.c:514:tds_process_tokens() state is COMPLETED ct.c:1121:ct_results() process_result_tokens returned 2 (type 4052) ct.c:214:setting command state from SENT to READY ct.c:1765:ct_cmd_drop() ct.c:1799:ct_cmd_drop() : command entry found in list ct.c:1804:ct_cmd_drop() : relinking list ct.c:1811:ct_cmd_drop() : relinked list ct.c:603:ct_cmd_alloc() ct.c:214:setting command state from IDLE to IDLE ct.c:622:ct_cmd_alloc() : allocating command list to head ct.c:644:ct_command() ct.c:214:setting command state from IDLE to IDLE ct.c:214:setting command state from IDLE to IDLE ct.c:214:setting command state from IDLE to READY ct.c:808:ct_send() command_type = 148 util.c:119:Changing query state from IDLE to QUERYING mem.c:519:tds_free_all_results() util.c:119:Changing query state from QUERYING to PENDING net.c:673:Sending packet 0000 01 01 00 15 00 00 00 00-0a 43 4f 4d 4d 49 54 20 |........ .COMMIT | 0010 54 52 41 4e 0a - |TRAN.| ct.c:214:setting command state from READY to SENT ct.c:930:ct_send() succeeded ct.c:1064:ct_results() util.c:119:Changing query state from PENDING to READING net.c:446:Received header 0000 04 01 00 7a 00 35 01 00- |...z.5..| net.c:542:Received packet 0000 aa 66 00 3e 0f 00 00 01-10 46 00 54 68 65 20 43 |.f.>.... .F.The C| 0010 4f 4d 4d 49 54 20 54 52-41 4e 53 41 43 54 49 4f |OMMIT TR ANSACTIO| 0020 4e 20 72 65 71 75 65 73-74 20 68 61 73 20 6e 6f |N reques t has no| 0030 20 63 6f 72 72 65 73 70-6f 6e 64 69 6e 67 20 42 | corresp onding B| 0040 45 47 49 4e 20 54 52 41-4e 53 41 43 54 49 4f 4e |EGIN TRA NSACTION| 0050 2e 14 57 4c 2d 53 51 4c-30 31 2d 44 45 56 5c 43 |..WL-SQL 01-DEV\C| 0060 4f 52 50 53 59 53 00 02-00 fd 02 00 d5 00 00 00 |ORPSYS.. ........| 0070 00 00 - |..| token.c:526:processing result tokens. marker is aa(ERROR) token.c:105:tds_process_default_tokens() marker is aa(ERROR) token.c:2439:tds_process_msg() reading message from server read.c:179:tds_get_string: reading 70 from wire to give 70 to client. read.c:179:tds_get_string: reading 20 from wire to give 20 to client. token.c:2501:tds_process_msg() calling client msg handler ct.c:333:ct_con_props() action = CS_GET property = 9108 ct.c:475:fetching userdata 0x96834e8 token.c:2514:tds_process_msg() returning TDS_SUCCEED token.c:526:processing result tokens. marker is fd(DONE) token.c:2143:tds_process_end: more_results = 0 was_cancelled = 0 error = 1 done_count_valid = 0 token.c:2159:tds_process_end() state set to TDS_IDLE util.c:119:Changing query state from READING to IDLE util.c:119:Changing query state from IDLE to PENDING ct.c:1121:ct_results() process_result_tokens returned 1 (type 4052) ct.c:1226:ct_results() results state = 0 ct.c:1227:ct_results() command type = 148 ct.c:1228:ct_results() dynamic cmd = 0 ct.c:1064:ct_results() ct.c:1064:ct_results() token.c:514:tds_process_tokens() state is COMPLETED ct.c:1121:ct_results() process_result_tokens returned 2 (type 4052) ct.c:214:setting command state from SENT to READY ct.c:1765:ct_cmd_drop() ct.c:1799:ct_cmd_drop() : command entry found in list ct.c:1804:ct_cmd_drop() : relinking list ct.c:1811:ct_cmd_drop() : relinked list ct.c:3594:ct_options: CS_SET, option = 5025 ct.c:3792: tds_submit_optioncmd will be action(CS_SET) option(25) arg(0) arglen(1) query.c:2577:tds_submit_optioncmd() ct.c:2888:ct_capability() ct.c:3238:ct_capability returns success, value TRUE ct.c:603:ct_cmd_alloc() ct.c:214:setting command state from IDLE to IDLE ct.c:622:ct_cmd_alloc() : allocating command list to head ct.c:3262:ct_dynamic(717) ct.c:4744:_ct_allocate_dynamic() attaching dynamic command to head ct.c:214:setting command state from IDLE to READY ct.c:808:ct_send() command_type = 160 ct.c:214:setting command state from READY to SENT ct.c:1064:ct_results() token.c:514:tds_process_tokens() state is COMPLETED ct.c:1121:ct_results() process_result_tokens returned 2 (type 4052) ct.c:214:setting command state from SENT to READY ct.c:3262:ct_dynamic(720) ct.c:4769:_ct_locate_dynamic() looking for DBD1 ct.c:4772:_ct_locate_dynamic() matching with DBD1 ct.c:214:setting command state from READY to READY ct.c:808:ct_send() command_type = 160 ct.c:855:ct_send(CS_DESCRIBE_INPUT) ct.c:214:setting command state from READY to SENT ct.c:1064:ct_results() ct.c:2323:ct_res_info() ct.c:2342:ct_res_info(): Number of columns is 0 ct.c:1064:ct_results() ct.c:1064:ct_results() token.c:514:tds_process_tokens() state is COMPLETED ct.c:1121:ct_results() process_result_tokens returned 2 (type 4052) ct.c:214:setting command state from SENT to READY ct.c:3262:ct_dynamic(718) ct.c:4769:_ct_locate_dynamic() looking for DBD1 ct.c:4772:_ct_locate_dynamic() matching with DBD1 ct.c:3303:ct_dynamic() calling param_clear ct.c:214:setting command state from READY to READY ct.c:3322:ct_param() ct.c:3323:ct_param() data addr = 0x96903b8 data length = 4 ct.c:4294: _ct_fill_param() status = 0 ct.c:1971:_ct_get_server_type(0) ct.c:808:ct_send() command_type = 160 ct.c:4207:paraminfoalloc: status = 0, maxlen 0 ct.c:4208:paraminfoalloc: name = , varint size 1 column_type 47 size 4, 4 column_cur_size 4 column_output = 0 ct.c:4047:paramrowalloc, size = 4, offset = 0, row_size = 4 query.c:1573:tds_submit_execute() util.c:119:Changing query state from IDLE to QUERYING mem.c:519:tds_free_all_results() util.c:119:Changing query state from QUERYING to PENDING net.c:673:Sending packet 0000 01 01 00 2f 00 00 00 00-53 45 4c 45 43 54 20 62 |.../.... SELECT b| 0010 61 72 20 46 52 4f 4d 20-64 61 6e 6f 20 57 48 45 |ar FROM dano WHE| 0020 52 45 20 66 6f 6f 20 3d-20 27 6f 69 6e 6b 27 |RE foo = 'oink'| ct.c:214:setting command state from READY to SENT ct.c:1064:ct_results() util.c:119:Changing query state from PENDING to READING net.c:446:Received header 0000 04 01 00 27 00 35 01 00- |...'.5..| net.c:542:Received packet 0000 a0 04 00 03 62 61 72 a1-06 00 0d 00 09 00 26 04 |....bar. ......&.| 0010 d1 04 03 00 00 00 fd 10-00 c1 00 01 00 00 00 |........ .......| token.c:526:processing result tokens. marker is a0(COLNAME) read.c:179:tds_get_string: reading 3 from wire to give 3 to client. mem.c:519:tds_free_all_results() token.c:526:processing result tokens. marker is a1(COLFMT) token.c:1036:processing result. type = 38(integer-null), varint_size 1 util.c:119:Changing query state from READING to PENDING ct.c:1121:ct_results() process_result_tokens returned 1 (type 4049) util.c:119:Changing query state from PENDING to READING token.c:526:processing result tokens. marker is d1(ROW) util.c:119:Changing query state from READING to PENDING ct.c:1121:ct_results() process_result_tokens returned 1 (type 4040) ct.c:2323:ct_res_info() ct.c:2342:ct_res_info(): Number of columns is 1 ct.c:2267:ct_describe() ct.c:1858:_ct_get_client_type(type 38, user 13, size 4) ct.c:2288:ct_describe() datafmt->datatype = 8 server type 38 ct.c:1398:ct_bind() datafmt count = 1 column_number = 1 ct.c:1454:ct_fetch() util.c:119:Changing query state from PENDING to READING token.c:526:processing result tokens. marker is d1(ROW) token.c:1863:tds_get_data: column 0, type 38, varint size 1 token.c:1920:processing row. column size is 4 util.c:119:Changing query state from READING to PENDING ct.c:1519:inside ct_fetch()process_row_tokens returned 1 ct.c:1670:_ct_bind_data() ct.c:1677:_ct_bind_data(): column_type: 38 column_len: 4 ct.c:1971:_ct_get_server_type(8) ct.c:1858:_ct_get_client_type(type 38, user 13, size 4) cs.c:351:cs_convert() ct.c:1971:_ct_get_server_type(8) ct.c:1971:_ct_get_server_type(8) cs.c:358:cs_convert() srctype = 56 (4) desttype = 56 (4) cs.c:383:cs_convert() srctype = desttype ct.c:1454:ct_fetch() ct.c:1064:ct_results() util.c:119:Changing query state from PENDING to READING token.c:526:processing result tokens. marker is fd(DONE) token.c:2143:tds_process_end: more_results = 0 was_cancelled = 0 error = 0 done_count_valid = 1 token.c:2159:tds_process_end() state set to TDS_IDLE util.c:119:Changing query state from READING to IDLE token.c:2175: rows_affected = 1 util.c:119:Changing query state from IDLE to PENDING ct.c:1121:ct_results() process_result_tokens returned 1 (type 4052) ct.c:1226:ct_results() results state = 2 ct.c:1227:ct_results() command type = 160 ct.c:1228:ct_results() dynamic cmd = 718 ct.c:2323:ct_res_info() ct.c:2347:ct_res_info(): Number of rows is 1 ct.c:1064:ct_results() token.c:514:tds_process_tokens() state is COMPLETED ct.c:1121:ct_results() process_result_tokens returned 2 (type 4052) ct.c:214:setting command state from SENT to READY ct.c:2888:ct_capability() ct.c:3238:ct_capability returns success, value TRUE ct.c:1822:ct_close() mem.c:519:tds_free_all_results() util.c:119:Changing query state from IDLE to DEAD ct.c:1834:ct_con_drop() ct.c:1765:ct_cmd_drop()