diff options
author | Peter Eisentraut <peter@eisentraut.org> | 2021-06-30 08:29:03 +0200 |
---|---|---|
committer | Peter Eisentraut <peter@eisentraut.org> | 2021-06-30 08:50:26 +0200 |
commit | 735dc1a09469002fd659a4b1f5d582377b318977 (patch) | |
tree | 47c6c23e548e1173059bd746649259dea2feeae6 /src/backend/catalog/genbki.pl | |
parent | ab5e48f153cfea2c571dc177ae96faf4ab072b8e (diff) | |
download | postgresql-735dc1a09469002fd659a4b1f5d582377b318977.tar.gz |
genbki stricter error handling
Instead of just writing warnings for invalid cross-catalog lookups,
count the errors and error out at the end.
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://www.postgresql.org/message-id/flat/ca8ee41d-241b-1bf3-71f0-aaf1add6d3c5%40enterprisedb.com
Diffstat (limited to 'src/backend/catalog/genbki.pl')
-rw-r--r-- | src/backend/catalog/genbki.pl | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl index 9687376093..b82df348b8 100644 --- a/src/backend/catalog/genbki.pl +++ b/src/backend/catalog/genbki.pl @@ -26,6 +26,8 @@ my $output_path = ''; my $major_version; my $include_path; +my $num_errors = 0; + GetOptions( 'output:s' => \$output_path, 'set-version:s' => \$major_version, @@ -796,7 +798,7 @@ Catalog::RenameTempFile($schemafile, $tmpext); Catalog::RenameTempFile($fk_info_file, $tmpext); Catalog::RenameTempFile($constraints_file, $tmpext); -exit 0; +exit ($num_errors != 0 ? 1 : 0); #################### Subroutines ######################## @@ -1024,8 +1026,7 @@ sub morph_row_for_schemapg # Perform OID lookups on an array of OID names. # If we don't have a unique value to substitute, warn and # leave the entry unchanged. -# (A warning seems sufficient because the bootstrap backend will reject -# non-numeric values anyway. So we might as well detect multiple problems +# (We don't exit right away so that we can detect multiple problems # within this genbki.pl run.) sub lookup_oids { @@ -1045,16 +1046,20 @@ sub lookup_oids push @lookupoids, $lookupname; if ($lookupname eq '-' or $lookupname eq '0') { - warn sprintf - "invalid zero OID reference in %s.dat field %s line %s\n", - $catname, $attname, $bki_values->{line_number} - if !$lookup_opt; + if (!$lookup_opt) + { + warn sprintf + "invalid zero OID reference in %s.dat field %s line %s\n", + $catname, $attname, $bki_values->{line_number}; + $num_errors++; + } } else { warn sprintf "unresolved OID reference \"%s\" in %s.dat field %s line %s\n", $lookupname, $catname, $attname, $bki_values->{line_number}; + $num_errors++; } } } |