[freetds] Connection Pool - Max number of fields in a select query

Shaun Craig s.craig at andronics.com
Thu Oct 6 05:45:20 EDT 2005


Yep.  I don't use the pool myself, but it looks like you need to change
"max pool conn" in pool.conf.  

$ grep MAX_POOL_CONN include/* src/*/*.c
src/pool/config.c:#define POOL_STR_MAX_POOL_CONN        "max pool conn"
src/pool/config.c:      } else if (!strcmp(option,
POOL_STR_MAX_POOL_CONN)) {
src/pool/member.c:      fprintf(stderr, "No idle members left, increase
MAX_POOL_CONN\n");

$ grep pool.conf include/* src/*/*.c
include/tds_configs.h:#define FREETDS_POOLCONFFILE FREETDS_SYSCONFDIR
TDS_SDIR_SEPARATOR "pool.conf"

--jkl



I've tried uping my max pool connections but the query still fails, I've 
looked at the data going through the pool and noticed something.

0000  01 01 01 fa 00 00 00 00 53 45 4c 45 43 54 20 56   |........SELECT....|
0010  65 68 69 63 6c 65 73 2e 56 65 68 69 63 6c 65 49   |...stuff here....|
0020  44 2c 20 56 65 68 69 63 6c 65 73 2e 43 75 73 74   |...stuff here....|
0030  6f 6d 65 72 49 44 2c 20 4c 61 74 69 74 75 64 65   |...stuff here....|
0040  2c 20 4c 6f 6e 67 69 74 75 64 65 2c 20 4e 53 45   |...stuff here....|
0050  57 2c 20 4f 64 6f 6d 65 74 65 72 2c 20 43 61 6c   |...stuff here....|
0060  6c 53 69 67 6e 2c 20 45 6d 61 69 6c 2c 20 53 4d   |...stuff here....|
0070  53 45 6d 61 69 6c 2c 20 44 54 2c 20 53 74 6f 70   |...stuff here....|
0080  70 65 64 52 65 70 6f 72 74 54 69 6d 65 2c 20 55   |...stuff here....|
0090  73 65 64 49 6e 44 65 6d 6f 2c 20 43 75 73 74 6f   |...stuff here....|
00a0  6d 65 72 2e 54 69 6d 65 5a 6f 6e 65 49 44 2c 20   |...stuff here.... |
00b0  56 65 68 69 63 6c 65 73 2e 52 65 70 6f 72 74 49   |...stuff here....|
00c0  6e 74 65 72 76 61 6c 2c 20 43 75 73 74 6f 6d 65   |...stuff here....|
00d0  72 2e 4e 61 6d 65 2c 20 43 75 73 74 6f 6d 65 72   |...stuff here....|
00e0  2e 4a 6f 75 72 6e 65 79 54 79 70 65 2c 20 56 65   |...stuff here....|
00f0  68 69 63 6c 65 73 2e 53 68 6f 77 4a 6f 75 72 6e   |...stuff here....|
0100  65 79 54 79 70 65 20 46 52 4f 4d 20 56 65 68 69   |...stuff here....|
0110  63 6c 65 53 74 61 74 75 73 2c 20 56 65 68 69 63   |...stuff here....|
0120  6c 65 73 2c 20 4d 6f 64 65 6d 2c 20 43 75 73 74   |...stuff here....|
0130  6f 6d 65 72 20 57 48 45 52 45 20 56 65 68 69 63   |...stuff here....|
0140  6c 65 73 2e 56 65 68 69 63 6c 65 49 44 20 3d 20   |...stuff here.... |
0150  56 65 68 69 63 6c 65 53 74 61 74 75 73 2e 56 65   |...stuff here....|
0160  68 69 63 6c 65 49 44 20 41 4e 44 20 56 65 68 69   |...stuff here....|
0170  63 6c 65 73 2e 43 75 73 74 6f 6d 65 72 49 44 20   |...stuff here.... |
0180  3d 20 43 75 73 74 6f 6d 65 72 2e 43 75 73 74 6f   |...stuff here....|
0190  6d 65 72 49 44 20 41 4e 44 20 28 4d 6f 64 65 6d   |...stuff here....|
01a0  31 49 44 20 3d 20 4d 6f 64 65 6d 49 44 20 4f 52   |...stuff here....|
01b0  20 4d 6f 64 65 6d 32 49 44 20 3d 20 4d 6f 64 65   | ...stuff here....|
01c0  6d 49 44 20 4f 52 20 4d 6f 64 65 6d 33 49 44 20   |...stuff here.... |
01d0  3d 20 4d 6f 64 65 6d 49 44 29 20 41 4e 44 20 41   |...stuff here....|
01e0  64 64 72 65 73 73 20 3d 20 27 33 35 30 33 38 39   |..stuff = '350389|
*01f0*  38 33 34 36 34 33 39 38 36 27                     |834643986'|

A query will run ok as long as it fits inside the line *01f0*, but if I 
increase the fields and past this line it starts another part from 0000 
again and the query fails at dbsqlexec(dbconn), below is an example of 
what I mean.

0000  01 01 01 fa 00 00 00 00 53 45 4c 45 43 54 20 56   |........SELECT....|
0010  65 68 69 63 6c 65 73 2e 56 65 68 69 63 6c 65 49   |...stuff here....|
etc..........
01e0  44 20 3d 20 4d 6f 64 65 6d 49 44 29 20 41 4e 44   |...stuff here....|
*01f0*  20 41 64 64 72 65 73 73 20 3d 20 27 33 35 30 33   |...stuff = '3503|

*0000*  01 01 00 14 00 00 00 00 38 39 38 33 34 36 34 33   |........89834643|
0010  39 38 36 27                                       |986'|

No open connections left, opening member number 1
deassigning user from member 1

I know believe its the size of the query the connection pool cant 
handle, uping the connections doesnt matter as the query still fails.  
I've looked at changing a few things in freetds.conf but havn't had any 
success.  There must be a size set somewhere in the connection pool code 
setting a max size of 01f0 (496).  I could be wrong but there's 
something fishy if the query can pass through tsql ok and not the pool.

Shaun.

-------------- next part --------------
An embedded message was scrubbed...
From: Shaun Craig <s.craig at andronics.com>
Subject: Connection Pool - Max number of fields in a select query
Date: Wed, 05 Oct 2005 16:29:13 +0100
Size: 1104
Url: http://lists.ibiblio.org/pipermail/freetds/attachments/20051006/e3499ba5/ConnectionPool-Maxnumberoffieldsinaselectquery.eml


More information about the FreeTDS mailing list