]> granicus.if.org Git - postgresql/commitdiff
Minor edits to catalog files and scripts
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 21 Dec 2017 22:07:32 +0000 (19:07 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 21 Dec 2017 22:07:32 +0000 (19:07 -0300)
This fixes a few typos and small mistakes; it also cleans a few
minor stylistic issues.  The biggest functional change is that
Gen_fmgrtab.pl no longer knows the OID of language 'internal'.

Author: John Naylor
Discussion: https://postgr.es/m/CAJVSVGXAkwbk-A9QHHHf00N905kKisyQbaYwKqaRpze_gPXGfg@mail.gmail.com

src/backend/catalog/Catalog.pm
src/backend/catalog/Makefile
src/backend/catalog/genbki.pl
src/backend/utils/Gen_fmgrtab.pl
src/include/catalog/pg_partitioned_table.h
src/include/catalog/pg_sequence.h
src/include/catalog/pg_statistic.h
src/include/catalog/pg_subscription_rel.h

index 54f83533b62cdb9632458c34cccbd2bf15d9ef77..80bd9771f144421621fa2a05edd1c14193ef5eb7 100644 (file)
@@ -16,11 +16,6 @@ package Catalog;
 use strict;
 use warnings;
 
-require Exporter;
-our @ISA       = qw(Exporter);
-our @EXPORT    = ();
-our @EXPORT_OK = qw(Catalogs SplitDataLine RenameTempFile FindDefinedSymbol);
-
 # Call this function with an array of names of header files to parse.
 # Returns a nested data structure describing the data in the headers.
 sub Catalogs
@@ -36,7 +31,8 @@ sub Catalogs
                'int64'         => 'int8',
                'Oid'           => 'oid',
                'NameData'      => 'name',
-               'TransactionId' => 'xid');
+               'TransactionId' => 'xid',
+               'XLogRecPtr'    => 'pg_lsn');
 
        foreach my $input_file (@_)
        {
@@ -162,7 +158,7 @@ sub Catalogs
                                  /BKI_WITHOUT_OIDS/ ? ' without_oids' : '';
                                $catalog{rowtype_oid} =
                                  /BKI_ROWTYPE_OID\((\d+)\)/ ? " rowtype_oid $1" : '';
-                               $catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 'True' : '';
+                               $catalog{schema_macro} = /BKI_SCHEMA_MACRO/ ? 1 : 0;
                                $declaring_attributes = 1;
                        }
                        elsif ($declaring_attributes)
@@ -175,7 +171,7 @@ sub Catalogs
                                }
                                else
                                {
-                                       my %row;
+                                       my %column;
                                        my ($atttype, $attname, $attopt) = split /\s+/, $_;
                                        die "parse error ($input_file)" unless $attname;
                                        if (exists $RENAME_ATTTYPE{$atttype})
@@ -188,18 +184,18 @@ sub Catalogs
                                                $atttype .= '[]';            # variable-length only
                                        }
 
-                                       $row{'type'} = $atttype;
-                                       $row{'name'} = $attname;
+                                       $column{type} = $atttype;
+                                       $column{name} = $attname;
 
                                        if (defined $attopt)
                                        {
                                                if ($attopt eq 'BKI_FORCE_NULL')
                                                {
-                                                       $row{'forcenull'} = 1;
+                                                       $column{forcenull} = 1;
                                                }
                                                elsif ($attopt eq 'BKI_FORCE_NOT_NULL')
                                                {
-                                                       $row{'forcenotnull'} = 1;
+                                                       $column{forcenotnull} = 1;
                                                }
                                                else
                                                {
@@ -207,7 +203,7 @@ sub Catalogs
 "unknown column option $attopt on column $attname";
                                                }
                                        }
-                                       push @{ $catalog{columns} }, \%row;
+                                       push @{ $catalog{columns} }, \%column;
                                }
                        }
                }
index fd33426bad15164500bb8189f65f808758107f27..30ca5095347a1e240f376412c19100fb7f21a725 100644 (file)
@@ -45,7 +45,7 @@ POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
        pg_default_acl.h pg_init_privs.h pg_seclabel.h pg_shseclabel.h \
        pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
        pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
-       pg_subscription_rel.h toasting.h indexing.h \
+       pg_subscription_rel.h \
        toasting.h indexing.h \
     )
 
index e4a0b8b2c7249d5722e435199b205574a7084e21..5b5b04f41ce9a763d2c7b389d60cf85e9c43a376 100644 (file)
@@ -20,7 +20,7 @@ use strict;
 use warnings;
 
 my @input_files;
-our @include_path;
+my @include_path;
 my $output_path = '';
 my $major_version;
 
@@ -105,7 +105,7 @@ print $bki "# PostgreSQL $major_version\n";
 my %schemapg_entries;
 my @tables_needing_macros;
 my %regprocoids;
-our @types;
+my @types;
 
 # produce output, one catalog at a time
 foreach my $catname (@{ $catalogs->{names} })
@@ -124,7 +124,8 @@ foreach my $catname (@{ $catalogs->{names} })
        my $first = 1;
 
        print $bki " (\n";
-       foreach my $column (@{ $catalog->{columns} })
+       my $schema = $catalog->{columns};
+       foreach my $column (@$schema)
        {
                my $attname = $column->{name};
                my $atttype = $column->{type};
@@ -150,8 +151,9 @@ foreach my $catname (@{ $catalogs->{names} })
        }
        print $bki "\n )\n";
 
-   # open it, unless bootstrap case (create bootstrap does this automatically)
-       if ($catalog->{bootstrap} eq '')
+       # Open it, unless bootstrap case (create bootstrap does this
+       # automatically)
+       if (!$catalog->{bootstrap})
        {
                print $bki "open $catname\n";
        }
@@ -169,21 +171,23 @@ foreach my $catname (@{ $catalogs->{names} })
                          Catalog::SplitDataLine($row->{bki_values});
 
                        # Perform required substitutions on fields
-                       foreach my $att (keys %bki_values)
+                       foreach my $column (@$schema)
                        {
+                               my $attname = $column->{name};
+                               my $atttype = $column->{type};
 
                                # Substitute constant values we acquired above.
                                # (It's intentional that this can apply to parts of a field).
-                               $bki_values{$att} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
-                               $bki_values{$att} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
+                               $bki_values{$attname} =~ s/\bPGUID\b/$BOOTSTRAP_SUPERUSERID/g;
+                               $bki_values{$attname} =~ s/\bPGNSP\b/$PG_CATALOG_NAMESPACE/g;
 
                                # Replace regproc columns' values with OIDs.
                                # If we don't have a unique value to substitute,
                                # just do nothing (regprocin will complain).
-                               if ($bki_attr{$att}->{type} eq 'regproc')
+                               if ($atttype eq 'regproc')
                                {
-                                       my $procoid = $regprocoids{ $bki_values{$att} };
-                                       $bki_values{$att} = $procoid
+                                       my $procoid = $regprocoids{ $bki_values{$attname} };
+                                       $bki_values{$attname} = $procoid
                                          if defined($procoid) && $procoid ne 'MULTIPLE';
                                }
                        }
@@ -215,16 +219,17 @@ foreach my $catname (@{ $catalogs->{names} })
                        printf $bki "insert %s( %s )\n", $oid,
                          join(' ', @bki_values{@attnames});
 
-                  # Write comments to postgres.description and postgres.shdescription
+                       # Write comments to postgres.description and
+                       # postgres.shdescription
                        if (defined $row->{descr})
                        {
-                               printf $descr "%s\t%s\t0\t%s\n", $row->{oid}, $catname,
-                                 $row->{descr};
+                               printf $descr "%s\t%s\t0\t%s\n",
+                                 $row->{oid}, $catname, $row->{descr};
                        }
                        if (defined $row->{shdescr})
                        {
-                               printf $shdescr "%s\t%s\t%s\n", $row->{oid}, $catname,
-                                 $row->{shdescr};
+                               printf $shdescr "%s\t%s\t%s\n",
+                                 $row->{oid}, $catname, $row->{shdescr};
                        }
                }
        }
@@ -240,11 +245,10 @@ foreach my $catname (@{ $catalogs->{names} })
 
                        # Currently, all bootstrapped relations also need schemapg.h
                        # entries, so skip if the relation isn't to be in schemapg.h.
-                       next if $table->{schema_macro} ne 'True';
+                       next if !$table->{schema_macro};
 
                        $schemapg_entries{$table_name} = [];
                        push @tables_needing_macros, $table_name;
-                       my $is_bootstrap = $table->{bootstrap};
 
                        # Generate entries for user attributes.
                        my $attnum       = 0;
@@ -259,7 +263,7 @@ foreach my $catname (@{ $catalogs->{names} })
                                $priornotnull &= ($row->{attnotnull} eq 't');
 
                                # If it's bootstrapped, put an entry in postgres.bki.
-                               if ($is_bootstrap eq ' bootstrap')
+                               if ($table->{bootstrap})
                                {
                                        bki_insert($row, @attnames);
                                }
@@ -268,15 +272,14 @@ foreach my $catname (@{ $catalogs->{names} })
                                $row =
                                  emit_schemapg_row($row,
                                        grep { $bki_attr{$_}{type} eq 'bool' } @attnames);
-                               push @{ $schemapg_entries{$table_name} }, '{ '
-                                 . join(
-                                       ', ',             grep { defined $_ }
-                                         map $row->{$_}, @attnames) . ' }';
+                               push @{ $schemapg_entries{$table_name} },
+                                 sprintf "{ %s }",
+                                   join(', ', grep { defined $_ } @{$row}{@attnames});
                        }
 
                        # Generate entries for system attributes.
                        # We only need postgres.bki entries, not schemapg.h entries.
-                       if ($is_bootstrap eq ' bootstrap')
+                       if ($table->{bootstrap})
                        {
                                $attnum = 0;
                                my @SYS_ATTRS = (
@@ -294,9 +297,9 @@ foreach my $catname (@{ $catalogs->{names} })
                                        $row->{attnum}        = $attnum;
                                        $row->{attstattarget} = '0';
 
-                                       # some catalogs don't have oids
+                                       # Omit the oid column if the catalog doesn't have them
                                        next
-                                         if $table->{without_oids} eq ' without_oids'
+                                         if $table->{without_oids}
                                                  && $row->{attname} eq 'oid';
 
                                        bki_insert($row, @attnames);
index 26b428b11e3787838220876a3deffb0b60132eeb..14c02f5b57d82151f809b2633bf6d87006d9091a 100644 (file)
@@ -2,7 +2,8 @@
 #-------------------------------------------------------------------------
 #
 # Gen_fmgrtab.pl
-#    Perl script that generates fmgroids.h and fmgrtab.c from pg_proc.h
+#    Perl script that generates fmgroids.h, fmgrprotos.h, and fmgrtab.c
+#    from pg_proc.h
 #
 # Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
@@ -56,6 +57,8 @@ die "No include path; you must specify -I at least once.\n" if !@include_path;
 
 my $FirstBootstrapObjectId =
        Catalog::FindDefinedSymbol('access/transam.h', \@include_path, 'FirstBootstrapObjectId');
+my $INTERNALlanguageId =
+       Catalog::FindDefinedSymbol('catalog/pg_language.h', \@include_path, 'INTERNALlanguageId');
 
 # Read all the data from the include/catalog files.
 my $catalogs = Catalog::Catalogs($infile);
@@ -77,8 +80,7 @@ foreach my $row (@$data)
        @bki_values{@attnames} = Catalog::SplitDataLine($row->{bki_values});
 
        # Select out just the rows for internal-language procedures.
-       # Note assumption here that INTERNALlanguageId is 12.
-       next if $bki_values{prolang} ne '12';
+       next if $bki_values{prolang} ne $INTERNALlanguageId;
 
        push @fmgr,
          { oid    => $row->{oid},
@@ -281,7 +283,8 @@ sub usage
        die <<EOM;
 Usage: perl -I [directory of Catalog.pm] Gen_fmgrtab.pl [path to pg_proc.h]
 
-Gen_fmgrtab.pl generates fmgroids.h and fmgrtab.c from pg_proc.h
+Gen_fmgrtab.pl generates fmgroids.h, fmgrprotos.h, and fmgrtab.c from
+pg_proc.h
 
 Report bugs to <pgsql-bugs\@postgresql.org>.
 EOM
index 525e541f930750d3dc6202881a8af4f7f0bc1040..731147ecbfdfe821922c1c75ed65c6db7f2520f6 100644 (file)
@@ -10,7 +10,7 @@
  * src/include/catalog/pg_partitioned_table.h
  *
  * NOTES
- *       the genbki.sh script reads this file and generates .bki
+ *       the genbki.pl script reads this file and generates .bki
  *       information from the DATA() statements.
  *
  *-------------------------------------------------------------------------
index 8ae6b7143da4480830265e8ecc64e34c034593ec..6de54bb665d45b0e883badc4a9396c0ef0a4ff0d 100644 (file)
@@ -1,3 +1,13 @@
+/* -------------------------------------------------------------------------
+ *
+ * pg_sequence.h
+ *       definition of the system "sequence" relation (pg_sequence)
+ *
+ * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * -------------------------------------------------------------------------
+ */
 #ifndef PG_SEQUENCE_H
 #define PG_SEQUENCE_H
 
index 3713a56bbdaee958a39c9c8e6b2308b3c18d53b4..43128f1928db967fa7b642a4683677683a751504 100644 (file)
@@ -161,12 +161,10 @@ typedef FormData_pg_statistic *Form_pg_statistic;
 #define Anum_pg_statistic_stavalues5   26
 
 /*
- * Currently, five statistical slot "kinds" are defined by core PostgreSQL,
- * as documented below.  Additional "kinds" will probably appear in
- * future to help cope with non-scalar datatypes.  Also, custom data types
- * can define their own "kind" codes by mutual agreement between a custom
- * typanalyze routine and the selectivity estimation functions of the type's
- * operators.
+ * Several statistical slot "kinds" are defined by core PostgreSQL, as
+ * documented below.  Also, custom data types can define their own "kind"
+ * codes by mutual agreement between a custom typanalyze routine and the
+ * selectivity estimation functions of the type's operators.
  *
  * Code reading the pg_statistic relation should not assume that a particular
  * data "kind" will appear in any particular slot.  Instead, search the
index 991ca9d552abe0668d6a7df2443ae8597a8e8b47..57482972fb99dc260fd48e700115895ee058b8e7 100644 (file)
  */
 #define SubscriptionRelRelationId                      6102
 
-/* Workaround for genbki not knowing about XLogRecPtr */
-#define pg_lsn XLogRecPtr
-
 CATALOG(pg_subscription_rel,6102) BKI_WITHOUT_OIDS
 {
        Oid                     srsubid;                /* Oid of subscription */
        Oid                     srrelid;                /* Oid of relation */
        char            srsubstate;             /* state of the relation in subscription */
-       pg_lsn          srsublsn;               /* remote lsn of the state change used for
+       XLogRecPtr      srsublsn;               /* remote lsn of the state change used for
                                                                 * synchronization coordination */
 } FormData_pg_subscription_rel;