Skip to Content.
Sympa Menu

freetds - Re: [freetds] bp with empty char/varchar column broken

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: "Craig A. Berry" <craigberry AT mac.com>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] bp with empty char/varchar column broken
  • Date: Fri, 21 Nov 2014 09:43:43 -0600


> On Nov 21, 2014, at 5:58 AM, Frediano Ziglio <freddy77 AT gmail.com> wrote:
>
> 2014-11-20 19:53 GMT+00:00 Craig A. Berry <craigberry AT mac.com>:
>> The following worked in 0.91 but is broken as of branch-0_92-839-gd788046.
>> If we bulk out a table with an empty (but not NULL) char or varchar
>> column that is less than 256 bytes long, 256 spaces get written to the
>> output file for that column. Which then causes an overflow error if you
>> try to bulk it back in.
>

> Quite strange. Why does it happen only for empty strings? Should even
> happen with small ones. The function has to pad or not based on type.

The actual length of the string received on the wire is passed as the source
length to dbconvert, and dbconvert (usually) uses that as its return value,
and that return value is passed to fwrite for moving data to the file.

But if the source length is zero, dbconvert uses the destination length as
its return value as long as the destination length is greater than zero.
Since it's now always 256, we get 256 spaces.

> Actually is not clear to me what an empty column should look like in
> the text bcp file.

I'm pretty sure a zero-length column in a bcp file indicates NULL, and one or
more spaces indicates empty string and will be trimmed on bulk in.

________________________________________
Craig A. Berry
mailto:craigberry AT mac.com

"... getting out of a sonnet is much more
difficult than getting in."
Brad Leithauser





Archive powered by MHonArc 2.6.24.

Top of Page