Skip to Content.
Sympa Menu

freetds - Re: [freetds] FreeTDS restrictions on query size?

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Frediano Ziglio <freddy77 AT gmail.com>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] FreeTDS restrictions on query size?
  • Date: Tue, 20 Jul 2010 19:22:57 +0200

Il giorno mar, 20/07/2010 alle 08.58 -0400, Jason Maur ha scritto:
> > Il giorno lun, 19/07/2010 alle 08.34 -0400, Jason Maur ha scritto:
> > > Hi all,
> > >
> > > I compiled "freetds-0.83.dev.20100706" from source with the following
> > > ./configure command:
> > >
> > > ./configure --prefix=/usr/local/freetds --with-tdsver=8.0
> > > --enable-msdblib --enable-dbmfix --with-
> > gnu-ld --with-gnutls --libdir=/usr/local/freetds/lib
> > >
> > > Most queries run successfully, but at least 2 don't. Here are the
> > > errors I get when running them
> > with tsql:
> > >
> > > Msg 20004, Level 9, State -1, Server OpenClient, Line -1
> > > Read from the server failed
> > >
> > > and
> > >
> > > Msg 20006, Level 9, State -1, Server OpenClient, Line -1
> > > Write to the server failed
> > > tds_submit_query() failed
> > >
> >
> > the server probably found an error in the protocol. There should be no
> > limit, tsql issue only language queries (that is simple text).
> >
> > Please send a tdsdump.
> >
> > freddy77
>
> I've attached a tdsdump of the query failing. This gives me a "Write to the
> server failed" error. I checked it out, and I thought lines 60 - 315 were
> interesting because they look like they should hold the entire query, but
> the end is truncated.
>
> So, I reduced the size of the query to "fit" in that region of the tdsdump.
> The result? I then got a "Read from the server failed." Then I tried to
> simplify the query by taking out all calls to "RIGHT()", "CONVERT()" and
> "CASE...", and the query worked!
>
> To confirm the length problem, I then re-expanded my query--leaving the
> RIGHT, CONVERT, and CASE calls out--and I received the original write to
> server error.
>
> So I'm having 2 issues: 1) if the query is too long, I get the write to
> server error. 2) if the query is short enough but has some, err,
> complexities, then I get a read error.
>
> I also have a separate query that had a read error to begin with. After
> taking out calls to "RIGHT" and "CONVERT", the query works no problem.
>
> -Jason

I think the problem is in gnutls (or a strange combination of our code
and specific versions). I tried with my machine and it works correctly
(binary_test send and receive about 130 kb in a row). You can note in
the dump that gnutls send 4357 bytes for a 4096 TDS packet. My version
send 4117 bytes (that is 4096 + 5 for tls header + 16 for padding).

My gnutls version is 2.8.3 (ubuntu 9.04), you could try to update gnutls
or use openssl (see license notes in our user-guide)

freddy77






Archive powered by MHonArc 2.6.24.

Top of Page