Woops. Bad math on my side, you look correct. I'll submit it to Ed Mergl
later on.

(I'm to blame for this piece of code).

-alex

On Tue, 25 Dec 2001, KAWAI,Takanori wrote:

> I've found that DBD::Pg not works with binary data.
> It occurs "Unterminated quoted string" with long invisible-character.
> It seems that buffer that dbdimp.c gets in dbd_st_execute
> at line 1034 is too small.
> I change to extend that buffer and it works fine.
> 
> [dbdimp.c(line 1034) : before]
>         int max_len = imp_sth->all_params_len * 4 +
> DBIc_NUM_PARAMS(imp_sth) * 2 + 1;
> [dbdimp.c(line 1034) : after ]
>        int max_len = imp_sth->all_params_len * 5 +
> DBIc_NUM_PARAMS(imp_sth) * 2 + 1;
> 
> [environment]
> -TurboLinux 6.0 Workstation
> -PostgreSQL 7.1.3
> -perl 5.00503
> -DBI 1.02
> -DBD::Pg 1.01
> 
> [test script]
> #!/usr/bin/perl
> use strict;
> use DBI ;
> my $dbh=DBI->connect( 'dbi:Pg:dbname=test', 'scott', 'tiger',
>        {RaiseError=>0, AutoCommit=>1, PrintError=>0} )
>    or die($DBI::errstr);
> my $wk = "\x01" x 20;
> my $sth;
> $dbh->do('DELETE FROM TestTable WHERE key =100');
> $sth=$dbh->prepare( q{INSERT INTO TestTable VALUES(?, ?)} ) ;
> $sth->bind_param( 1,100 ) ;
> $sth->bind_param( 2,$wk,DBI::SQL_BINARY ) ;
> DBI->trace(3, 'trace');
> $sth->execute ;
> DBI->trace(0);
> 
> [trace : before]
>     DBI 1.20-nothread dispatch trace level set to 3
>     -> execute for DBD::Pg::st (DBI::st=HASH(0x8188500)~0x818835c)
> dbd_st_execute
> dbd_st_execute: statement = >INSERT INTO TestTable VALUES(100,
> '\\001\\001\\001\
> \001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\
> 001\
> \00<
>     ERROR EVENT 7 'ERROR:  Unterminated quoted string' on
> DBI::st=HASH(0x818835c
> )
> ERROR:  Unterminated quoted string error 7 recorded: ERROR:  Unterminated
> quoted
>  string
>     !! ERROR: 7 'ERROR:  Unterminated quoted string'
>     <- execute= undef at testpg1.pl line 14
> 
> [trace : after]
>    DBI 1.20-nothread dispatch trace level set to 3
>     -> execute for DBD::Pg::st (DBI::st=HASH(0x8188500)~0x818835c)
> dbd_st_execute
> dbd_st_execute: statement = >INSERT INTO TestTable VALUES(100,
> '\\001\\001\\001\
> \001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\
> 001\
> \001')<
>     <- execute= 1 at testpg1.pl line 14
> 
> Best regards.
> ==============================================
> Kawai, Takanori(Hippo2000)
>    Mail: [EMAIL PROTECTED] [EMAIL PROTECTED]
>    http://member.nifty.ne.jp/hippo2000
> ==============================================
> 
> 

Reply via email to