Skip to content

Commit 364f6d6

Browse files
committed
Cleanup same_schema code: do not report if parent objects already missing
1 parent b1f7b3e commit 364f6d6

File tree

1 file changed

+20
-30
lines changed

1 file changed

+20
-30
lines changed

check_postgres.pl

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1286,7 +1286,7 @@ package check_postgres;
12861286
view => {
12871287
SQL => q{
12881288
SELECT c.*, nspname||'.'||relname AS name, quote_ident(rolname) AS owner,
1289-
quote_ident(relname) AS safename, quote_ident(nspname) AS schema,
1289+
quote_ident(relname) AS safename, quote_ident(nspname) AS schemaname,
12901290
TRIM(pg_get_viewdef(c.oid, TRUE)) AS viewdef, spcname AS tablespace
12911291
FROM pg_class c
12921292
JOIN pg_roles r ON (r.oid = c.relowner)
@@ -1298,7 +1298,7 @@ package check_postgres;
12981298
table => {
12991299
SQL => q{
13001300
SELECT c.*, nspname||'.'||relname AS name, quote_ident(rolname) AS owner,
1301-
quote_ident(relname) AS safename, quote_ident(nspname) AS schema,
1301+
quote_ident(relname) AS safename, quote_ident(nspname) AS schemaname,
13021302
spcname AS tablespace
13031303
FROM pg_class c
13041304
JOIN pg_roles r ON (r.oid = c.relowner)
@@ -1310,7 +1310,7 @@ package check_postgres;
13101310
index => {
13111311
SQL => q{
13121312
SELECT c.*, i.*, nspname||'.'||relname AS name, quote_ident(rolname) AS owner,
1313-
quote_ident(relname) AS safename, quote_ident(nspname) AS schema,
1313+
quote_ident(relname) AS safename, quote_ident(nspname) AS schemaname,
13141314
spcname AS tablespace, amname,
13151315
pg_get_indexdef(c.oid) AS indexdef, indrelid::regclass::text AS tablename
13161316
FROM pg_class c
@@ -1325,7 +1325,7 @@ package check_postgres;
13251325
operator => {
13261326
SQL => q{
13271327
SELECT o.*, o.oid, n.nspname||'.'||o.oprname||' ('||COALESCE(t2.typname,'NONE')||','||COALESCE(t3.typname,'NONE')||')' AS name, quote_ident(o.oprname) AS safename,
1328-
rolname AS owner, n.nspname AS schema,
1328+
rolname AS owner, quote_ident(n.nspname) AS schemaname,
13291329
t1.typname AS resultname,
13301330
t2.typname AS leftname, t3.typname AS rightname,
13311331
t4.typname AS resultname,
@@ -1348,7 +1348,8 @@ package check_postgres;
13481348
trigger => {
13491349
SQL => q{
13501350
SELECT t.*, n1.nspname||'.'||c1.relname||'.'||t.tgname AS name, quote_ident(t.tgname) AS safename, quote_ident(rolname) AS owner,
1351-
n1.nspname AS tschema, c1.relname AS tname,
1351+
quote_ident(n1.nspname) AS schemaname,
1352+
n1.nspname||'.'||c1.relname AS tablename,
13521353
n2.nspname AS cschema, c2.relname AS cname,
13531354
n3.nspname AS procschema, p.proname AS procname,
13541355
pg_get_triggerdef(t.oid) AS triggerdef,
@@ -1370,7 +1371,7 @@ package check_postgres;
13701371
SQL => q{
13711372
SELECT p.*, p.oid, nspname||'.'||p.proname AS name, quote_ident(p.proname) AS safename,
13721373
md5(prosrc) AS source_checksum,
1373-
rolname AS owner, nspname AS schema,
1374+
rolname AS owner, quote_ident(nspname) AS schemaname,
13741375
pg_get_function_arguments(p.oid) AS function_arguments
13751376
FROM pg_proc p
13761377
JOIN pg_roles r ON (r.oid = p.proowner)
@@ -1380,7 +1381,8 @@ package check_postgres;
13801381
constraint => {
13811382
SQL => q{
13821383
SELECT c.*, c.oid, n.nspname||'.'||c1.relname||'.'||c.conname AS name, quote_ident(c.conname) AS safename,
1383-
n.nspname AS schema, r.relname AS tname,
1384+
quote_ident(n.nspname) AS schemaname,
1385+
n.nspname||'.'||r.relname AS tablename,
13841386
pg_get_constraintdef(c.oid) AS constraintdef, translate(c.confmatchtype,'u','s') AS confmatchtype_compat
13851387
FROM pg_constraint c
13861388
JOIN pg_class c1 ON (c1.oid = c.conrelid)
@@ -1392,8 +1394,8 @@ package check_postgres;
13921394
column => {
13931395
SQL => q{
13941396
SELECT a.*, n.nspname||'.'||c.relname||'.'||attname AS name, quote_ident(a.attname) AS safename,
1395-
n.nspname||'.'||c.relname AS tname,
1396-
typname, quote_ident(nspname) AS schema,
1397+
n.nspname||'.'||c.relname AS tablename,
1398+
typname, quote_ident(nspname) AS schemaname,
13971399
pg_get_expr(d.adbin, a.attrelid, true) AS default
13981400
FROM pg_attribute a
13991401
JOIN pg_type t ON (t.oid = a.atttypid)
@@ -7588,30 +7590,18 @@ sub schema_item_exists {
75887590
## Skip if the schema does not match (and we have at least one schema, indicating lack of 'noschema')
75897591
if ($item_class ne 'schema') {
75907592
my $it = $itemhash->{$db1}{$item_class}{$name};
7591-
next if exists $it->{schema} and keys %{ $itemhash->{$db1}{schema} } and ! exists $itemhash->{$db2}{schema}{ $it->{schema} };
7593+
next if exists $it->{schemaname} and keys %{ $itemhash->{$db1}{schema} } and ! exists $itemhash->{$db2}{schema}{ $it->{schemaname} };
75927594
}
7593-
7594-
my $one = '1';
7595-
7596-
## Special exception for columns: do not add if the table is non-existent
7597-
if ($item_class eq 'column') {
7598-
(my $tablename = $name) =~ s/(.+)\..+/$1/;
7599-
next if ! exists $itemhash->{$db2}{table}{$tablename};
7600-
}
7601-
7602-
## Special exception for triggers: do not add if the table is non-existent
7603-
if ($item_class eq 'trigger') {
7595+
## Skip if this item has a table, but the table does not match
7596+
if ($item_class ne 'table') {
76047597
my $it = $itemhash->{$db1}{$item_class}{$name};
7605-
my $tablename = "$it->{tschema}.$it->{tname}";
7606-
next if ! exists $itemhash->{$db2}{table}{$tablename};
7598+
next if exists $it->{tablename} and ! exists $itemhash->{$db2}{table}{ $it->{tablename} };
76077599
}
76087600

7609-
## Special exception for indexes: do not add if the table is non-existent
7601+
my $one = '1';
7602+
76107603
if ($item_class eq 'index') {
7611-
my $it = $itemhash->{$db1}{$item_class}{$name};
7612-
my $tablename = "$it->{tablename}";
7613-
next if ! exists $itemhash->{$db2}{table}{$tablename};
7614-
$one = $tablename;
7604+
$one = $itemhash->{$db1}{$item_class}{$name}{tablename};
76157605
}
76167606

76177607
$nomatch{$name}{isthere}{$db1} = $one;
@@ -7882,8 +7872,8 @@ sub find_catalog_info {
78827872

78837873
## For columns, reduce the attnum to a simpler canonical form without holes
78847874
if ($type eq 'column') {
7885-
if ($row->{tname} ne $last_table) {
7886-
$last_table = $row->{tname};
7875+
if ($row->{tablename} ne $last_table) {
7876+
$last_table = $row->{tablename};
78877877
$colnum = 1;
78887878
}
78897879
$row->{column_number} = $colnum++;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy