[DBD::Pg] Allow '%' again for the type in table_info() and thus tables()
[email protected] Tue, 19 Aug 2014 23:55:29 +0000
| Newsgroups | perl.dbd.pg.changes |
|---|---|
| Message-ID | <[email protected]> |
Committed by =?UTF-8?q?Dagfinn=20Ilmari=20Manns=C3=A5ker?= <[email protected]> Allow '%' again for the type in table_info() and thus tables() It's not documented or tested in DBI, but it used to work until DBD::Pg 3.4.0, and the change broke DBIx::Class::Schema::Loader, which uses type='%'. --- Pg.pm | 2 +- t/03dbmethod.t | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Pg.pm b/Pg.pm index eb63925..c6daaca 100644 --- a/Pg.pm +++ b/Pg.pm @@ -1135,7 +1135,7 @@ use 5.008001; ORDER BY "TABLE_TYPE", "TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME" }; - if (defined($type) and length($type)) { + if (defined($type) and length($type) and $type ne '%') { my $type_restrict = join ', ' => map { $dbh->quote($_) unless /^'/ } grep {length} diff --git a/t/03dbmethod.t b/t/03dbmethod.t index ffcab48..5d040cd 100644 --- a/t/03dbmethod.t +++ b/t/03dbmethod.t @@ -26,7 +26,7 @@ my $dbh = connect_database(); if (! $dbh) { plan skip_all => 'Connection to database failed, cannot continue testing'; } -plan tests => 545; +plan tests => 547; isnt ($dbh, undef, 'Connect to database for database handle method testing'); @@ -483,11 +483,16 @@ is ($dbh->get_info(25), 'N', $t); # Test of the "table_info" database handle method # -$t='DB handle method "table_info" works when called with undef arguments'; +$t='DB handle method "table_info" works when called with empty arguments'; $sth = $dbh->table_info('', '', 'dbd_pg_test', ''); my $number = $sth->rows(); ok ($number, $t); +$t='DB handle method "table_info" works when called with \'%\' arguments'; +$sth = $dbh->table_info('%', '%', 'dbd_pg_test', '%'); +$number = $sth->rows(); +ok ($number, $t); + # Check required minimum fields $t='DB handle method "table_info" returns fields required by DBI'; $result = $sth->fetchall_arrayref({}); @@ -1179,6 +1184,10 @@ $t='DB handle method "tables" works with a "pg_noprefix" attribute'; @result = $dbh->tables('', '', 'dbd_pg_test', '', {pg_noprefix => 1}); is ($result[0], 'dbd_pg_test', $t); +$t='DB handle method "tables" works with type=\'%\''; +@result = $dbh->tables('', '', 'dbd_pg_test', '%'); +like ($result[0], qr/dbd_pg_test/, $t); + # # Test of the "type_info_all" database handle method # -- 1.8.4