[freetds] Empty VARCHAR parameters converted to NULL

Joshua Lang joshua.h.lang at gmail.com
Tue Jan 19 13:25:04 EST 2016


I've read that older versions didn't even support passing 0-length data
(prior to TDS 7.0 I believe). If this could be supported for later versions
of TDS 7.0, that would be great.

Thanks.

On Tue, Jan 19, 2016 at 2:52 AM, Frediano Ziglio <freddy77 at gmail.com> wrote:

> 2016-01-16 1:41 GMT+00:00 Joshua Lang <joshua.h.lang at gmail.com>:
> > In the latest version of FreeTDS-dblib (0.95.79) I'm passing rpc VARCHAR
> > parameters of 0 length, but non-NULL (empty strings). FreeTDS seems to
> turn
> > these into NULL values before passing them on to SQL Server. From what
> I've
> > read, it seems as if older databases didn't support passing empty
> strings,
> > but newer ones do? (i.e. TDS 7.0+ do support empty strings).
> >
> > It seems as this is a known issue, but I was wondering if it is possible
> to
> > fix it for the newer versions of SQL server? E.g. in dbrpcparam()
> passing a
> > non-NULL pointer to the 'value' parameter and a 0 to 'datalen' would
> > indicate an empty string is desired if possible.
> >
> > Thoughts?
>
>
> The main problem is not libTDS (the code library) but dbrpcparam
> specification.
> datalen < 0 is invalid for variable fields (like VARCHAR) and 0 is used
> for NULL
> value (no matter the data pointer). But looks like your suggestion
> (not NULL value
> and 0 datalen) could be a good choice.
> Not sure however if this could work with all types and server versions
> (for instance
> 0 size TEXT).
> We can do it but I'm not thinking about backporting it to 0.95.
>
> Frediano
> _______________________________________________
> FreeTDS mailing list
> FreeTDS at lists.ibiblio.org
> http://lists.ibiblio.org/mailman/listinfo/freetds
>


More information about the FreeTDS mailing list