Skip to Content.
Sympa Menu

freetds - Re: [freetds] Server - Problems with TDS 4.2 COLFMT token

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: "James K. Lowden" <jklowden AT schemamania.org>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] Server - Problems with TDS 4.2 COLFMT token
  • Date: Fri, 14 May 2004 18:10:23 -0400

On Fri, 14 May 2004, Steve Kirkendall <skirkendall AT dsl-only.net> wrote:
> "James K. Lowden" <jklowden AT schemamania.org> wrote on Friday, May 14,
> 2004:
> >
> > OK, first you send 0xA0, from which the client derives the number of
> > columns. That looks fine, and, you're right, the information is not
> > repeated in the next packet.
>
> Got it! There's a bug in src/server/server.c:tds_send_col_name()
> -- it's sending the NUL byte at the end of each column name. On
> the receiving end, tds_process_col_name() reads a 1-byte length,
> and then the characters of the name itself but not the NUL. Then,
> in the next loop iteration, it misinterprets the NUL character
> as a 0 length byte. Consequently, it ends up thinking there are
> twice as many columns as there really are.

Excellent! Chalk up one for the good guys.

> But it *is* wrong.

I have to wonder how it ever worked.

> I hope to get my altered versions of the server functions cleaned
> up and submitted this weekend. That's kind of important, because
> my available time for this tiny server project has just about ended.

I guess "tiny" refers to the server? ;-)

> > col name type size varies
> > ------ ------------------ -------- ------ ------
...
> > - 14 MINIMUM_SCALE smallint 2 1
> > - 15 MAXIMUM_SCALE smallint 2 1
> > - 16 SQL_DATA_TYPE smallint 2 0
> > - 17 SQL_DATETIME_SUB smallint 2 1
> > - 18 NUM_PREC_RADIX int 4 1
> > - 19 INTERVAL_PRECISION smallint 2 1
> > - 20 USERTYPE smallint 2 1
>
> Do you know what SQL_DATETIME_SUB and INTERVAL_PRECISION
> should be? I've had some trouble getting TIMESTAMP data types to
> display correctly, and they sound like they might be relevant.

I'm not sure how to answer those questions.

http://www.schemamania.org/projects/freetds/build/sp_datatype_info.dump

That's the log of my query. Tell me if you need more.

This is quite a cool thing you're doing. Some years ago, when OLE was
hot, I wrote an OleDB server: it offered library output as "tables" via
Microsoft's OleDB libraries and classes. (Advise: don't bother.) This
idea of yours is much more flexible. In theory, there could be a server
framework that, with a few well-defined callbacks, could make any data
store acccessible via TDS. Many possibilities fall out of that.

--jkl




Archive powered by MHonArc 2.6.24.

Top of Page