Committed by Greg Sabino Mullane <[email protected]>
Add table_info() materialized view testing.
---
t/03dbmethod.t | 18 +++++++++++++++++-
t/dbdpg_test_setup.pl | 11 +++++++++++
2 files changed, 28 insertions(+), 1 deletion(-)
diff --git a/t/03dbmethod.t b/t/03dbmethod.t
index 108e0c5..ffcab48 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 => 543;
+plan tests => 545;
isnt ($dbh, undef, 'Connect to database for database handle method testing');
@@ -539,6 +539,22 @@ $rows = $sth->rows();
cmp_ok ($rows, '<', $number, $t);
cmp_ok ($rows, '>', 0, $t);
+$t=q{DB handle method "table_info" returns correct number of rows when given a
'MATERIALIZED VIEW' type argument};
+$sth = $dbh->table_info(undef,undef,undef,'MATERIALIZED VIEW');
+$rows = $sth->rows();
+is ($rows, 0, $t);
+
+SKIP: {
+ if ($pgversion < 90300) {
+ skip 'Postgres version 9.3 or better required to create
materialized views', 1;
+ }
+ $dbh->do('CREATE MATERIALIZED VIEW dbd_pg_matview (a) AS SELECT
count(*) FROM pg_class');
+ $t=q{DB handle method "table_info" returns correct number of rows when
given a 'MATERIALIZED VIEW' type argument};
+ $sth = $dbh->table_info(undef,undef,undef,'MATERIALIZED VIEW');
+ $rows = $sth->rows();
+ is ($rows, 1, $t);
+}
+
# Test listing catalog names
$t='DB handle method "table_info" works when called with a catalog of %';
$sth = $dbh->table_info('%', '', '');
diff --git a/t/dbdpg_test_setup.pl b/t/dbdpg_test_setup.pl
index 6bae63c..e31ac55 100644
--- a/t/dbdpg_test_setup.pl
+++ b/t/dbdpg_test_setup.pl
@@ -17,6 +17,11 @@ if (exists $ENV{TEST_OUTPUT}) {
Test::More->builder->todo_output($testfh);
}
+my @matviews =
+ (
+ 'dbd_pg_matview',
+ );
+
my @schemas =
(
'dbd_pg_testschema',
@@ -796,6 +801,12 @@ sub cleanup_database {
$dbh->rollback() if ! $dbh->{AutoCommit};
+ for my $name (@matviews) {
+ my $schema = ($name =~ s/(.+)\.(.+)/$2/) ? $1 : $S;
+ next if ! relation_exists($dbh,$schema,$name);
+ $dbh->do("DROP MATERIALIZED VIEW $schema.$name");
+ }
+
for my $name (@tables) {
my $schema = ($name =~ s/(.+)\.(.+)/$2/) ? $1 : $S;
next if ! relation_exists($dbh,$schema,$name);
--
1.8.4