diff options
Diffstat (limited to 't/48_bind_param_is_sticky.t')
-rw-r--r-- | t/48_bind_param_is_sticky.t | 48 |
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); |