Remove separate files for the initial contents of pg_(sh)description
This data was only in separate files because it was the most convenient way to handle it with a shell script. Now that we use a general-purpose programming language, it's easy to assemble the data into the same format as the rest of the catalogs and output it into postgres.bki. This allows removal of some special-purpose code from initdb.c. Discussion: https://www.postgresql.org/message-id/CACPNZCtVFtjHre6hg9dput0qRPp39pzuyA2A6BT8wdgrRy%2BQdA%40mail.gmail.com Author: John Naylor
This commit is contained in:
parent
e0ed6817c0
commit
7aaefadaac
|
@ -1,6 +1,4 @@
|
||||||
/postgres.bki
|
/postgres.bki
|
||||||
/postgres.description
|
|
||||||
/postgres.shdescription
|
|
||||||
/schemapg.h
|
/schemapg.h
|
||||||
/pg_*_d.h
|
/pg_*_d.h
|
||||||
/bki-stamp
|
/bki-stamp
|
||||||
|
|
|
@ -44,8 +44,6 @@ OBJS = \
|
||||||
storage.o \
|
storage.o \
|
||||||
toasting.o
|
toasting.o
|
||||||
|
|
||||||
BKIFILES = postgres.bki postgres.description postgres.shdescription
|
|
||||||
|
|
||||||
include $(top_srcdir)/src/backend/common.mk
|
include $(top_srcdir)/src/backend/common.mk
|
||||||
|
|
||||||
# Note: the order of this list determines the order in which the catalog
|
# Note: the order of this list determines the order in which the catalog
|
||||||
|
@ -127,8 +125,6 @@ $(top_builddir)/src/include/catalog/header-stamp: bki-stamp
|
||||||
.PHONY: install-data
|
.PHONY: install-data
|
||||||
install-data: bki-stamp installdirs
|
install-data: bki-stamp installdirs
|
||||||
$(INSTALL_DATA) $(call vpathsearch,postgres.bki) '$(DESTDIR)$(datadir)/postgres.bki'
|
$(INSTALL_DATA) $(call vpathsearch,postgres.bki) '$(DESTDIR)$(datadir)/postgres.bki'
|
||||||
$(INSTALL_DATA) $(call vpathsearch,postgres.description) '$(DESTDIR)$(datadir)/postgres.description'
|
|
||||||
$(INSTALL_DATA) $(call vpathsearch,postgres.shdescription) '$(DESTDIR)$(datadir)/postgres.shdescription'
|
|
||||||
$(INSTALL_DATA) $(srcdir)/system_views.sql '$(DESTDIR)$(datadir)/system_views.sql'
|
$(INSTALL_DATA) $(srcdir)/system_views.sql '$(DESTDIR)$(datadir)/system_views.sql'
|
||||||
$(INSTALL_DATA) $(srcdir)/information_schema.sql '$(DESTDIR)$(datadir)/information_schema.sql'
|
$(INSTALL_DATA) $(srcdir)/information_schema.sql '$(DESTDIR)$(datadir)/information_schema.sql'
|
||||||
$(INSTALL_DATA) $(srcdir)/sql_features.txt '$(DESTDIR)$(datadir)/sql_features.txt'
|
$(INSTALL_DATA) $(srcdir)/sql_features.txt '$(DESTDIR)$(datadir)/sql_features.txt'
|
||||||
|
@ -138,12 +134,11 @@ installdirs:
|
||||||
|
|
||||||
.PHONY: uninstall-data
|
.PHONY: uninstall-data
|
||||||
uninstall-data:
|
uninstall-data:
|
||||||
rm -f $(addprefix '$(DESTDIR)$(datadir)'/, $(BKIFILES) system_views.sql information_schema.sql sql_features.txt)
|
rm -f $(addprefix '$(DESTDIR)$(datadir)'/, postgres.bki system_views.sql information_schema.sql sql_features.txt)
|
||||||
|
|
||||||
# postgres.bki, postgres.description, postgres.shdescription,
|
# postgres.bki and the generated headers are in the distribution tarball,
|
||||||
# and the generated headers are in the distribution tarball,
|
|
||||||
# so they are not cleaned here.
|
# so they are not cleaned here.
|
||||||
clean:
|
clean:
|
||||||
|
|
||||||
maintainer-clean: clean
|
maintainer-clean: clean
|
||||||
rm -f bki-stamp $(BKIFILES) $(GENERATED_HEADERS)
|
rm -f bki-stamp postgres.bki $(GENERATED_HEADERS)
|
||||||
|
|
|
@ -2,10 +2,9 @@
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# genbki.pl
|
# genbki.pl
|
||||||
# Perl script that generates postgres.bki, postgres.description,
|
# Perl script that generates postgres.bki and symbol definition
|
||||||
# postgres.shdescription, and symbol definition headers from specially
|
# headers from specially formatted header files and data files.
|
||||||
# formatted header files and data files. The BKI files are used to
|
# postgres.bki is used to initialize the postgres template database.
|
||||||
# initialize the postgres template database.
|
|
||||||
#
|
#
|
||||||
# Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
# Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
||||||
# Portions Copyright (c) 1994, Regents of the University of California
|
# Portions Copyright (c) 1994, Regents of the University of California
|
||||||
|
@ -93,9 +92,29 @@ foreach my $header (@ARGV)
|
||||||
my $data = Catalog::ParseData($datfile, $schema, 0);
|
my $data = Catalog::ParseData($datfile, $schema, 0);
|
||||||
$catalog_data{$catname} = $data;
|
$catalog_data{$catname} = $data;
|
||||||
|
|
||||||
# Check for duplicated OIDs while we're at it.
|
|
||||||
foreach my $row (@$data)
|
foreach my $row (@$data)
|
||||||
{
|
{
|
||||||
|
# Generate entries for pg_description and pg_shdescription.
|
||||||
|
if (defined $row->{descr})
|
||||||
|
{
|
||||||
|
my %descr = (
|
||||||
|
objoid => $row->{oid},
|
||||||
|
classoid => $catalog->{relation_oid},
|
||||||
|
objsubid => 0,
|
||||||
|
description => $row->{descr});
|
||||||
|
|
||||||
|
if ($catalog->{shared_relation})
|
||||||
|
{
|
||||||
|
delete $descr{objsubid};
|
||||||
|
push @{ $catalog_data{pg_shdescription} }, \%descr;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
push @{ $catalog_data{pg_description}}, \%descr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for duplicated OIDs while we're at it.
|
||||||
$oidcounts{ $row->{oid} }++ if defined $row->{oid};
|
$oidcounts{ $row->{oid} }++ if defined $row->{oid};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -361,15 +380,8 @@ open my $bki, '>', $bkifile . $tmpext
|
||||||
my $schemafile = $output_path . 'schemapg.h';
|
my $schemafile = $output_path . 'schemapg.h';
|
||||||
open my $schemapg, '>', $schemafile . $tmpext
|
open my $schemapg, '>', $schemafile . $tmpext
|
||||||
or die "can't open $schemafile$tmpext: $!";
|
or die "can't open $schemafile$tmpext: $!";
|
||||||
my $descrfile = $output_path . 'postgres.description';
|
|
||||||
open my $descr, '>', $descrfile . $tmpext
|
|
||||||
or die "can't open $descrfile$tmpext: $!";
|
|
||||||
my $shdescrfile = $output_path . 'postgres.shdescription';
|
|
||||||
open my $shdescr, '>', $shdescrfile . $tmpext
|
|
||||||
or die "can't open $shdescrfile$tmpext: $!";
|
|
||||||
|
|
||||||
# Generate postgres.bki, postgres.description, postgres.shdescription,
|
# Generate postgres.bki and pg_*_d.h headers.
|
||||||
# and pg_*_d.h headers.
|
|
||||||
|
|
||||||
# version marker for .bki file
|
# version marker for .bki file
|
||||||
print $bki "# PostgreSQL $major_version\n";
|
print $bki "# PostgreSQL $major_version\n";
|
||||||
|
@ -579,22 +591,6 @@ EOM
|
||||||
# Write to postgres.bki
|
# Write to postgres.bki
|
||||||
print_bki_insert(\%bki_values, $schema);
|
print_bki_insert(\%bki_values, $schema);
|
||||||
|
|
||||||
# Write comments to postgres.description and
|
|
||||||
# postgres.shdescription
|
|
||||||
if (defined $bki_values{descr})
|
|
||||||
{
|
|
||||||
if ($catalog->{shared_relation})
|
|
||||||
{
|
|
||||||
printf $shdescr "%s\t%s\t%s\n",
|
|
||||||
$bki_values{oid}, $catname, $bki_values{descr};
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printf $descr "%s\t%s\t0\t%s\n",
|
|
||||||
$bki_values{oid}, $catname, $bki_values{descr};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Emit OID symbol
|
# Emit OID symbol
|
||||||
if (defined $bki_values{oid_symbol})
|
if (defined $bki_values{oid_symbol})
|
||||||
{
|
{
|
||||||
|
@ -673,14 +669,10 @@ print $schemapg "\n#endif\t\t\t\t\t\t\t/* SCHEMAPG_H */\n";
|
||||||
# We're done emitting data
|
# We're done emitting data
|
||||||
close $bki;
|
close $bki;
|
||||||
close $schemapg;
|
close $schemapg;
|
||||||
close $descr;
|
|
||||||
close $shdescr;
|
|
||||||
|
|
||||||
# Finally, rename the completed files into place.
|
# Finally, rename the completed files into place.
|
||||||
Catalog::RenameTempFile($bkifile, $tmpext);
|
Catalog::RenameTempFile($bkifile, $tmpext);
|
||||||
Catalog::RenameTempFile($schemafile, $tmpext);
|
Catalog::RenameTempFile($schemafile, $tmpext);
|
||||||
Catalog::RenameTempFile($descrfile, $tmpext);
|
|
||||||
Catalog::RenameTempFile($shdescrfile, $tmpext);
|
|
||||||
|
|
||||||
exit 0;
|
exit 0;
|
||||||
|
|
||||||
|
@ -967,9 +959,9 @@ Options:
|
||||||
--set-version PostgreSQL version number for initdb cross-check
|
--set-version PostgreSQL version number for initdb cross-check
|
||||||
--include-path Include path in source tree
|
--include-path Include path in source tree
|
||||||
|
|
||||||
genbki.pl generates BKI files and symbol definition
|
genbki.pl generates postgres.bki and symbol definition
|
||||||
headers from specially formatted header files and .dat
|
headers from specially formatted header files and .dat
|
||||||
files. The BKI files are used to initialize the
|
files. postgres.bki is used to initialize the
|
||||||
postgres template database.
|
postgres template database.
|
||||||
|
|
||||||
Report bugs to <pgsql-bugs\@lists.postgresql.org>.
|
Report bugs to <pgsql-bugs\@lists.postgresql.org>.
|
||||||
|
|
|
@ -151,8 +151,6 @@ static int wal_segment_size_mb;
|
||||||
static const char *progname;
|
static const char *progname;
|
||||||
static int encodingid;
|
static int encodingid;
|
||||||
static char *bki_file;
|
static char *bki_file;
|
||||||
static char *desc_file;
|
|
||||||
static char *shdesc_file;
|
|
||||||
static char *hba_file;
|
static char *hba_file;
|
||||||
static char *ident_file;
|
static char *ident_file;
|
||||||
static char *conf_file;
|
static char *conf_file;
|
||||||
|
@ -1644,38 +1642,11 @@ setup_sysviews(FILE *cmdfd)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* load description data
|
* fill in extra description data
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
setup_description(FILE *cmdfd)
|
setup_description(FILE *cmdfd)
|
||||||
{
|
{
|
||||||
PG_CMD_PUTS("CREATE TEMP TABLE tmp_pg_description ( "
|
|
||||||
" objoid oid, "
|
|
||||||
" classname name, "
|
|
||||||
" objsubid int4, "
|
|
||||||
" description text);\n\n");
|
|
||||||
|
|
||||||
PG_CMD_PRINTF("COPY tmp_pg_description FROM E'%s';\n\n",
|
|
||||||
escape_quotes(desc_file));
|
|
||||||
|
|
||||||
PG_CMD_PUTS("INSERT INTO pg_description "
|
|
||||||
" SELECT t.objoid, c.oid, t.objsubid, t.description "
|
|
||||||
" FROM tmp_pg_description t, pg_class c "
|
|
||||||
" WHERE c.relname = t.classname;\n\n");
|
|
||||||
|
|
||||||
PG_CMD_PUTS("CREATE TEMP TABLE tmp_pg_shdescription ( "
|
|
||||||
" objoid oid, "
|
|
||||||
" classname name, "
|
|
||||||
" description text);\n\n");
|
|
||||||
|
|
||||||
PG_CMD_PRINTF("COPY tmp_pg_shdescription FROM E'%s';\n\n",
|
|
||||||
escape_quotes(shdesc_file));
|
|
||||||
|
|
||||||
PG_CMD_PUTS("INSERT INTO pg_shdescription "
|
|
||||||
" SELECT t.objoid, c.oid, t.description "
|
|
||||||
" FROM tmp_pg_shdescription t, pg_class c "
|
|
||||||
" WHERE c.relname = t.classname;\n\n");
|
|
||||||
|
|
||||||
/* Create default descriptions for operator implementation functions */
|
/* Create default descriptions for operator implementation functions */
|
||||||
PG_CMD_PUTS("WITH funcdescs AS ( "
|
PG_CMD_PUTS("WITH funcdescs AS ( "
|
||||||
"SELECT p.oid as p_oid, o.oid as o_oid, oprname "
|
"SELECT p.oid as p_oid, o.oid as o_oid, oprname "
|
||||||
|
@ -1689,13 +1660,6 @@ setup_description(FILE *cmdfd)
|
||||||
" AND NOT EXISTS (SELECT 1 FROM pg_description "
|
" AND NOT EXISTS (SELECT 1 FROM pg_description "
|
||||||
" WHERE objoid = o_oid AND classoid = 'pg_operator'::regclass"
|
" WHERE objoid = o_oid AND classoid = 'pg_operator'::regclass"
|
||||||
" AND description LIKE 'deprecated%');\n\n");
|
" AND description LIKE 'deprecated%');\n\n");
|
||||||
|
|
||||||
/*
|
|
||||||
* Even though the tables are temp, drop them explicitly so they don't get
|
|
||||||
* copied into template0/postgres databases.
|
|
||||||
*/
|
|
||||||
PG_CMD_PUTS("DROP TABLE tmp_pg_description;\n\n");
|
|
||||||
PG_CMD_PUTS("DROP TABLE tmp_pg_shdescription;\n\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2586,8 +2550,6 @@ void
|
||||||
setup_data_file_paths(void)
|
setup_data_file_paths(void)
|
||||||
{
|
{
|
||||||
set_input(&bki_file, "postgres.bki");
|
set_input(&bki_file, "postgres.bki");
|
||||||
set_input(&desc_file, "postgres.description");
|
|
||||||
set_input(&shdesc_file, "postgres.shdescription");
|
|
||||||
set_input(&hba_file, "pg_hba.conf.sample");
|
set_input(&hba_file, "pg_hba.conf.sample");
|
||||||
set_input(&ident_file, "pg_ident.conf.sample");
|
set_input(&ident_file, "pg_ident.conf.sample");
|
||||||
set_input(&conf_file, "postgresql.conf.sample");
|
set_input(&conf_file, "postgresql.conf.sample");
|
||||||
|
@ -2602,13 +2564,11 @@ setup_data_file_paths(void)
|
||||||
"VERSION=%s\n"
|
"VERSION=%s\n"
|
||||||
"PGDATA=%s\nshare_path=%s\nPGPATH=%s\n"
|
"PGDATA=%s\nshare_path=%s\nPGPATH=%s\n"
|
||||||
"POSTGRES_SUPERUSERNAME=%s\nPOSTGRES_BKI=%s\n"
|
"POSTGRES_SUPERUSERNAME=%s\nPOSTGRES_BKI=%s\n"
|
||||||
"POSTGRES_DESCR=%s\nPOSTGRES_SHDESCR=%s\n"
|
|
||||||
"POSTGRESQL_CONF_SAMPLE=%s\n"
|
"POSTGRESQL_CONF_SAMPLE=%s\n"
|
||||||
"PG_HBA_SAMPLE=%s\nPG_IDENT_SAMPLE=%s\n",
|
"PG_HBA_SAMPLE=%s\nPG_IDENT_SAMPLE=%s\n",
|
||||||
PG_VERSION,
|
PG_VERSION,
|
||||||
pg_data, share_path, bin_path,
|
pg_data, share_path, bin_path,
|
||||||
username, bki_file,
|
username, bki_file,
|
||||||
desc_file, shdesc_file,
|
|
||||||
conf_file,
|
conf_file,
|
||||||
hba_file, ident_file);
|
hba_file, ident_file);
|
||||||
if (show_setting)
|
if (show_setting)
|
||||||
|
@ -2616,8 +2576,6 @@ setup_data_file_paths(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
check_input(bki_file);
|
check_input(bki_file);
|
||||||
check_input(desc_file);
|
|
||||||
check_input(shdesc_file);
|
|
||||||
check_input(hba_file);
|
check_input(hba_file);
|
||||||
check_input(ident_file);
|
check_input(ident_file);
|
||||||
check_input(conf_file);
|
check_input(conf_file);
|
||||||
|
|
|
@ -71,8 +71,6 @@ if %DIST%==1 if exist src\interfaces\ecpg\preproc\c_kwlist_d.h del /q src\interf
|
||||||
if %DIST%==1 if exist src\interfaces\ecpg\preproc\ecpg_kwlist_d.h del /q src\interfaces\ecpg\preproc\ecpg_kwlist_d.h
|
if %DIST%==1 if exist src\interfaces\ecpg\preproc\ecpg_kwlist_d.h del /q src\interfaces\ecpg\preproc\ecpg_kwlist_d.h
|
||||||
if %DIST%==1 if exist src\interfaces\ecpg\preproc\preproc.y del /q src\interfaces\ecpg\preproc\preproc.y
|
if %DIST%==1 if exist src\interfaces\ecpg\preproc\preproc.y del /q src\interfaces\ecpg\preproc\preproc.y
|
||||||
if %DIST%==1 if exist src\backend\catalog\postgres.bki del /q src\backend\catalog\postgres.bki
|
if %DIST%==1 if exist src\backend\catalog\postgres.bki del /q src\backend\catalog\postgres.bki
|
||||||
if %DIST%==1 if exist src\backend\catalog\postgres.description del /q src\backend\catalog\postgres.description
|
|
||||||
if %DIST%==1 if exist src\backend\catalog\postgres.shdescription del /q src\backend\catalog\postgres.shdescription
|
|
||||||
if %DIST%==1 if exist src\backend\catalog\schemapg.h del /q src\backend\catalog\schemapg.h
|
if %DIST%==1 if exist src\backend\catalog\schemapg.h del /q src\backend\catalog\schemapg.h
|
||||||
if %DIST%==1 if exist src\backend\catalog\pg_*_d.h del /q src\backend\catalog\pg_*_d.h
|
if %DIST%==1 if exist src\backend\catalog\pg_*_d.h del /q src\backend\catalog\pg_*_d.h
|
||||||
if %DIST%==1 if exist src\backend\catalog\bki-stamp del /q src\backend\catalog\bki-stamp
|
if %DIST%==1 if exist src\backend\catalog\bki-stamp del /q src\backend\catalog\bki-stamp
|
||||||
|
|
Loading…
Reference in New Issue