]> granicus.if.org Git - postgresql/commitdiff
Assorted minor cleanups for bootstrap-data Perl scripts.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 19 May 2018 20:04:47 +0000 (16:04 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 19 May 2018 20:04:47 +0000 (16:04 -0400)
FindDefinedSymbol was intended to take an array of possible include
paths, but it never actually worked correctly for any but the first
array element.  Since there's no use-case for more than one path
anyway, let's just simplify this code and its callers by redefining
it as taking only one include path.

Minor other code-beautification without functional effects, except
that in one place we format the output as pgindent would do.

John Naylor

Discussion: https://postgr.es/m/CAJVSVGXM_n32hTTkircW4_K1LQFsJNb6xjs0pAP4QC0ZpyJfPQ@mail.gmail.com

src/backend/catalog/Catalog.pm
src/backend/catalog/genbki.pl
src/backend/utils/Gen_fmgrtab.pl
src/include/catalog/reformat_dat_file.pl
src/include/catalog/unused_oids

index c8dc956e0b72ed6259a7472e2c834a2d6ce5dc30..95bf619c9124028209fbe721066367f6165a81f6 100644 (file)
@@ -198,7 +198,7 @@ sub ParseHeader
                                        else
                                        {
                                                die
-                                                 "unknown column option $attopt on column $attname";
+                                                 "unknown or misformatted column option $attopt on column $attname";
                                        }
 
                                        if ($column{forcenull} and $column{forcenotnull})
@@ -370,34 +370,30 @@ sub RenameTempFile
 }
 
 # Find a symbol defined in a particular header file and extract the value.
-#
-# The include path has to be passed as a reference to an array.
+# include_path should be the path to src/include/.
 sub FindDefinedSymbol
 {
        my ($catalog_header, $include_path, $symbol) = @_;
+       my $value;
 
-       for my $path (@$include_path)
+       # Make sure include path ends in a slash.
+       if (substr($include_path, -1) ne '/')
        {
-
-               # Make sure include path ends in a slash.
-               if (substr($path, -1) ne '/')
-               {
-                       $path .= '/';
-               }
-               my $file = $path . $catalog_header;
-               next if !-f $file;
-               open(my $find_defined_symbol, '<', $file) || die "$file: $!";
-               while (<$find_defined_symbol>)
+               $include_path .= '/';
+       }
+       my $file = $include_path . $catalog_header;
+       open(my $find_defined_symbol, '<', $file) || die "$file: $!";
+       while (<$find_defined_symbol>)
+       {
+               if (/^#define\s+\Q$symbol\E\s+(\S+)/)
                {
-                       if (/^#define\s+\Q$symbol\E\s+(\S+)/)
-                       {
-                               return $1;
-                       }
+                       $value = $1;
+                       last;
                }
-               close $find_defined_symbol;
-               die "$file: no definition found for $symbol\n";
        }
-       die "$catalog_header: not found in any include directory\n";
+       close $find_defined_symbol;
+       return $value if defined $value;
+       die "$file: no definition found for $symbol\n";
 }
 
 # Similar to FindDefinedSymbol, but looks in the bootstrap metadata.
index fb61db0a05fdf1e9f18ab14ed3e93ba48682f834..ebdc919414fbd6c7e158940cfbbe27430e915842 100644 (file)
@@ -357,8 +357,7 @@ EOM
                }
 
                # Emit Anum_* constants
-               print $def
-                 sprintf("#define Anum_%s_%s %s\n", $catname, $attname, $attnum);
+               printf $def "#define Anum_%s_%s %s\n", $catname, $attname, $attnum;
        }
        print $bki "\n )\n";
 
@@ -493,7 +492,7 @@ EOM
        }
 
        print $bki "close $catname\n";
-       print $def sprintf("\n#endif\t\t\t\t\t\t\t/* %s_D_H */\n", uc $catname);
+       printf $def "\n#endif\t\t\t\t\t\t\t/* %s_D_H */\n", uc $catname;
 
        # Close and rename definition header
        close $def;
index 1cbc250e0c34bfdcff3d1f2c460758c2b72cc0e2..fa30436895b25e6175f3db8e6c1b2dc1713dc68a 100644 (file)
@@ -22,7 +22,7 @@ use warnings;
 # Collect arguments
 my @input_files;
 my $output_path = '';
-my @include_path;
+my $include_path;
 
 while (@ARGV)
 {
@@ -37,7 +37,7 @@ while (@ARGV)
        }
        elsif ($arg =~ /^-I/)
        {
-               push @include_path, length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
+               $include_path = length($arg) > 2 ? substr($arg, 2) : shift @ARGV;
        }
        else
        {
@@ -52,8 +52,8 @@ if ($output_path ne '' && substr($output_path, -1) ne '/')
 }
 
 # Sanity check arguments.
-die "No input files.\n"                                     if !@input_files;
-die "No include path; you must specify -I at least once.\n" if !@include_path;
+die "No input files.\n"                       if !@input_files;
+die "No include path; you must specify -I.\n" if !$include_path;
 
 # Read all the input files into internal data structures.
 # Note: We pass data file names as arguments and then look for matching
@@ -80,7 +80,7 @@ foreach my $datfile (@input_files)
 
 # Fetch some values for later.
 my $FirstBootstrapObjectId =
-  Catalog::FindDefinedSymbol('access/transam.h', \@include_path,
+  Catalog::FindDefinedSymbol('access/transam.h', $include_path,
        'FirstBootstrapObjectId');
 my $INTERNALlanguageId =
   Catalog::FindDefinedSymbolFromData($catalog_data{pg_language},
@@ -119,8 +119,8 @@ open my $pfh, '>', $protosfile . $tmpext
 open my $tfh, '>', $tabfile . $tmpext
   or die "Could not open $tabfile$tmpext: $!";
 
-print $ofh
-  qq|/*-------------------------------------------------------------------------
+print $ofh <<OFH;
+/*-------------------------------------------------------------------------
  *
  * fmgroids.h
  *    Macros that define the OIDs of built-in functions.
@@ -154,10 +154,10 @@ print $ofh
  *     its equivalent macro will be defined with the lowest OID among those
  *     entries.
  */
-|;
+OFH
 
-print $pfh
-  qq|/*-------------------------------------------------------------------------
+print $pfh <<PFH;
+/*-------------------------------------------------------------------------
  *
  * fmgrprotos.h
  *    Prototypes for built-in functions.
@@ -180,10 +180,10 @@ print $pfh
 
 #include "fmgr.h"
 
-|;
+PFH
 
-print $tfh
-  qq|/*-------------------------------------------------------------------------
+print $tfh <<TFH;
+/*-------------------------------------------------------------------------
  *
  * fmgrtab.c
  *    The function manager's table of internal functions.
@@ -208,7 +208,7 @@ print $tfh
 #include "utils/fmgrtab.h"
 #include "utils/fmgrprotos.h"
 
-|;
+TFH
 
 # Emit #define's and extern's -- only one per prosrc value
 my %seenit;
@@ -282,8 +282,8 @@ print $tfh "};\n";
 
 
 # And add the file footers.
-print $ofh "\n#endif /* FMGROIDS_H */\n";
-print $pfh "\n#endif /* FMGRPROTOS_H */\n";
+print $ofh "\n#endif\t\t\t\t\t\t\t/* FMGROIDS_H */\n";
+print $pfh "\n#endif\t\t\t\t\t\t\t/* FMGRPROTOS_H */\n";
 
 close($ofh);
 close($pfh);
index 00c4f2b0a07c1ab7ede72b47445e564c49dbeb68..7f6dc6e4c5b2a9eff0b14be69ad2fee5ff19d4b9 100755 (executable)
@@ -125,7 +125,6 @@ foreach my $catname (@catnames)
        open my $dat, '>', $datfile
          or die "can't open $datfile: $!";
 
-       # Write the data.
        foreach my $data (@{ $catalog_data{$catname} })
        {
 
index 2780de052c9c6a1912c44c1cb507366848e8fd25..c5fc378ae34272ac6d571ad6b2e22fa241ad99be 100755 (executable)
@@ -34,7 +34,7 @@ my $oids = Catalog::FindAllOidsFromHeaders(@input_files);
 
 # Also push FirstBootstrapObjectId to serve as a terminator for the last gap.
 my $FirstBootstrapObjectId =
-  Catalog::FindDefinedSymbol('access/transam.h', [".."],
+  Catalog::FindDefinedSymbol('access/transam.h', '..',
        'FirstBootstrapObjectId');
 push @{$oids}, $FirstBootstrapObjectId;