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/