freetds AT lists.ibiblio.org
Subject: FreeTDS Development Group
List archive
Re: [freetds] Truncation of string values to 80 characters using placeholders and MSSQL
- From: "James K. Lowden" <jklowden AT freetds.org>
- To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
- Subject: Re: [freetds] Truncation of string values to 80 characters using placeholders and MSSQL
- Date: Sun, 8 May 2011 18:48:55 -0400
On Thu, 5 May 2011 14:21:18 +0000 (UTC)
Ed Avis <eda AT waniasset.com> wrote:
> As others have mentioned, the bug appears to be caused in
> src/tds/query.c and can be largely fixed with this patch:
>
> --- freetds-0.91RC2-orig/src/tds/query.c 2011-03-30
> +++ freetds-0.91RC2-patch_truncation/src/tds/query.c 2011-05-05
> @@ -799,7 +799,7 @@
> if (tds_get_column_declaration(tds,
> params->columns[i], \ declaration + strlen(declaration)) == TDS_FAIL)
> goto Cleanup;
> } else {
> - strcat(declaration, "varchar(80)");
> + strcat(declaration, "varchar(4000)");
> }
>
> /* convert it to ucs2 and append */
>
> However, I'm not sure that every server accepts varchar(4000) as a
> column type, and some may allow even larger varchars (so that the
> fixed code is still buggy if the string is longer than 4000 chars).
> I'd be interested in your thoughts on the right way to fix it.
Thanks for the patch. It will help many DBD::Sybase users. I applied
it, along with some minor typographical changes, to CVS HEAD and to the
0.91 release branch.
This is a perfect example of fixing what matters. I personally don't
use parameterized queries and await a real fix ;-) which will involve
passing a parameter descriptor to ct-lib. Meanwhile, your one-liner
solves an immediate problem for any reasonably modern Microsoft
server.
--jkl
-
[freetds] Truncation of string values to 80 characters using placeholders and MSSQL,
Ed Avis, 05/05/2011
-
Re: [freetds] Truncation of string values to 80 characters using placeholders and MSSQL,
Ed Avis, 05/05/2011
- Re: [freetds] Truncation of string values to 80 characters using placeholders and MSSQL, Neuhauser, Roman (GE Capital, consultant), 05/05/2011
- Re: [freetds] Truncation of string values to 80 characters using placeholders and MSSQL, James K. Lowden, 05/08/2011
-
Re: [freetds] Truncation of string values to 80 characters using placeholders and MSSQL,
Ed Avis, 05/05/2011
Archive powered by MHonArc 2.6.24.