From ec690b6e78176354ae033073cda1b0770e956a72 Mon Sep 17 00:00:00 2001 From: Amit Langote Date: Fri, 14 Feb 2020 16:04:48 +0900 Subject: [PATCH] Don't require relnatts to be specified in pg_class.dat --- src/backend/catalog/Catalog.pm | 4 ++++ src/backend/catalog/genbki.pl | 7 +++++++ src/include/catalog/pg_class.dat | 11 +++++++---- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm index c089b1d71d..8e84bf9d2d 100644 --- a/src/backend/catalog/Catalog.pm +++ b/src/backend/catalog/Catalog.pm @@ -341,6 +341,10 @@ sub AddDefaultValues { ; } + elsif ($attname eq 'relnatts') + { + ; + } elsif (defined $column->{default}) { $row->{$attname} = $column->{default}; diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl index 803251207b..eac4542ade 100644 --- a/src/backend/catalog/genbki.pl +++ b/src/backend/catalog/genbki.pl @@ -56,6 +56,7 @@ my %catalog_data; my @toast_decls; my @index_decls; my %oidcounts; +my %catalog_ncols; foreach my $header (@ARGV) { @@ -71,6 +72,7 @@ foreach my $header (@ARGV) { push @catnames, $catname; $catalogs{$catname} = $catalog; + $catalog_ncols{$catname} = scalar(@$schema); } # While checking for duplicated OIDs, we ignore the pg_class OID and @@ -524,6 +526,11 @@ EOM my $attname = $column->{name}; my $atttype = $column->{type}; + if ($catname eq "pg_class" && $attname eq "relnatts") + { + $bki_values{$attname} = $catalog_ncols{$bki_values{relname}}; + } + # Assign oid if oid column exists and no explicit assignment in row if ($attname eq "oid" and not defined $bki_values{$attname}) { diff --git a/src/include/catalog/pg_class.dat b/src/include/catalog/pg_class.dat index f70d5bacb9..d901988858 100644 --- a/src/include/catalog/pg_class.dat +++ b/src/include/catalog/pg_class.dat @@ -20,11 +20,14 @@ # Note: "3" in the relfrozenxid column stands for FirstNormalTransactionId; # similarly, "1" in relminmxid stands for FirstMultiXactId +# Note: relnatts is computed automatically by genbki.pl, so need not be +# specified here. + { oid => '1247', relname => 'pg_type', reltype => 'pg_type', relam => 'heap', relfilenode => '0', relpages => '0', reltuples => '0', relallvisible => '0', reltoastrelid => '0', relhasindex => 'f', relisshared => 'f', - relpersistence => 'p', relkind => 'r', relnatts => '31', relchecks => '0', + relpersistence => 'p', relkind => 'r', relchecks => '0', relhasrules => 'f', relhastriggers => 'f', relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f', relispopulated => 't', relreplident => 'n', relispartition => 'f', relfrozenxid => '3', @@ -34,7 +37,7 @@ relname => 'pg_attribute', reltype => 'pg_attribute', relam => 'heap', relfilenode => '0', relpages => '0', reltuples => '0', relallvisible => '0', reltoastrelid => '0', relhasindex => 'f', relisshared => 'f', - relpersistence => 'p', relkind => 'r', relnatts => '25', relchecks => '0', + relpersistence => 'p', relkind => 'r', relchecks => '0', relhasrules => 'f', relhastriggers => 'f', relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f', relispopulated => 't', relreplident => 'n', relispartition => 'f', relfrozenxid => '3', @@ -44,7 +47,7 @@ relname => 'pg_proc', reltype => 'pg_proc', relam => 'heap', relfilenode => '0', relpages => '0', reltuples => '0', relallvisible => '0', reltoastrelid => '0', relhasindex => 'f', relisshared => 'f', - relpersistence => 'p', relkind => 'r', relnatts => '29', relchecks => '0', + relpersistence => 'p', relkind => 'r', relchecks => '0', relhasrules => 'f', relhastriggers => 'f', relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f', relispopulated => 't', relreplident => 'n', relispartition => 'f', relfrozenxid => '3', @@ -54,7 +57,7 @@ relname => 'pg_class', reltype => 'pg_class', relam => 'heap', relfilenode => '0', relpages => '0', reltuples => '0', relallvisible => '0', reltoastrelid => '0', relhasindex => 'f', relisshared => 'f', - relpersistence => 'p', relkind => 'r', relnatts => '33', relchecks => '0', + relpersistence => 'p', relkind => 'r', relchecks => '0', relhasrules => 'f', relhastriggers => 'f', relhassubclass => 'f', relrowsecurity => 'f', relforcerowsecurity => 'f', relispopulated => 't', relreplident => 'n', relispartition => 'f', relfrozenxid => '3', -- 2.16.5