summaryrefslogtreecommitdiff
path: root/t/48_bind_param_is_sticky.t
diff options
context:
space:
mode:
Diffstat (limited to 't/48_bind_param_is_sticky.t')
-rw-r--r--t/48_bind_param_is_sticky.t48
1 files changed, 48 insertions, 0 deletions
diff --git a/t/48_bind_param_is_sticky.t b/t/48_bind_param_is_sticky.t
new file mode 100644
index 0000000..504dd74
--- /dev/null
+++ b/t/48_bind_param_is_sticky.t
@@ -0,0 +1,48 @@
+#!/usr/bin/perl
+
+# Check data type assignment in bind_param is sticky
+
+use strict;
+BEGIN {
+ $| = 1;
+ $^W = 1;
+}
+
+use t::lib::Test qw/connect_ok/;
+use DBI qw(:sql_types);
+use Test::More;
+use Test::NoWarnings;
+
+plan tests => 10 + 1;
+
+my $dbh = connect_ok(
+ RaiseError => 1,
+ PrintError => 0,
+ AutoCommit => 0,
+);
+$dbh->do("CREATE TABLE Blah ( id INTEGER, val BLOB )");
+$dbh->commit;
+my $sth;
+ok($sth = $dbh->prepare("INSERT INTO Blah VALUES (?, ?)"), "prepare");
+$sth->bind_param(1, 1);
+$sth->bind_param(2, 'foo', SQL_BLOB);
+$sth->execute;
+$sth->execute(2, 'bar');
+sub verify_types() {
+ my $rows = $dbh->selectall_arrayref("SELECT typeof(val) FROM Blah ORDER BY id");
+ ok($rows, "selectall_arrayref returned data");
+ ok(@{$rows} == 2, "... with expected number of rows");
+ ok($rows->[0]->[0] eq 'blob', "$rows->[0]->[0] eq blob");
+ ok($rows->[1]->[0] eq 'blob', "$rows->[1]->[0] eq blob");
+}
+verify_types();
+$dbh->commit;
+$dbh->do("DELETE FROM Blah");
+$sth->bind_param_array(1, [1, 2]);
+$sth->bind_param_array(2, [qw/FOO BAR/], SQL_BLOB);
+$sth->execute_array({});
+verify_types();
+$dbh->commit;
+
+$dbh->disconnect;
+undef($dbh);