aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2018-05-19 16:04:47 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2018-05-19 16:04:47 -0400
commite7a808f947c66e2e2186c9495359865dadaf511a (patch)
treede800c7117acb50af1b35b17f20abd94b650cebf
parent06f66cff9e0b93db81db1595156b2aff8ba1786e (diff)
downloadpostgresql-e7a808f947c66e2e2186c9495359865dadaf511a.tar.gz
postgresql-e7a808f947c66e2e2186c9495359865dadaf511a.zip
Assorted minor cleanups for bootstrap-data Perl scripts.
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
-rw-r--r--src/backend/catalog/Catalog.pm38
-rw-r--r--src/backend/catalog/genbki.pl5
-rw-r--r--src/backend/utils/Gen_fmgrtab.pl32
-rwxr-xr-xsrc/include/catalog/reformat_dat_file.pl1
-rwxr-xr-xsrc/include/catalog/unused_oids2
5 files changed, 36 insertions, 42 deletions
diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index c8dc956e0b7..95bf619c912 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -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.
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index fb61db0a05f..ebdc919414f 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -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;
diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl
index 1cbc250e0c3..fa30436895b 100644
--- a/src/backend/utils/Gen_fmgrtab.pl
+++ b/src/backend/utils/Gen_fmgrtab.pl
@@ -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);
diff --git a/src/include/catalog/reformat_dat_file.pl b/src/include/catalog/reformat_dat_file.pl
index 00c4f2b0a07..7f6dc6e4c5b 100755
--- a/src/include/catalog/reformat_dat_file.pl
+++ b/src/include/catalog/reformat_dat_file.pl
@@ -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} })
{
diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids
index 2780de052c9..c5fc378ae34 100755
--- a/src/include/catalog/unused_oids
+++ b/src/include/catalog/unused_oids
@@ -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;