Skip to Content.
Sympa Menu

freetds - Re: [freetds] [PATCH] to improve DBD::Sybase 'make test' when using freetds

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Frediano Ziglio <freddy77 AT gmail.com>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] [PATCH] to improve DBD::Sybase 'make test' when using freetds
  • Date: Tue, 13 Apr 2010 15:41:35 +0200

2010/4/11 David Dick <ddick AT cpan.org>:
> This patch redirects some logging statements from stderr to the tdsdump file
> and tries to improve the results of running 'make test' from DBD::Sybase
> when using the freetds libraries.  It allows every DBD::Sybase test to pass
> except for t/xblob.t.
>

Well... patch left after some commits




diff -Naur old/locales.conf new/locales.conf
--- old/locales.conf 2008-02-29 09:30:19.000000000 +1100
+++ new/locales.conf 2010-04-11 20:22:08.000000000 +1000
@@ -1,5 +1,5 @@
[default]
- date format = %b %e %Y %I:%M:%S:%z%p
+ date format = %b %e %Y %I:%M

[en_US]
date format = %b %e %Y %I:%M:%S:%z%p



So default english...



diff -Naur old/src/ctlib/cs.c new/src/ctlib/cs.c
--- old/src/ctlib/cs.c 2007-12-24 08:12:02.000000000 +1100
+++ new/src/ctlib/cs.c 2010-04-11 20:22:08.000000000 +1000
@@ -471,7 +471,14 @@
src_type, src_len, desttype, destlen);

if (!is_fixed_type(desttype) && (destlen <= 0)) {
- return CS_FAIL;
+ destlen = srcfmt ? srcfmt->maxlength : 0;
+ if (destlen <= 0) {
+ tdsdump_log(TDS_DBG_FUNC, "cs_convert() could not
determine the
maxlength for the destination field\n");
+ return CS_FAIL;
+ }
+ }
+ if ((is_numeric_type(src_type)) && (desttype == SYBCHAR)) {
+ destlen += 1; /* maxlength does not take into account the
decimal
point in the resulting string */
}

dest = (unsigned char *) destdata;




not tested.... documentation does not state anything on the subject....




diff -Naur old/src/tds/convert.c new/src/tds/convert.c
--- old/src/tds/convert.c 2008-02-04 18:55:39.000000000 +1100
+++ new/src/tds/convert.c 2010-04-11 20:22:08.000000000 +1000
@@ -2070,6 +2070,7 @@
old_digits_left = digits_left;
digits_left = cr->n.scale;
places = 1;
+ } else if (*pstr == 0) {
} else if (*pstr == ' ') {
for (; pstr != pend && *pstr == ' '; ++pstr) ; /*
skip contiguous blanks */
if (pstr == pend)



this is quite strange and should cause a syntax error (conversion
fail) if a NUL character is found in the string.... Am I right ?
I though this was handled and tested by some of our tests but
according to coverage
(http://freetds.sourceforge.net/up/out83/coverage/tds/convert.c.gcov.html)
it isn't.... I would check other libraries... or perhaps we could
"fix" only CTLib.

freddy77




Archive powered by MHonArc 2.6.24.

Top of Page