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()
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.