|
64 | 64 | # Read in all the user 'normal' tables in @schema (public by default).
|
65 | 65 | # put all schemas between single quotes for the query
|
66 | 66 | my @protected_schema=map("'".$_."'",@schema);
|
67 |
| -my $tableQuery = $dbh->prepare( " |
| 67 | + |
| 68 | + |
| 69 | +my $server_version_query = $dbh->prepare("show server_version_num") |
| 70 | + or die("unable to determine server version"); |
| 71 | +$server_version_query->execute() or die "unable to determine server version"; |
| 72 | +my $version_row = $server_version_query->fetchrow_arrayref(); |
| 73 | +my $server_version = @$version_row[0]; |
| 74 | +$server_version_query->finish(); |
| 75 | + |
| 76 | + |
| 77 | +my $tableQuery; |
| 78 | +if ($server_version >= 110000) { |
| 79 | + $tableQuery = $dbh->prepare(" |
| 80 | +SELECT n.nspname || '.' || c.relname,c.relkind, |
| 81 | + EXISTS (SELECT 1 FROM pg_constraint WHERE contype='p' AND conrelid=c.oid) AS relhaspkey |
| 82 | +FROM pg_namespace n ,pg_class c |
| 83 | +WHERE c.reltype > 0 |
| 84 | +AND c.relnamespace = n.oid |
| 85 | +AND (c.relkind = 'r' OR c.relkind = 'S') |
| 86 | +AND n.nspname IN (" . join(',',@protected_schema) . ") |
| 87 | +AND n.oid = c.relnamespace; |
| 88 | +"); |
| 89 | +} |
| 90 | +else { |
| 91 | + |
| 92 | + $tableQuery = $dbh->prepare( " |
68 | 93 | SELECT pg_namespace.nspname || '.' || pg_class.relname,pg_class.relkind,pg_class.relhaspkey
|
69 | 94 | FROM pg_namespace,pg_class
|
70 | 95 | WHERE pg_class.reltype > 0
|
71 | 96 | AND pg_class.relnamespace = pg_catalog.pg_namespace.oid
|
72 | 97 | AND (pg_class.relkind = 'r' OR pg_class.relkind = 'S')
|
73 | 98 | AND pg_namespace.nspname IN (" . join(',',@protected_schema) . ") AND pg_namespace.oid = pg_class.relnamespace"
|
74 |
| -); |
| 99 | + ); |
| 100 | +} |
75 | 101 |
|
76 | 102 | die "prepare(tableQuery): $DBI::errstr"
|
77 | 103 | if ( !defined($tableQuery) || $DBI::err );
|
|
0 commit comments