aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2018-04-28 16:09:03 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2018-04-28 16:09:03 -0400
commit84549ebd4c4d1941006056cfb2455a4983fb15a2 (patch)
tree8a5f2850455f1be06b020508f50a8ef210185092
parent45c6d75f8cd2399181063b4e0ec11c2664ebeda6 (diff)
downloadpostgresql-84549ebd4c4d1941006056cfb2455a4983fb15a2.tar.gz
postgresql-84549ebd4c4d1941006056cfb2455a4983fb15a2.zip
Tweak reformat_dat_file.pl to make it more easily hand-invokable.
Use the same code we already applied in duplicate_oids and unused_oids to let this script find Catalog.pm without help. This removes the need to supply a -I switch in most cases. Also, mark the script executable, again to follow the precedent of duplicate_oids and unused_oids. Now you can just do "./reformat_dat_file.pl pg_proc.dat" if you want to reformat only one or a few .dat files rather than all. It'd be possible to remove the -I switches in the Makefile's convenience targets, but I chose to leave them: they don't hurt anything, and it's possible that in weird VPATH situations they might be of value.
-rw-r--r--doc/src/sgml/bki.sgml2
-rwxr-xr-x[-rw-r--r--]src/include/catalog/reformat_dat_file.pl26
2 files changed, 15 insertions, 13 deletions
diff --git a/doc/src/sgml/bki.sgml b/doc/src/sgml/bki.sgml
index e7acd652e76..5b557ffb7bf 100644
--- a/doc/src/sgml/bki.sgml
+++ b/doc/src/sgml/bki.sgml
@@ -594,7 +594,7 @@
Run the new script:
<programlisting>
$ cd src/include/catalog
-$ perl -I ../../backend/catalog rewrite_dat_with_prokind.pl pg_proc.dat
+$ perl rewrite_dat_with_prokind.pl pg_proc.dat
</programlisting>
At this point <filename>pg_proc.dat</filename> has all three
columns, <structfield>prokind</structfield>,
diff --git a/src/include/catalog/reformat_dat_file.pl b/src/include/catalog/reformat_dat_file.pl
index 4d2523c1bf4..00c4f2b0a07 100644..100755
--- a/src/include/catalog/reformat_dat_file.pl
+++ b/src/include/catalog/reformat_dat_file.pl
@@ -1,13 +1,14 @@
-#!/usr/bin/perl -w
+#!/usr/bin/perl
#----------------------------------------------------------------------
#
# reformat_dat_file.pl
-# Perl script that reads in a catalog data file and writes out
-# a functionally equivalent file in a standard format.
+# Perl script that reads in catalog data file(s) and writes out
+# functionally equivalent file(s) in a standard format.
#
-# Metadata entries (if any) come first, with normal attributes
-# starting on the following line, in the same order they would be in
-# the corresponding table. Comments and blank lines are preserved.
+# In each entry of a reformatted file, metadata fields (if any) come
+# first, with normal attributes starting on the following line, in
+# the same order as the columns of the corresponding catalog.
+# Comments and blank lines are preserved.
#
# Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
# Portions Copyright (c) 1994, Regents of the University of California
@@ -16,11 +17,15 @@
#
#----------------------------------------------------------------------
-use Catalog;
-
use strict;
use warnings;
+# If you copy this script to somewhere other than src/include/catalog,
+# you'll need to modify this "use lib" or provide a suitable -I switch.
+use FindBin;
+use lib "$FindBin::RealBin/../../backend/catalog/";
+use Catalog;
+
my @input_files;
my $output_path = '';
my $full_tuples = 0;
@@ -293,13 +298,10 @@ sub usage
Usage: reformat_dat_file.pl [options] datafile...
Options:
- -o output path
+ -o PATH write output files to PATH instead of current directory
--full-tuples write out full tuples, including default values
Expects a list of .dat files as arguments.
-Make sure location of Catalog.pm is passed to the perl interpreter:
-perl -I /path/to/Catalog.pm/ ...
-
EOM
}