Committed by Greg Sabino Mullane <[email protected]>
Subject: [DBD::Pg 4/4] Add test for escaped colon-style placeholders, e.g.
foobar[1 \\:3]
---
t/12placeholders.t | 25 +++++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/t/12placeholders.t b/t/12placeholders.t
index ea4d9a6..548cd19 100644
--- a/t/12placeholders.t
+++ b/t/12placeholders.t
@@ -17,7 +17,7 @@ my $dbh = connect_database();
if (! $dbh) {
plan skip_all => 'Connection to database failed, cannot continue
testing';
}
-plan tests => 254;
+plan tests => 256;
my $t='Connect to database for placeholder testing';
isnt ($dbh, undef, $t);
@@ -408,7 +408,7 @@ for my $line (split /\n\n+/ => $testdata) {
$dbh->do('DELETE FROM dbd_pg_test_geom');
eval { $qresult = $dbh->quote($input, {pg_type => $typemap{$type}}); };
if ($@) {
- if ($quoted !~ /ERROR: .+/) {
+ if ($quoted !~ /ERROR: (.+)/) { ## no critic
fail ("$t error: $@");
}
else {
@@ -878,6 +878,27 @@ eval {
like($@, qr{execute}, $t);
$sth->finish();
+## The space before the colon is significant here
+$SQL = qq{SELECT testarray [1 :5] FROM dbd_pg_test WHERE pname = :foo};
+$sth = $dbh->prepare($SQL);
+eval {
+ $sth->bind_param(':foo', 'abc');
+ $count = $sth->execute();
+};
+like($@, qr{execute}, $t);
+$sth->finish();
+
+$t = q{Placeholder escaping works for colons};
+$dbh->{pg_placeholder_escaped} = 1;
+$SQL = qq{SELECT testarray [1 \\:5] FROM dbd_pg_test WHERE pname = :foo};
+$sth = $dbh->prepare($SQL);
+eval {
+ $sth->bind_param(':foo', 'abc');
+ $count = $sth->execute();
+};
+is($@, '', $t);
+$sth->finish();
+
## Begin custom type testing
--
1.8.4