Author: theory
Date: Mon Nov 22 20:57:51 2010
New Revision: 14548
Modified:
DBD-Pg/trunk/Changes
DBD-Pg/trunk/t/06bytea.t
Log:
Fix hexidecimal bytea tests.
They need to actually compare to hexidecimal strings.
Modified: DBD-Pg/trunk/Changes
==============================================================================
--- DBD-Pg/trunk/Changes (original)
+++ DBD-Pg/trunk/Changes Mon Nov 22 20:57:51 2010
@@ -4,8 +4,10 @@
- Fix the number of tests to skip in t/01connect.t when the $DBI_DSN
environment variable lacks a database specification.
- - Fix the number of tests to skip in t/06bytea.t when running on a version
+ - Fix algorithm for skiping tests in t/06bytea.t when running on a version
of PostgreSQL lower than 9.0.
+ - Fix failing tests in t/06bytea.t when running on PostgreSQL 9.0 or later
+ and using hexadecimal binary format.
2.17.2 Released November 21, 2010 (subversion r14542)
Modified: DBD-Pg/trunk/t/06bytea.t
==============================================================================
--- DBD-Pg/trunk/t/06bytea.t (original)
+++ DBD-Pg/trunk/t/06bytea.t Mon Nov 22 20:57:51 2010
@@ -50,9 +50,13 @@
ok ($sth->execute(404, $binary_out), $t);
SKIP: {
- skip 'No BYTEA output format setting before 9.0', 10
- if $pgversion < 90000;
- for my $output (qw(hex escape)) {
+ my @output;
+ if ($pgversion < 90000) {
+ skip 'No BYTEA output format setting before 9.0', 5;
+ } else {
+ @output = (qw(hex escape));
+ }
+ for my $output (@output) {
$dbh->do(qq{SET bytea_output = '$output'}) if $output;
$t='Received correct text from BYTEA column with backslashes';
@@ -60,22 +64,33 @@
$sth = $dbh->prepare(q{SELECT bytetest FROM dbd_pg_test WHERE id=?});
$sth->execute(400);
my $byte = $sth->fetchall_arrayref()->[0][0];
- is ($byte, 'aa\bb\cc\\\0dd\\', $t);
+ my $exp = $output eq 'hex'
+ ? 'x61615c62625c63635c5c3064645c'
+ : 'aa\bb\cc\\\0dd\\';
+ is ($byte, $exp, $t);
$t='Received correct text from BYTEA column with quote';
$t.=" ($output output)" if $output;
$sth->execute(402);
$byte = $sth->fetchall_arrayref()->[0][0];
- is ($byte, '\'', $t);
+ is ($byte, ($output eq 'hex' ? 'x27' : '\''), $t);
$t='Ensure proper handling of high bit characters';
$t.=" ($output output)" if $output;
$sth->execute(403);
($binary_in) = $sth->fetchrow_array();
- ok ($binary_in eq $binary_out, $t);
- $sth->execute(404);
- ($binary_in) = $sth->fetchrow_array();
- ok ($binary_in eq $binary_out, $t);
+ if ($output eq 'hex') {
+ my $hex = 'x' . unpack 'H*', $binary_out;
+ is $binary_in, $hex, $t;
+ $sth->execute(404);
+ ($binary_in) = $sth->fetchrow_array();
+ is $binary_in, $hex, $t;
+ } else {
+ ok ($binary_in eq $binary_out, $t);
+ $sth->execute(404);
+ ($binary_in) = $sth->fetchrow_array();
+ ok ($binary_in eq $binary_out, $t);
+ }
$t='quote properly handles bytea strings';
$t.=" ($output output)" if $output;