Skip to Content.
Sympa Menu

freetds - Re: [freetds] Question about max size of a dbrpcparam

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: "Navdeep Shergill" <jatshergill AT gmail.com>
  • To: "FreeTDS Development Group" <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] Question about max size of a dbrpcparam
  • Date: Wed, 8 Oct 2008 23:15:00 -0700

I tried with v0.82 and the same problem exists. I traced through the code
and naturally it is spending a lot of time in this function:

write.c -> tds_put_n(TDSSOCKET * tds, const void *buf, int n)

n = 40841216

The block size is 512; so it seems to be putting 512 bytes on the socket at
a time. I'm wondering if that is the problem; since doing 512 bytes at a
time of a 40mb file takes a while. One thing to note is that during the 'big
for loop' thats in that tds_put_n function; the TDSSOCKET->STATE changes to
TDS_DEAD. Dont know why.

The log file itself is about 200mb; so I really dont have a way to send that
but here is the last few entries in there

================================================================

<<Navdeep -> many more net.c779 sending packet>>
<<Navdeep -> last Packet >>

net.c:779:Sending packet
0000 03 00 02 00 00 00 01 00-00 00 00 00 00 00 00 00 |........ ........|
0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0060 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0080 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0090 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
00a0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
00b0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
00c0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
00d0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
00e0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
00f0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0100 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0110 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0120 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0130 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0140 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0150 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0160 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0180 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
0190 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
01a0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
01b0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
01c0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
01d0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
01e0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|
01f0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 |........ ........|

util.c:110:logic error: cannot change query state from DEAD to PENDING
rpc.c:304:returning FAIL: tds_submit_rpc() failed
dblib.c:3093:dbcancel(013AD618)
dblib.c:7782:dbperror(013AD618, 20047, 0)
dblib.c:7835:20047: "DBPROCESS is dead or not enabled"
dblib.c:4747:dbdead(013AD618) [dead]
====================================================================

On Wed, Oct 8, 2008 at 3:15 PM, James K. Lowden <jklowden AT freetds.org>wrote:

> Navdeep Shergill wrote:
> > I am using v0.64RC2 of FreeTDS. I am trying to call a stored proc on
> > SQL2005 server that takes in a image parameter. Here is my logic..
> >
> > dbrpcparam(ldbproc,"@id",0,SYBCHAR,-1,strID.length(),idB);
> > dbrpcparam(ldbproc, "@table"
> > ,0,SYBCHAR,-1,strTable.length(),focusB);
> > dbrpcparam(ldbproc, "@name"
> > ,0,SYBCHAR,-1,strFileName.length(),nameB);
> > dbrpcparam(ldbproc, "@title"
> > ,0,SYBCHAR,-1,strTitle.length(),titleB);
> > dbrpcparam(ldbproc, "@update"
> > ,0,SYBCHAR,-1,updateFlag.length(),updateB);
> > dbrpcparam(ldbproc,"@content"
> > ,0,SYBIMAGE,-1,numbytes,(BYTE*)memArea);
> > dbrpcsend(ldbproc)
> >
> >
> > The image type is being fed with a byte pointer that holds the contents
> > of a file. This thing works file as long as the file is of a smaller
> > size. I have tried up to 30mb and it works fine. The problem happens
> > when I try to pass in files larger than 35mb+.
>
> It is quite difficult for me to test this because my test server is on the
> other end of a DSL line. And you're using a pre-release version of an old
> release....
>
> If you can confirm the problem still exists in 0.82, post a log file (it
> will be big!) where I can download it. We'll see what can be done from
> there.
>
> HTH.
>
> --jkl
> _______________________________________________
> FreeTDS mailing list
> FreeTDS AT lists.ibiblio.org
> http://lists.ibiblio.org/mailman/listinfo/freetds
>




Archive powered by MHonArc 2.6.24.

Top of Page