Skip to Content.
Sympa Menu

freetds - Re: How to read Strings bigger than 255 chars

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Michael Peppler <mpeppler AT peppler.org>
  • To: "TDS Development Group" <freetds AT franklin.oit.unc.edu>
  • Subject: Re: How to read Strings bigger than 255 chars
  • Date: Mon, 4 Jun 2001 15:59:06 -0700 (PDT)


Brian Bruns writes:
>
> >From what I'm seeing, MS is, by default under TDS 7.0, actually sending
> the entire text clob all in one go. So technically they are sticking to
> the protocol. It just makes the maxlength value useless for preallocating
> memory!

What?!?!

Don't they honour the default TEXTSIZE value?

(oh, and of course they don't allow setting CS_OPT_foo via
ct_options() either, so you have to execute it as a language statement
for that connection)

> If freetds were to allow a "set textsize" to be executed automatically on
> connect, ct_describe would return a sane value and everyone should be
> happy.

Yes, I guess so.

Michael


> On Mon, 4 Jun 2001, Michael Peppler wrote:
>
> > Brian Bruns writes:
> > > Hmmm... this is a case where DBD::Sybase is dealing with some
> > assumptions
> > > which MS went and changed. Is the proper place to deal with this your
> > > code or mine? I'm inclined to make a new config file option "default
> > text
> > > size" and allow users to set it in the freetds.conf file. Whaddya
> > think?
> >
> > Well - I am just using the data as returned by Client Library
> > (ct_describe() in this case) and using datafmt.maxlength to effect the
> > bind.
> >
> > By default Sybase will limit this to 32k (although you can set
> > TEXTSIZE to alter that behaviour). If MS returns 2GB for this value,
> > but still limits the amount of *data* that it returns to the default
> > (or set) TEXTSIZE value then I'd say that it's a bug in MS's
> > implementation of the protocol...
> >
> > I need to use some value here to allocate a large enough buffer for
> > the ct_bind() call, so just using some default value will not work
> > (unless the actual data fetch never exceeds that value)
> >
> > An upcoming version of DBD::Sybase will have access to ct_get_data()
> > and ct_send_data() to allow direct read/write of TEXT/IMAGE columns
> > (and to allow read/write in blocks rather than sending the whole thing
> > in one go).
> >
> > Michael
> >
> >
> > > On Mon, 4 Jun 2001, Michael Peppler wrote:
> > >
> > > > Darryl Friesen writes:
> > > > > >> Eric, if you issue the query "set textsize 10000" prior to
> > selecting
> > > > > >> the text column does that also fix the problem?
> > > > > >
> > > > > > Yes it does! If I just do:
> > > > >
> > > > > Hmm. Doesn't work for me here. I still get a
> > > > >
> > > > > Out of memory during "large" request for -2147479552 bytes
> > > > >
> > > > > in my Perl script (which uses DBD::Sybase)
> > > >
> > > > I seem to recognize this one... I think MS returns the maximum
> > > > possible size of the object, instead of the actual size, and I use
> > the
> > > > size value to allocate memory for the object in ct_bind() (which of
> > > > course fails in your case).
> > > >
> > > > Michael
> > > >
> > >
> > >
> > > ---
> > > You are currently subscribed to freetds as: [mpeppler AT peppler.org]
> > > To unsubscribe, forward this message to $subst('Email.Unsub')
> >
> >
>
>
> ---
> You are currently subscribed to freetds as: [mpeppler AT peppler.org]
> To unsubscribe, forward this message to $subst('Email.Unsub')

--
Michael Peppler - Data Migrations Inc. - mpeppler AT peppler.org
http://www.mbay.net/~mpeppler - mpeppler AT mbay.net
International Sybase User Group - http://www.isug.com
Sybase on Linux mailing list: ase-linux-list AT isug.com




Archive powered by MHonArc 2.6.24.

Top of Page