mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-08 20:29:21 +02:00
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 8137f2c323
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
54 lines
1.8 KiB
C
54 lines
1.8 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* genbki.h
|
|
* Required include file for all POSTGRES catalog header files
|
|
*
|
|
* genbki.h defines CATALOG(), DATA(), BKI_BOOTSTRAP and related macros
|
|
* so that the catalog header files can be read by the C compiler.
|
|
* (These same words are recognized by genbki.pl to build the BKI
|
|
* bootstrap file from these header files.)
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* src/include/catalog/genbki.h
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef GENBKI_H
|
|
#define GENBKI_H
|
|
|
|
/* Introduces a catalog's structure definition */
|
|
#define CATALOG(name,oid) typedef struct CppConcat(FormData_,name)
|
|
|
|
/* Options that may appear after CATALOG (on the same line) */
|
|
#define BKI_BOOTSTRAP
|
|
#define BKI_SHARED_RELATION
|
|
#define BKI_WITHOUT_OIDS
|
|
#define BKI_ROWTYPE_OID(oid)
|
|
#define BKI_SCHEMA_MACRO
|
|
#define BKI_FORCE_NULL
|
|
#define BKI_FORCE_NOT_NULL
|
|
|
|
/* Specifies a default value for a catalog field */
|
|
#define BKI_DEFAULT(value)
|
|
|
|
/*
|
|
* This is never defined; it's here only for documentation.
|
|
*
|
|
* Variable-length catalog fields (except possibly the first not nullable one)
|
|
* should not be visible in C structures, so they are made invisible by #ifdefs
|
|
* of an undefined symbol. See also MARKNOTNULL in bootstrap.c for how this is
|
|
* handled.
|
|
*/
|
|
#undef CATALOG_VARLEN
|
|
|
|
/* Declarations that provide the initial content of a catalog */
|
|
/* In C, these need to expand into some harmless, repeatable declaration */
|
|
#define DATA(x) extern int no_such_variable
|
|
#define DESCR(x) extern int no_such_variable
|
|
#define SHDESCR(x) extern int no_such_variable
|
|
|
|
#endif /* GENBKI_H */
|