DBI-1.623, DBD::Pg-2.19.3, bind_param ()

"H.Merijn Brand" <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.sybase.devel
Message-ID <[email protected]>
Before I file an RT ticket, I want to verify that I didn't miss the obvious …

When I use bind_param on a char (4) field in DBD::Pg, it only loads the
first character:
--8<---
use 5.016;
use warnings;

use DBI;
use Data::Peek;

my $dbh = DBI->connect ("dbi:Pg:", undef, undef, {
    PrintError		=> 1,
    RaiseError		=> 1,
    AutoCommit		=> 1,
    ShowErrorStatement	=> 1,
    }) or die "Connection failed";

my $tt = "testbind";

$dbh->do ("drop table if exists $tt");

$dbh->do ("create table $tt (c_test int4, test char (4))");

my $sts = $dbh->prepare ("select * from $tt");
   $sts->execute;
my @stt = @{$sts->{TYPE}};

DDumper {
    type => $sts->{TYPE},
    tpnm => [ map { $dbh->type_info ($_)->{TYPE_NAME} } @{$sts->{TYPE}} ],
    name => $sts->{NAME_lc},
    size => $sts->{PRECISION},
    };

my $sti = $dbh->prepare ("insert into $tt values (?, ?)");
   $sti->bind_param ($_ + 1, undef, $stt[$_]) for 0 .. $#stt;

$sti->execute (0, "0301");

$sts->execute;
while (my $row = $sts->fetch) {
    DDumper $row;
    }

$dbh->do ("drop table $tt");
-->8---

=>

{   name             => [
        'c_test',
        'test'
        ],
    size             => [
        4,
        8
        ],
    tpnm             => [
        'int4',
        'bpchar'
        ],
    type             => [
        4,
        1
        ]
    }
[   0,
    '0   '
    ]

The field attributes for c_test:

{   LINK             => undef,
    NAME             => 'c_test',
    NAME_lc          => 'c_test',
    NAME_uc          => 'C_TEST',
    NULLABLE         => 1,
    PRECISION        => 4,
    SCALE            => undef,
    TYPE             => 4,
    TYPE_NAME        => 'int4',
    dbd_type         => 'int4',
    pg_async         => undef,
    pg_bound         => undef,
    pg_cmd_status    => undef,
    pg_current_row   => undef,
    pg_direct        => undef,
    pg_numbound      => undef,
    pg_oid_status    => undef,
    pg_placeholder_dollaronly => undef,
    pg_prepare_name  => undef,
    pg_prepare_now   => undef,
    pg_segments      => 'select * from testbind where 0 = 1',
    pg_server_prepare => undef,
    pg_size          => 4,
    pg_type          => 'int4'
    }

the field attributes for test:

{   LINK             => undef,
    NAME             => 'test',
    NAME_lc          => 'test',
    NAME_uc          => 'TEST',
    NULLABLE         => 1,
    PRECISION        => 4,
    SCALE            => undef,
    TYPE             => 1,
    TYPE_NAME        => 'bpchar',
    dbd_type         => 'bpchar',
    pg_async         => undef,
    pg_bound         => undef,
    pg_cmd_status    => undef,
    pg_current_row   => undef,
    pg_direct        => undef,
    pg_numbound      => undef,
    pg_oid_status    => undef,
    pg_placeholder_dollaronly => undef,
    pg_prepare_name  => undef,
    pg_prepare_now   => undef,
    pg_segments      => undef,
    pg_server_prepare => undef,
    pg_size          => -1,
    pg_type          => 'bpchar'
    }

-- 
H.Merijn Brand  http://tux.nl   Perl Monger  http://amsterdam.pm.org/
using perl5.00307 .. 5.17   porting perl5 on HP-UX, AIX, and openSUSE
http://mirrors.develooper.com/hpux/        http://www.test-smoke.org/
http://qa.perl.org   http://www.goldmark.org/jeff/stupid-disclaimers/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.