Remove hard-coded schema knowledge about pg_attribute from genbki.pl

Alvaro Herrera <alvherre@alvh.no-ip.org>

Commit: 49c784ece766781250224a371be14af71e7eda93
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: 2018-01-12T14:21:42Z
Releases: 11.0
Remove hard-coded schema knowledge about pg_attribute from genbki.pl

Add the ability to label a column's default value in the catalog header,
and implement this for pg_attribute.  A new function in Catalog.pm is
used to fill in a tuple with defaults.  The build process will complain
loudly if a catalog entry is incomplete,

Commit 8137f2c3232 labeled variable length columns for the C preprocessor.
Expose that label to genbki.pl so we can exclude those columns from schema
macros in a general fashion. Also, format schema macro entries according
to their types.

This means slightly less code maintenance, but more importantly it's a
proving ground for mechanisms intended to be used in later commits.

While at it, I (Álvaro) couldn't resist making some changes in
genbki.pl: rename some functions to actually indicate their purpose
instead of actively misleading onlookers; and don't iterate on the whole
of pg_type to find the entry for each catalog row, using a hash instead
of an array.

Author: John Naylor, some changes by Álvaro Herrera
Discussion: https://postgr.es/m/CAJVSVGVJHwD8sfDfZW9TbCHWKf=C1YDRM-rF=2JenRU_y+VcFg@mail.gmail.com

Files

PathChange+/−
src/backend/catalog/Catalog.pm modified +65 −5
src/backend/catalog/genbki.pl modified +108 −120
src/include/catalog/genbki.h modified +3 −0
src/include/catalog/pg_attribute.h modified +11 −11

Discussion