Move the built-in conversions into the initial catalog data

Enterprise / PostgreSQL - Tom Lane [] - 4 January 2019 00:47 EST

Instead of running a SQL script to create the standard conversion functions and pg_conversion entries, put those entries into the initial data in postgres.bki.

This shaves a few percent off the runtime of initdb, and also allows accurate comments to be attached to the conversion functions; the previous script labeled them with machine-generated comments that were not quite right for multi-purpose conversion functions. Also, we can get rid of the duplicative Makefile and MSVC perl implementations of the generation code for that SQL script.

A functional change is that these pg_proc and pg_conversion entries are now "pinned" by initdb. Leaving them unpinned was perhaps a good thing back while the conversions feature was under development, but there seems no valid reason for it now.

Also, the conversion functions are now marked as immutable, where before they were volatile by virtue of lacking any explicit specification. That seems like it was just an oversight.

To avoid using magic constants in pg_conversion.dat, extend to allow encoding names to be converted, much as it does for language, access method, etc names.

John Naylor


d33faa285b Move the built-in conversions into the initial catalog data.
doc/src/sgml/bki.sgml | 9 +-
src/backend/catalog/Makefile | 2 +-
src/backend/catalog/ | 47 ++-
src/backend/utils/mb/conversion_procs/.gitignore | 1 -
src/backend/utils/mb/conversion_procs/Makefile | 179 +---------
src/bin/initdb/initdb.c | 26 --
src/include/catalog/catversion.h | 2 +-
src/include/catalog/genbki.h | 5 +-
src/include/catalog/pg_conversion.dat | 417 +++++++++++++++++++++++
src/include/catalog/pg_conversion.h | 47 +--
src/include/catalog/pg_proc.dat | 410 +++++++++++++++++++++-
src/test/regress/expected/misc_sanity.out | 1 -
src/tools/msvc/ | 39 ---
13 files changed, 912 insertions(+), 273 deletions(-)


  • Share