X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F72pg_bytea.t;h=15f8db5f224888eb4c40f7a563d46d7057c8693d;hb=6c7ca96253b07f8ac9b6940ac35368d25ed3b139;hp=234da7ebde84d848499d1c0d8ef0c368d75bf239;hpb=9aec3ec60e053fc70810822c75b1008acdccd8b0;p=dbsrgits%2FDBIx-Class.git diff --git a/t/72pg_bytea.t b/t/72pg_bytea.t index 234da7e..15f8db5 100644 --- a/t/72pg_bytea.t +++ b/t/72pg_bytea.t @@ -1,32 +1,24 @@ +BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) } +use DBIx::Class::Optional::Dependencies -skip_all_without => qw(test_rdbms_pg binary_data); + use strict; use warnings; use Test::More; -use DBIx::Class::Optional::Dependencies (); -use Try::Tiny; -use lib qw(t/lib); -use DBICTest; +use DBIx::Class::_Util 'modver_gt_or_eq'; -plan skip_all => 'Test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('rdbms_pg') - unless DBIx::Class::Optional::Dependencies->req_ok_for ('rdbms_pg'); -my ($dsn, $dbuser, $dbpass) = @ENV{map { "DBICTEST_PG_${_}" } qw/DSN USER PASS/}; +use DBICTest; -plan skip_all => 'Set $ENV{DBICTEST_PG_DSN}, _USER and _PASS to run this test' - unless ($dsn && $dbuser); +my ($dsn, $dbuser, $dbpass) = @ENV{map { "DBICTEST_PG_${_}" } qw/DSN USER PASS/}; -my $schema = DBICTest::Schema->connection($dsn, $dbuser, $dbpass, { AutoCommit => 1 }); +my $schema = DBICTest::Schema->connect($dsn, $dbuser, $dbpass, { AutoCommit => 1 }); -if ($schema->storage->_server_info->{normalized_dbms_version} >= 9.0) { - if (not try { DBD::Pg->VERSION('2.17.2') }) { - plan skip_all => - 'DBD::Pg < 2.17.2 does not work with Pg >= 9.0 BYTEA columns'; - } -} -elsif (not try { DBD::Pg->VERSION('2.9.2') }) { - plan skip_all => - 'DBD::Pg < 2.9.2 does not work with BYTEA columns'; -} +plan skip_all => 'DBD::Pg < 2.17.2 does not work with Pg >= 9.0 BYTEA columns' if ( + ! modver_gt_or_eq('DBD::Pg', '2.17.2') + and + $schema->storage->_server_info->{normalized_dbms_version} >= 9.0 +); my $dbh = $schema->storage->dbh; @@ -105,7 +97,32 @@ my $new; ok($new->bytea eq $big_long_string, 'bytea value made it to db'); } +# test inserting a row via populate() (bindtype propagation through execute_for_fetch) +# use a new $dbh to ensure no leakage due to prepare_cached +{ + my $cnt = 4; + + $schema->storage->_dbh(undef); + my $rs = $schema->resultset('BindType'); + $rs->delete; + + $rs->populate([ + [qw/id bytea/], + map { [ + \[ '?', [ {} => $_ ] ], + "pop_${_}_" . $big_long_string, + ]} (1 .. $cnt) + ]); + + is($rs->count, $cnt, 'All rows were correctly inserted'); + for (1..$cnt) { + my $r = $rs->find({ bytea => "pop_${_}_" . $big_long_string }); + is ($r->id, $_, "Row $_ found after find() on the blob"); + + } +} + done_testing; -eval { $dbh->do("DROP TABLE bindtype_test") }; +eval { $schema->storage->dbh_do(sub { $_[1]->do("DROP TABLE bindtype_test") } ) };