Thank you very much Jonathan for that tremendous amount of help.  I'll have to 
digest what you've said, but it sounds like I need a newer DBD::Informix and 
possibly a newer CSDK.

I got the same failure on my system with the missing ifx_var_freevar during the 
'make test'.

>From what you said, I would need to install a new DBD::Informix (newer than 
>2005.02, probably 2008.0229), and CSDK at least 2.90.xC4.

That is, I would need these fixes in order to solve the table copying the way I 
showed you using the prepare and execute loop.  However I might be able to find 
a better way to copy the tables that curcumvents this problem.  On the other 
hand, the bug would still be there and could affect other operations that read 
those varchar columns.

-Will


        -----Original Message-----
        From: Jonathan Leffler [mailto:[EMAIL PROTECTED]
        Sent: Friday 04 April 2008 16:01
        To: Rutherdale, Will
        Cc: DBI Users Mailing List
        Subject: Re: Blank inserted with varchar copy using prepare




        On Fri, Apr 4, 2008 at 12:03 PM, Rutherdale, Will <[EMAIL PROTECTED]> 
wrote:


                I confirmed the problem occurs on another machine I was 
wondering about.

                I tried installing the latest DBI and DBD::Informix.  DBI was 
okay, but
                DBD::Informix started out giving me the following warnings on 
'perl
                Makefile.PL':

                ----
                Using INFORMIX-ESQL Version 9.21.UC1 from /usr/informix
                Please upgrade to a more recent version of ClientSDK.
                DBD::Informix will probably work, but that is not guaranteed.
                Note that bug RT#13708 (IBM CQ bug idsdb00139040) may affect 
you.
                In particular, if test t/t931varchar.t detects problems, 
consider an
                upgrade to CSDK 3.00 or later - it seems to be fixed there.
                ----



        ESQL/C 9.21 was released as part of CSDK 2.30 in May 1999.  I suppose 
it is sad to make software retire before its tenth birthday, but in this case, 
it is somewhat past time.



                That sounds like it could be related to my problem.  Do you 
think I
                could report to management where I work that this known bug 
might be
                causing the problem, and that CSDK 3.00 is recommended?



        That problem - RT#13708 - is to do with LVARCHAR and not VARCHAR.

        Well, I tried to install CSDK 2.30 on my Solaris 10 machine.  The 
install worked; the software didn't.  The network connections wouldn't work 
(that appears to be a generic problem for my machine - on later testing; 
probably needs a reboot), but the stream connections did.  The compilation of 
DBD::Informix 2008.0229 went fine, but the test failed horribly because it 
couldn't find a symbol ifx_var_freevar().

        Dropping back to DBD::Informix 2003.04, the compilation worked and 
tests ran mostly OK (IUS tests were dubious, but VARCHAR isn't an IUS feature).

        Using the previously generated test script, I got erroneous output from 
the VARCHAR data.  So, the problem could be in CSDK 2.30 or in DBD::Informix 
2003.04.  Checking with a more recent CSDK (3.00.UC2), it appears that 
DBD::Informix 2003.04 was not handling VARCHAR properly; it introduces the 
blanks.  So, between that version and 2008.0229, I fixed the problem, somehow.

        Looking at the ChangeLog, I find:

        2005-07-28: Logged bug B173776 against ESQL/C - SQL DESCRIPTORS 
mishandle
                    zero-length non-null VARCHAR values.  This prevents a 
solution
                    to a problem report from Vàclav Ovsík <[EMAIL PROTECTED]>.

        This would probably be the issue - you'd need a version of 
DBD::Informix later than 2005.02 and a version of CSDK released after that.  
The relevant database reports that the bug was fixed in CSDK 2.90.xC4 - so you 
need a version of CSDK at least that recent.




                I also happened to fail in 'make test' on DBD::Informix, but 
I'll have
                to get back to you later on that.



        If the trouble is 'ifx_var_freevar()', then that is a (now) known and 
'will not be fixed' problem.  CSDK 2.30 (ESQL/C 9.21) is officially unsupported 
by DBD::Informix.

        --
        Jonathan Leffler <[EMAIL PROTECTED]> #include <disclaimer.h>
        Guardian of DBD::Informix - v2008.0229 - http://dbi.perl.org
        "Blessed are we who can laugh at ourselves, for we shall never cease to 
be amused."





     - - - - - Appended by Scientific Atlanta, a Cisco company - - - - - 
This e-mail and any attachments may contain information which is confidential,
proprietary, privileged or otherwise protected by law. The information is solely
intended for the named addressee (or a person responsible for delivering it to
the addressee). If you are not the intended recipient of this message, you are
not authorized to read, print, retain, copy or disseminate this message or any
part of it. If you have received this e-mail in error, please notify the sender
immediately by return e-mail and delete it from your computer.

Reply via email to