File: 06bytea.t

package info (click to toggle)
libdbd-pg-perl 1.49-2%2Betch1
  • links: PTS
  • area: main
  • in suites: etch
  • size: 680 kB
  • ctags: 381
  • sloc: perl: 3,921; ansic: 3,183; makefile: 99; sh: 22
file content (53 lines) | stat: -rw-r--r-- 1,729 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!perl -w

## Test bytea handling

use Test::More;
use DBI qw(:sql_types);
use DBD::Pg qw(:pg_types);
use strict;
$|=1;

if (defined $ENV{DBI_DSN}){
	plan tests => 8;
} else {
	plan skip_all => 'Cannot run test unless DBI_DSN is defined. See the README file';
}

my $dbh = DBI->connect($ENV{DBI_DSN}, $ENV{DBI_USER}, $ENV{DBI_PASS},
											 {RaiseError => 1, PrintError => 0, AutoCommit => 0});
ok( defined $dbh, "Connect to database for bytea testing");

my ($pglibversion,$pgversion) = ($dbh->{pg_lib_version},$dbh->{pg_server_version});
if ($pgversion >= 80100) {
  $dbh->do("SET escape_string_warning = false");
}

my $sth;

$sth = $dbh->prepare(qq{INSERT INTO dbd_pg_test (id,bytetest) VALUES (?,?)});

$sth->bind_param(2, undef, { pg_type => PG_BYTEA });
ok($sth->execute(400, 'aa\\bb\\cc\\\0dd\\'), 'bytea insert test with string containing null and backslashes');
ok($sth->execute(401, '\''), 'bytea insert test with string containing a single quote');
ok($sth->execute(402, '\''), 'bytea (second) insert test with string containing a single quote');

$sth = $dbh->prepare(qq{SELECT bytetest FROM dbd_pg_test WHERE id=?});

$sth->execute(400);
my $byte = $sth->fetchall_arrayref()->[0][0];
is($byte, 'aa\bb\cc\\\0dd\\', 'Received correct text from BYTEA column with backslashes');

$sth->execute(402);
$byte = $sth->fetchall_arrayref()->[0][0];
is($byte, '\'', 'Received correct text from BYTEA column with quote');

my $string = "abc\123\\def\0ghi";
my $result = $dbh->quote($string, { pg_type => PG_BYTEA });
my $expected = qq{'abc\123\\\\\\\\def\\\\000ghi'};
is ($result, $expected, 'quote properly handles bytea strings.');

$sth->finish();

$dbh->rollback();
ok( $dbh->disconnect(), 'Disconnect from database');