_ACEOF
-# The cast to long int works around a bug in the HP C Compiler,
-# see AC_CHECK_SIZEOF for more information.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking alignment of long" >&5
-$as_echo_n "checking alignment of long... " >&6; }
-if ${ac_cv_alignof_long+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_long" "$ac_includes_default
-#ifndef offsetof
-# define offsetof(type, member) ((char *) &((type *) 0)->member - (char *) 0)
-#endif
-typedef struct { char x; long y; } ac__type_alignof_;"; then :
-
-else
- if test "$ac_cv_type_long" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "cannot compute alignment of long
-See \`config.log' for more details" "$LINENO" 5; }
- else
- ac_cv_alignof_long=0
- fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_long" >&5
-$as_echo "$ac_cv_alignof_long" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define ALIGNOF_LONG $ac_cv_alignof_long
-_ACEOF
-
-
# The cast to long int works around a bug in the HP C Compiler,
# see AC_CHECK_SIZEOF for more information.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking alignment of int64_t" >&5
# Compute maximum alignment of any basic type.
#
-# We require 'double' to have the strictest alignment among the basic types,
-# because otherwise the C ABI might impose 8-byte alignment on some of the
-# other C types that correspond to TYPALIGN_DOUBLE SQL types. That could
-# cause a mismatch between the tuple layout and the C struct layout of a
-# catalog tuple. We used to carefully order catalog columns such that any
-# fixed-width, attalign=4 columns were at offsets divisible by 8 regardless
-# of MAXIMUM_ALIGNOF to avoid that, but we no longer support any platforms
-# where TYPALIGN_DOUBLE != MAXIMUM_ALIGNOF.
-#
-# We assume without checking that long's alignment is at least as strong as
-# char, short, or int. Note that we intentionally do not consider any types
-# wider than 64 bits, as allowing MAXIMUM_ALIGNOF to exceed 8 would be too
-# much of a penalty for disk and memory space.
-
-MAX_ALIGNOF=$ac_cv_alignof_double
-
-if test $ac_cv_alignof_long -gt $MAX_ALIGNOF ; then
- as_fn_error $? "alignment of 'long' is greater than the alignment of 'double'" "$LINENO" 5
-fi
-if test $ac_cv_alignof_int64_t -gt $MAX_ALIGNOF ; then
- as_fn_error $? "alignment of 'int64_t' is greater than the alignment of 'double'" "$LINENO" 5
+# We assume without checking that the maximum alignment requirement is that
+# of int64_t and/or double. (On most platforms those are the same, but not
+# everywhere.) For historical reasons, both int8 and float8 datatypes have
+# typalign 'd', and therefore will be aligned per ALIGNOF_DOUBLE in database
+# tuples even if ALIGNOF_INT64_T is more. Note that we intentionally do not
+# consider any types wider than 64 bits, as allowing MAXIMUM_ALIGNOF to exceed
+# 8 would be too much of a penalty for disk and memory space.
+
+if test $ac_cv_alignof_int64_t -gt $ac_cv_alignof_double ; then
+ MAX_ALIGNOF=$ac_cv_alignof_int64_t
+else
+ MAX_ALIGNOF=$ac_cv_alignof_double
fi
cat >>confdefs.h <<_ACEOF
AC_CHECK_ALIGNOF(short)
AC_CHECK_ALIGNOF(int)
-AC_CHECK_ALIGNOF(long)
AC_CHECK_ALIGNOF(int64_t)
AC_CHECK_ALIGNOF(double)
# Compute maximum alignment of any basic type.
#
-# We require 'double' to have the strictest alignment among the basic types,
-# because otherwise the C ABI might impose 8-byte alignment on some of the
-# other C types that correspond to TYPALIGN_DOUBLE SQL types. That could
-# cause a mismatch between the tuple layout and the C struct layout of a
-# catalog tuple. We used to carefully order catalog columns such that any
-# fixed-width, attalign=4 columns were at offsets divisible by 8 regardless
-# of MAXIMUM_ALIGNOF to avoid that, but we no longer support any platforms
-# where TYPALIGN_DOUBLE != MAXIMUM_ALIGNOF.
-#
-# We assume without checking that long's alignment is at least as strong as
-# char, short, or int. Note that we intentionally do not consider any types
-# wider than 64 bits, as allowing MAXIMUM_ALIGNOF to exceed 8 would be too
-# much of a penalty for disk and memory space.
-
-MAX_ALIGNOF=$ac_cv_alignof_double
+# We assume without checking that the maximum alignment requirement is that
+# of int64_t and/or double. (On most platforms those are the same, but not
+# everywhere.) For historical reasons, both int8 and float8 datatypes have
+# typalign 'd', and therefore will be aligned per ALIGNOF_DOUBLE in database
+# tuples even if ALIGNOF_INT64_T is more. Note that we intentionally do not
+# consider any types wider than 64 bits, as allowing MAXIMUM_ALIGNOF to exceed
+# 8 would be too much of a penalty for disk and memory space.
-if test $ac_cv_alignof_long -gt $MAX_ALIGNOF ; then
- AC_MSG_ERROR([alignment of 'long' is greater than the alignment of 'double'])
-fi
-if test $ac_cv_alignof_int64_t -gt $MAX_ALIGNOF ; then
- AC_MSG_ERROR([alignment of 'int64_t' is greater than the alignment of 'double'])
+if test $ac_cv_alignof_int64_t -gt $ac_cv_alignof_double ; then
+ MAX_ALIGNOF=$ac_cv_alignof_int64_t
+else
+ MAX_ALIGNOF=$ac_cv_alignof_double
fi
AC_DEFINE_UNQUOTED(MAXIMUM_ALIGNOF, $MAX_ALIGNOF, [Define as the maximum alignment requirement of any C data type.])
# Determine memory alignment requirements for the basic C data types.
-alignof_types = ['short', 'int', 'long', 'double']
+alignof_types = ['short', 'int', 'int64_t', 'double']
foreach t : alignof_types
- align = cc.alignment(t, args: test_c_args)
+ align = cc.alignment(t, args: test_c_args, prefix: '#include <stdint.h>')
cdata.set('ALIGNOF_@0@'.format(t.to_upper()), align)
endforeach
# Compute maximum alignment of any basic type.
#
-# We require 'double' to have the strictest alignment among the basic types,
-# because otherwise the C ABI might impose 8-byte alignment on some of the
-# other C types that correspond to TYPALIGN_DOUBLE SQL types. That could
-# cause a mismatch between the tuple layout and the C struct layout of a
-# catalog tuple. We used to carefully order catalog columns such that any
-# fixed-width, attalign=4 columns were at offsets divisible by 8 regardless
-# of MAXIMUM_ALIGNOF to avoid that, but we no longer support any platforms
-# where TYPALIGN_DOUBLE != MAXIMUM_ALIGNOF.
-#
-# We assume without checking that int64_t's alignment is at least as strong
-# as long, char, short, or int. Note that we intentionally do not consider
-# any types wider than 64 bits, as allowing MAXIMUM_ALIGNOF to exceed 8
-# would be too much of a penalty for disk and memory space.
+# We assume without checking that the maximum alignment requirement is that
+# of int64_t and/or double. (On most platforms those are the same, but not
+# everywhere.) For historical reasons, both int8 and float8 datatypes have
+# typalign 'd', and therefore will be aligned per ALIGNOF_DOUBLE in database
+# tuples even if ALIGNOF_INT64_T is more. Note that we intentionally do not
+# consider any types wider than 64 bits, as allowing MAXIMUM_ALIGNOF to exceed
+# 8 would be too much of a penalty for disk and memory space.
+
+alignof_int64_t = cdata.get('ALIGNOF_INT64_T')
alignof_double = cdata.get('ALIGNOF_DOUBLE')
-if cc.alignment('int64_t', args: test_c_args, prefix: '#include <stdint.h>') > alignof_double
- error('alignment of int64_t is greater than the alignment of double')
+if alignof_int64_t > alignof_double
+ cdata.set('MAXIMUM_ALIGNOF', alignof_int64_t)
+else
+ cdata.set('MAXIMUM_ALIGNOF', alignof_double)
endif
-cdata.set('MAXIMUM_ALIGNOF', alignof_double)
cdata.set('SIZEOF_LONG', cc.sizeof('long', args: test_c_args))
cdata.set('SIZEOF_LONG_LONG', cc.sizeof('long long', args: test_c_args))
#define SHORTALIGN(LEN) TYPEALIGN(ALIGNOF_SHORT, (LEN))
#define INTALIGN(LEN) TYPEALIGN(ALIGNOF_INT, (LEN))
-#define LONGALIGN(LEN) TYPEALIGN(ALIGNOF_LONG, (LEN))
+#define INT64ALIGN(LEN) TYPEALIGN(ALIGNOF_INT64_T, (LEN))
#define DOUBLEALIGN(LEN) TYPEALIGN(ALIGNOF_DOUBLE, (LEN))
#define MAXALIGN(LEN) TYPEALIGN(MAXIMUM_ALIGNOF, (LEN))
/* MAXALIGN covers only built-in types, not buffers */
#define SHORTALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_SHORT, (LEN))
#define INTALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_INT, (LEN))
-#define LONGALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_LONG, (LEN))
+#define INT64ALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_INT64_T, (LEN))
#define DOUBLEALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_DOUBLE, (LEN))
#define MAXALIGN_DOWN(LEN) TYPEALIGN_DOWN(MAXIMUM_ALIGNOF, (LEN))
#define BUFFERALIGN_DOWN(LEN) TYPEALIGN_DOWN(ALIGNOF_BUFFER, (LEN))
#ifndef GENBKI_H
#define GENBKI_H
+/*
+ * These macros should be written before and after each catalog structure
+ * definition. On most platforms they do nothing, but on some platforms
+ * we need special hacks to coax the compiler into laying out the catalog
+ * struct compatibly with our tuple forming/deforming rules.
+ *
+ * On AIX, where ALIGNOF_DOUBLE < ALIGNOF_INT64_T, we need to coerce int64
+ * catalog fields to be aligned on just 4-byte boundaries. Ideally we'd
+ * write this like pack(push,ALIGNOF_DOUBLE), but gcc seems unwilling
+ * to take anything but a plain string literal as the argument of _Pragma.
+ */
+#if ALIGNOF_DOUBLE < ALIGNOF_INT64_T
+#define BEGIN_CATALOG_STRUCT _Pragma("pack(push,4)")
+#define END_CATALOG_STRUCT _Pragma("pack(pop)")
+#else
+#define BEGIN_CATALOG_STRUCT
+#define END_CATALOG_STRUCT
+#endif
+
/* Introduces a catalog's structure definition */
#define CATALOG(name,oid,oidmacro) typedef struct CppConcat(FormData_,name)
* cpp turns this into typedef struct FormData_pg_aggregate
* ----------------------------------------------------------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_aggregate,2600,AggregateRelationId)
{
/* pg_proc OID of the aggregate itself */
#endif
} FormData_pg_aggregate;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_aggregate corresponds to a pointer to a tuple with
* the format of pg_aggregate relation.
* typedef struct FormData_pg_am
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_am,2601,AccessMethodRelationId)
{
Oid oid; /* oid */
char amtype;
} FormData_pg_am;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_am corresponds to a pointer to a tuple with
* the format of pg_am relation.
* typedef struct FormData_pg_amop
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_amop,2602,AccessMethodOperatorRelationId)
{
Oid oid; /* oid */
Oid amopsortfamily BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_opfamily);
} FormData_pg_amop;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_amop corresponds to a pointer to a tuple with
* the format of pg_amop relation.
* typedef struct FormData_pg_amproc
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_amproc,2603,AccessMethodProcedureRelationId)
{
Oid oid; /* oid */
regproc amproc BKI_LOOKUP(pg_proc);
} FormData_pg_amproc;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_amproc corresponds to a pointer to a tuple with
* the format of pg_amproc relation.
* typedef struct FormData_pg_attrdef
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_attrdef,2604,AttrDefaultRelationId)
{
Oid oid; /* oid */
#endif
} FormData_pg_attrdef;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_attrdef corresponds to a pointer to a tuple with
* the format of pg_attrdef relation.
* You may need to change catalog/genbki.pl as well.
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,AttributeRelation_Rowtype_Id) BKI_SCHEMA_MACRO
{
Oid attrelid BKI_LOOKUP(pg_class); /* OID of relation containing
#endif
} FormData_pg_attribute;
+END_CATALOG_STRUCT
+
/*
* ATTRIBUTE_FIXED_PART_SIZE is the size of the fixed-layout,
* guaranteed-not-null part of a pg_attribute row. This is in fact as much
* typedef struct FormData_pg_auth_members
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_auth_members,1261,AuthMemRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2843,AuthMemRelation_Rowtype_Id) BKI_SCHEMA_MACRO
{
Oid oid; /* oid */
bool set_option; /* use SET ROLE to the target role? */
} FormData_pg_auth_members;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_auth_members corresponds to a pointer to a tuple with
* the format of pg_auth_members relation.
* typedef struct FormData_pg_authid
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_authid,1260,AuthIdRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(2842,AuthIdRelation_Rowtype_Id) BKI_SCHEMA_MACRO
{
Oid oid; /* oid */
#endif
} FormData_pg_authid;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_authid corresponds to a pointer to a tuple with
* the format of pg_authid relation.
* typedef struct FormData_pg_cast
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_cast,2605,CastRelationId)
{
Oid oid; /* oid */
char castmethod;
} FormData_pg_cast;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_cast corresponds to a pointer to a tuple with
* the format of pg_cast relation.
* BKI_BOOTSTRAP catalogs, since only those rows appear in pg_class.dat.
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,RelationRelation_Rowtype_Id) BKI_SCHEMA_MACRO
{
/* oid */
#endif
} FormData_pg_class;
+END_CATALOG_STRUCT
+
/* Size of fixed part of pg_class tuples, not counting var-length fields */
#define CLASS_TUPLE_SIZE \
(offsetof(FormData_pg_class,relminmxid) + sizeof(TransactionId))
* typedef struct FormData_pg_collation
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_collation,3456,CollationRelationId)
{
Oid oid; /* oid */
#endif
} FormData_pg_collation;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_collation corresponds to a pointer to a row with
* the format of pg_collation relation.
* typedef struct FormData_pg_constraint
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_constraint,2606,ConstraintRelationId)
{
Oid oid; /* oid */
#endif
} FormData_pg_constraint;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_constraint corresponds to a pointer to a tuple with
* the format of pg_constraint relation.
* typedef struct FormData_pg_conversion
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_conversion,2607,ConversionRelationId)
{
/* oid */
bool condefault BKI_DEFAULT(t);
} FormData_pg_conversion;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_conversion corresponds to a pointer to a tuple with
* the format of pg_conversion relation.
* typedef struct FormData_pg_database
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_database,1262,DatabaseRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(1248,DatabaseRelation_Rowtype_Id) BKI_SCHEMA_MACRO
{
/* oid */
#endif
} FormData_pg_database;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_database corresponds to a pointer to a tuple with
* the format of pg_database relation.
* typedef struct FormData_pg_db_role_setting
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_db_role_setting,2964,DbRoleSettingRelationId) BKI_SHARED_RELATION
{
/* database, or 0 for a role-specific setting */
#endif
} FormData_pg_db_role_setting;
+END_CATALOG_STRUCT
+
typedef FormData_pg_db_role_setting * Form_pg_db_role_setting;
DECLARE_TOAST_WITH_MACRO(pg_db_role_setting, 2966, 2967, PgDbRoleSettingToastTable, PgDbRoleSettingToastIndex);
* typedef struct FormData_pg_default_acl
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_default_acl,826,DefaultAclRelationId)
{
Oid oid; /* oid */
#endif
} FormData_pg_default_acl;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_default_acl corresponds to a pointer to a tuple with
* the format of pg_default_acl relation.
* typedef struct FormData_pg_depend
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_depend,2608,DependRelationId)
{
/*
char deptype; /* see codes in dependency.h */
} FormData_pg_depend;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_depend corresponds to a pointer to a row with
* the format of pg_depend relation.
* typedef struct FormData_pg_description
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_description,2609,DescriptionRelationId)
{
Oid objoid; /* OID of object itself */
#endif
} FormData_pg_description;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_description corresponds to a pointer to a tuple with
* the format of pg_description relation.
* typedef struct FormData_pg_enum
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_enum,3501,EnumRelationId)
{
Oid oid; /* oid */
NameData enumlabel; /* text representation of enum value */
} FormData_pg_enum;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_enum corresponds to a pointer to a tuple with
* the format of pg_enum relation.
* typedef struct FormData_pg_event_trigger
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_event_trigger,3466,EventTriggerRelationId)
{
Oid oid; /* oid */
#endif
} FormData_pg_event_trigger;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_event_trigger corresponds to a pointer to a tuple with
* the format of pg_event_trigger relation.
* typedef struct FormData_pg_extension
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_extension,3079,ExtensionRelationId)
{
Oid oid; /* oid */
#endif
} FormData_pg_extension;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_extension corresponds to a pointer to a tuple with
* the format of pg_extension relation.
* typedef struct FormData_pg_foreign_data_wrapper
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_foreign_data_wrapper,2328,ForeignDataWrapperRelationId)
{
Oid oid; /* oid */
#endif
} FormData_pg_foreign_data_wrapper;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_foreign_data_wrapper corresponds to a pointer to a tuple with
* the format of pg_foreign_data_wrapper relation.
* typedef struct FormData_pg_foreign_server
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_foreign_server,1417,ForeignServerRelationId)
{
Oid oid; /* oid */
#endif
} FormData_pg_foreign_server;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_foreign_server corresponds to a pointer to a tuple with
* the format of pg_foreign_server relation.
* typedef struct FormData_pg_foreign_table
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_foreign_table,3118,ForeignTableRelationId)
{
Oid ftrelid BKI_LOOKUP(pg_class); /* OID of foreign table */
#endif
} FormData_pg_foreign_table;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_foreign_table corresponds to a pointer to a tuple with
* the format of pg_foreign_table relation.
* typedef struct FormData_pg_index.
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_index,2610,IndexRelationId) BKI_SCHEMA_MACRO
{
Oid indexrelid BKI_LOOKUP(pg_class); /* OID of the index */
#endif
} FormData_pg_index;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_index corresponds to a pointer to a tuple with
* the format of pg_index relation.
* typedef struct FormData_pg_inherits
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_inherits,2611,InheritsRelationId)
{
Oid inhrelid BKI_LOOKUP(pg_class);
bool inhdetachpending;
} FormData_pg_inherits;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_inherits corresponds to a pointer to a tuple with
* the format of pg_inherits relation.
* typedef struct FormData_pg_init_privs
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_init_privs,3394,InitPrivsRelationId)
{
Oid objoid; /* OID of object itself */
#endif
} FormData_pg_init_privs;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_init_privs corresponds to a pointer to a tuple with
* the format of pg_init_privs relation.
* typedef struct FormData_pg_language
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_language,2612,LanguageRelationId)
{
Oid oid; /* oid */
#endif
} FormData_pg_language;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_language corresponds to a pointer to a tuple with
* the format of pg_language relation.
* typedef struct FormData_pg_largeobject
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_largeobject,2613,LargeObjectRelationId)
{
Oid loid BKI_LOOKUP(pg_largeobject_metadata); /* Identifier of large
* zero-length) */
} FormData_pg_largeobject;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_largeobject corresponds to a pointer to a tuple with
* the format of pg_largeobject relation.
* typedef struct FormData_pg_largeobject_metadata
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_largeobject_metadata,2995,LargeObjectMetadataRelationId)
{
Oid oid; /* oid */
#endif
} FormData_pg_largeobject_metadata;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_largeobject_metadata corresponds to a pointer to a tuple
* with the format of pg_largeobject_metadata relation.
* nspacl access privilege list
* ----------------------------------------------------------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_namespace,2615,NamespaceRelationId)
{
Oid oid; /* oid */
#endif
} FormData_pg_namespace;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_namespace corresponds to a pointer to a tuple with
* the format of pg_namespace relation.
* typedef struct FormData_pg_opclass
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_opclass,2616,OperatorClassRelationId)
{
Oid oid; /* oid */
Oid opckeytype BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_type);
} FormData_pg_opclass;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_opclass corresponds to a pointer to a tuple with
* the format of pg_opclass relation.
* typedef struct FormData_pg_operator
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_operator,2617,OperatorRelationId)
{
Oid oid; /* oid */
regproc oprjoin BKI_DEFAULT(-) BKI_LOOKUP_OPT(pg_proc);
} FormData_pg_operator;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_operator corresponds to a pointer to a tuple with
* the format of pg_operator relation.
* typedef struct FormData_pg_opfamily
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_opfamily,2753,OperatorFamilyRelationId)
{
Oid oid; /* oid */
Oid opfowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
} FormData_pg_opfamily;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_opfamily corresponds to a pointer to a tuple with
* the format of pg_opfamily relation.
* typedef struct FormData_pg_parameter_acl
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_parameter_acl,6243,ParameterAclRelationId) BKI_SHARED_RELATION
{
Oid oid; /* oid */
#endif
} FormData_pg_parameter_acl;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_parameter_acl corresponds to a pointer to a tuple with
* typedef struct FormData_pg_partitioned_table
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_partitioned_table,3350,PartitionedRelationId)
{
Oid partrelid BKI_LOOKUP(pg_class); /* partitioned table oid */
#endif
} FormData_pg_partitioned_table;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_partitioned_table corresponds to a pointer to a tuple with
* the format of pg_partitioned_table relation.
* typedef struct FormData_pg_policy
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_policy,3256,PolicyRelationId)
{
Oid oid; /* oid */
#endif
} FormData_pg_policy;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_policy corresponds to a pointer to a row with
* the format of pg_policy relation.
* typedef struct FormData_pg_proc
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_proc,1255,ProcedureRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81,ProcedureRelation_Rowtype_Id) BKI_SCHEMA_MACRO
{
Oid oid; /* oid */
#endif
} FormData_pg_proc;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_proc corresponds to a pointer to a tuple with
* the format of pg_proc relation.
* typedef struct FormData_pg_publication
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_publication,6104,PublicationRelationId)
{
Oid oid; /* oid */
char pubgencols;
} FormData_pg_publication;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_publication corresponds to a pointer to a tuple with
* the format of pg_publication relation.
* typedef struct FormData_pg_publication_namespace
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_publication_namespace,6237,PublicationNamespaceRelationId)
{
Oid oid; /* oid */
Oid pnnspid BKI_LOOKUP(pg_namespace); /* Oid of the schema */
} FormData_pg_publication_namespace;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_publication_namespace corresponds to a pointer to a tuple with
* the format of pg_publication_namespace relation.
* typedef struct FormData_pg_publication_rel
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_publication_rel,6106,PublicationRelRelationId)
{
Oid oid; /* oid */
#endif
} FormData_pg_publication_rel;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_publication_rel corresponds to a pointer to a tuple with
* the format of pg_publication_rel relation.
* typedef struct FormData_pg_range
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_range,3541,RangeRelationId)
{
/* OID of owning range type */
regproc rngsubdiff BKI_LOOKUP_OPT(pg_proc);
} FormData_pg_range;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_range corresponds to a pointer to a tuple with
* the format of pg_range relation.
* typedef struct FormData_pg_replication_origin
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_replication_origin,6000,ReplicationOriginRelationId) BKI_SHARED_RELATION
{
/*
#endif
} FormData_pg_replication_origin;
+END_CATALOG_STRUCT
+
typedef FormData_pg_replication_origin *Form_pg_replication_origin;
DECLARE_UNIQUE_INDEX_PKEY(pg_replication_origin_roiident_index, 6001, ReplicationOriginIdentIndex, pg_replication_origin, btree(roident oid_ops));
* typedef struct FormData_pg_rewrite
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_rewrite,2618,RewriteRelationId)
{
Oid oid; /* oid */
#endif
} FormData_pg_rewrite;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_rewrite corresponds to a pointer to a tuple with
* the format of pg_rewrite relation.
* typedef struct FormData_pg_seclabel
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_seclabel,3596,SecLabelRelationId)
{
Oid objoid; /* OID of the object itself */
#endif
} FormData_pg_seclabel;
+END_CATALOG_STRUCT
+
DECLARE_TOAST(pg_seclabel, 3598, 3599);
DECLARE_UNIQUE_INDEX_PKEY(pg_seclabel_object_index, 3597, SecLabelObjectIndexId, pg_seclabel, btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops, provider text_ops));
#include "catalog/genbki.h"
#include "catalog/pg_sequence_d.h" /* IWYU pragma: export */
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_sequence,2224,SequenceRelationId)
{
Oid seqrelid BKI_LOOKUP(pg_class);
bool seqcycle;
} FormData_pg_sequence;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_sequence corresponds to a pointer to a tuple with
* the format of pg_sequence relation.
* typedef struct FormData_pg_shdepend
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_shdepend,1214,SharedDependRelationId) BKI_SHARED_RELATION
{
/*
char deptype; /* see codes in dependency.h */
} FormData_pg_shdepend;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_shdepend corresponds to a pointer to a row with
* the format of pg_shdepend relation.
* typedef struct FormData_pg_shdescription
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_shdescription,2396,SharedDescriptionRelationId) BKI_SHARED_RELATION
{
Oid objoid; /* OID of object itself */
#endif
} FormData_pg_shdescription;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_shdescription corresponds to a pointer to a tuple with
* the format of pg_shdescription relation.
* typedef struct FormData_pg_shseclabel
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_shseclabel,3592,SharedSecLabelRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(4066,SharedSecLabelRelation_Rowtype_Id) BKI_SCHEMA_MACRO
{
Oid objoid; /* OID of the shared object itself */
#endif
} FormData_pg_shseclabel;
+END_CATALOG_STRUCT
+
typedef FormData_pg_shseclabel * Form_pg_shseclabel;
DECLARE_TOAST_WITH_MACRO(pg_shseclabel, 4060, 4061, PgShseclabelToastTable, PgShseclabelToastIndex);
* typedef struct FormData_pg_statistic
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_statistic,2619,StatisticRelationId)
{
/* These fields form the unique key for the entry: */
#endif
} FormData_pg_statistic;
+END_CATALOG_STRUCT
+
#define STATISTIC_NUM_SLOTS 5
* typedef struct FormData_pg_statistic_ext
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_statistic_ext,3381,StatisticExtRelationId)
{
Oid oid; /* oid */
} FormData_pg_statistic_ext;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_statistic_ext corresponds to a pointer to a tuple with
* the format of pg_statistic_ext relation.
* typedef struct FormData_pg_statistic_ext_data
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_statistic_ext_data,3429,StatisticExtDataRelationId)
{
Oid stxoid BKI_LOOKUP(pg_statistic_ext); /* statistics object
} FormData_pg_statistic_ext_data;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_statistic_ext_data corresponds to a pointer to a tuple with
* the format of pg_statistic_ext_data relation.
* here, be sure to update that (or, if the new column is not to be publicly
* readable, update associated comments and catalogs.sgml instead).
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_subscription,6100,SubscriptionRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID(6101,SubscriptionRelation_Rowtype_Id) BKI_SCHEMA_MACRO
{
Oid oid; /* oid */
#endif
} FormData_pg_subscription;
+END_CATALOG_STRUCT
+
typedef FormData_pg_subscription *Form_pg_subscription;
DECLARE_TOAST_WITH_MACRO(pg_subscription, 4183, 4184, PgSubscriptionToastTable, PgSubscriptionToastIndex);
* typedef struct FormData_pg_subscription_rel
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_subscription_rel,6102,SubscriptionRelRelationId)
{
Oid srsubid BKI_LOOKUP(pg_subscription); /* Oid of subscription */
#endif
} FormData_pg_subscription_rel;
+END_CATALOG_STRUCT
+
typedef FormData_pg_subscription_rel *Form_pg_subscription_rel;
DECLARE_UNIQUE_INDEX_PKEY(pg_subscription_rel_srrelid_srsubid_index, 6117, SubscriptionRelSrrelidSrsubidIndexId, pg_subscription_rel, btree(srrelid oid_ops, srsubid oid_ops));
* typedef struct FormData_pg_tablespace
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_tablespace,1213,TableSpaceRelationId) BKI_SHARED_RELATION
{
Oid oid; /* oid */
#endif
} FormData_pg_tablespace;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_tablespace corresponds to a pointer to a tuple with
* the format of pg_tablespace relation.
* typedef struct FormData_pg_transform
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_transform,3576,TransformRelationId)
{
Oid oid; /* oid */
regproc trftosql BKI_LOOKUP_OPT(pg_proc);
} FormData_pg_transform;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_transform corresponds to a pointer to a tuple with
* the format of pg_transform relation.
* to be associated with a deferrable constraint.
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_trigger,2620,TriggerRelationId)
{
Oid oid; /* oid */
#endif
} FormData_pg_trigger;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_trigger corresponds to a pointer to a tuple with
* the format of pg_trigger relation.
* typedef struct FormData_pg_ts_config
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_ts_config,3602,TSConfigRelationId)
{
/* oid */
Oid cfgparser BKI_LOOKUP(pg_ts_parser);
} FormData_pg_ts_config;
+END_CATALOG_STRUCT
+
typedef FormData_pg_ts_config *Form_pg_ts_config;
DECLARE_UNIQUE_INDEX(pg_ts_config_cfgname_index, 3608, TSConfigNameNspIndexId, pg_ts_config, btree(cfgname name_ops, cfgnamespace oid_ops));
* typedef struct FormData_pg_ts_config_map
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_ts_config_map,3603,TSConfigMapRelationId)
{
/* OID of configuration owning this entry */
Oid mapdict BKI_LOOKUP(pg_ts_dict);
} FormData_pg_ts_config_map;
+END_CATALOG_STRUCT
+
typedef FormData_pg_ts_config_map *Form_pg_ts_config_map;
DECLARE_UNIQUE_INDEX_PKEY(pg_ts_config_map_index, 3609, TSConfigMapIndexId, pg_ts_config_map, btree(mapcfg oid_ops, maptokentype int4_ops, mapseqno int4_ops));
* typedef struct FormData_pg_ts_dict
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_ts_dict,3600,TSDictionaryRelationId)
{
/* oid */
#endif
} FormData_pg_ts_dict;
+END_CATALOG_STRUCT
+
typedef FormData_pg_ts_dict *Form_pg_ts_dict;
DECLARE_TOAST(pg_ts_dict, 4169, 4170);
* typedef struct FormData_pg_ts_parser
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_ts_parser,3601,TSParserRelationId)
{
Oid oid; /* oid */
regproc prslextype BKI_LOOKUP(pg_proc);
} FormData_pg_ts_parser;
+END_CATALOG_STRUCT
+
typedef FormData_pg_ts_parser *Form_pg_ts_parser;
DECLARE_UNIQUE_INDEX(pg_ts_parser_prsname_index, 3606, TSParserNameNspIndexId, pg_ts_parser, btree(prsname name_ops, prsnamespace oid_ops));
* typedef struct FormData_pg_ts_template
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_ts_template,3764,TSTemplateRelationId)
{
Oid oid; /* oid */
regproc tmpllexize BKI_LOOKUP(pg_proc);
} FormData_pg_ts_template;
+END_CATALOG_STRUCT
+
typedef FormData_pg_ts_template *Form_pg_ts_template;
DECLARE_UNIQUE_INDEX(pg_ts_template_tmplname_index, 3766, TSTemplateNameNspIndexId, pg_ts_template, btree(tmplname name_ops, tmplnamespace oid_ops));
* See struct FormData_pg_attribute for details.
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_type,1247,TypeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71,TypeRelation_Rowtype_Id) BKI_SCHEMA_MACRO
{
Oid oid; /* oid */
#endif
} FormData_pg_type;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_type corresponds to a pointer to a row with
* the format of pg_type relation.
* typedef struct FormData_pg_user_mapping
* ----------------
*/
+BEGIN_CATALOG_STRUCT
+
CATALOG(pg_user_mapping,1418,UserMappingRelationId)
{
Oid oid; /* oid */
#endif
} FormData_pg_user_mapping;
+END_CATALOG_STRUCT
+
/* ----------------
* Form_pg_user_mapping corresponds to a pointer to a tuple with
* the format of pg_user_mapping relation.
/* The normal alignment of `int64_t', in bytes. */
#undef ALIGNOF_INT64_T
-/* The normal alignment of `long', in bytes. */
-#undef ALIGNOF_LONG
-
/* The normal alignment of `PG_INT128_TYPE', in bytes. */
#undef ALIGNOF_PG_INT128_TYPE