Skip to Content.
Sympa Menu

freetds - RE: dbdata() call inconsistent...

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: "Brian Bruns" <camber AT ais.org>
  • To: freetds AT franklin.oit.unc.edu
  • Subject: RE: dbdata() call inconsistent...
  • Date: Wed, 11 Sep 2002 10:14:16 -0400


> >
> > Ok, let's test this theory. If you did something like:
> >
> > DBINT i;
> >
> > memcpy(&i, dbdata(dbproc, 2), sizeof(i));
> >
> > and then use 'i' instead of dbdata() directly does the
> > problem go away?
> >
> > The information in the row buffer *should* be 4 byte aligned,
> > I remember
> > at least one alignment patch in the 0.60 series, so it'd be
> > worth a try.
> > If not it's definately a bug on our part.
> >
>
> Arghh...
>
> in token.c
>
> if (IS_TDS42(tds)) {
> remainder = info->row_size % align;
> if (remainder)
> info->row_size += (align - remainder);
> }
>
> Why IS_TDS42 ??
>
> freddy77

That is an excellent question. Unfortunately I don't know. It's in
tds_col_info which is a TDS 4.2 only function, so the protocol check is
worthless. The problem lies in tds7_process_result() probably:

/* actually this 4 should be a machine dependent #define
*/
remainder = info->row_size % 4;
if (remainder) info->row_size += (4 - remainder);

If we definately knew TDS 4.2 was working it'd help locating the problem.

Brian




Archive powered by MHonArc 2.6.24.

Top of Page