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

Reply via email to