use DBIx::Class::Optional::Dependencies ();
use lib qw(t/lib);
use DBICTest;
+use SQL::Abstract 'is_literal_value';
plan skip_all => 'Test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_rdbms_pg')
unless DBIx::Class::Optional::Dependencies->req_ok_for ('test_rdbms_pg');
# check if we indeed do support stuff
my $test_server_supports_insert_returning = do {
- my $v = DBICTest::Schema->connect($dsn, $user, $pass)
- ->storage
- ->_get_dbh
- ->get_info(18);
- $v =~ /^(\d+)\.(\d+)/
- or die "Unparseable Pg server version: $v\n";
-
- ( sprintf ('%d.%d', $1, $2) >= 8.2 ) ? 1 : 0;
+
+ my $si = DBICTest::Schema->connect($dsn, $user, $pass)->storage->_server_info;
+ die "Unparseable Pg server version: $si->{dbms_version}\n"
+ unless $si->{normalized_dbms_version};
+
+ $si->{normalized_dbms_version} < 8.002 ? 0 : 1;
};
is (
DBICTest::Schema->connect($dsn, $user, $pass)->storage->_use_insert_returning,
: (0)
) {
- no warnings qw/once/;
+ no warnings qw/once redefine/;
+ my $old_connection = DBICTest::Schema->can('connection');
local *DBICTest::Schema::connection = subname 'DBICTest::Schema::connection' => sub {
- my $s = shift->next::method (@_);
+ my $s = shift->$old_connection(@_);
$s->storage->_use_insert_returning ($use_insert_returning);
$s;
};
lives_ok {
is_deeply (
$arr_rs->search({ arrayfield => { '=' => { -value => [3,4] }} })->first->arrayfield,
- [3,4],,
+ [3,4],
'Array value matches explicit equal'
);
} 'searching by arrayref (explicit equal sign)';
} 'find by arrayref (equal)';
# test inferred condition for creation
- TODO: for my $cond (
+ for my $cond (
{ -value => [3,4] },
\[ '= ?' => [arrayfield => [3, 4]] ],
) {
- local $TODO = 'No introspection of complex conditions :(';
+ local $TODO = 'No introspection of complex literal conditions :('
+ if is_literal_value $cond;
+
+
my $arr_rs_cond = $arr_rs->search({ arrayfield => $cond });
my $row = $arr_rs_cond->create({});
END {
return unless $schema;
drop_test_schema($schema);
- eapk_drop_all( $schema)
+ eapk_drop_all($schema);
+ undef $schema;
};