PostgreSQL Source Code  git master
toasting.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * toasting.h
4  * This file provides some definitions to support creation of toast tables
5  *
6  * Caution: all #define's with numeric values in this file had better be
7  * object OIDs, else renumber_oids.pl might change them inappropriately.
8  *
9  *
10  * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
11  * Portions Copyright (c) 1994, Regents of the University of California
12  *
13  * src/include/catalog/toasting.h
14  *
15  *-------------------------------------------------------------------------
16  */
17 #ifndef TOASTING_H
18 #define TOASTING_H
19 
20 #include "storage/lock.h"
21 
22 /*
23  * toasting.c prototypes
24  */
25 extern void NewRelationCreateToastTable(Oid relOid, Datum reloptions);
26 extern void NewHeapCreateToastTable(Oid relOid, Datum reloptions,
27  LOCKMODE lockmode);
28 extern void AlterTableCreateToastTable(Oid relOid, Datum reloptions,
29  LOCKMODE lockmode);
30 extern void BootstrapToastTable(char *relName,
31  Oid toastOid, Oid toastIndexOid);
32 
33 
34 /*
35  * This macro is just to keep the C compiler from spitting up on the
36  * upcoming commands for Catalog.pm.
37  */
38 #define DECLARE_TOAST(name,toastoid,indexoid) extern int no_such_variable
39 
40 
41 /*
42  * What follows are lines processed by genbki.pl to create the statements
43  * the bootstrap parser will turn into BootstrapToastTable commands.
44  * Each line specifies the system catalog that needs a toast table,
45  * the OID to assign to the toast table, and the OID to assign to the
46  * toast table's index. The reason we hard-wire these OIDs is that we
47  * need stable OIDs for shared relations, and that includes toast tables
48  * of shared relations.
49  */
50 
51 /* normal catalogs */
52 DECLARE_TOAST(pg_aggregate, 4159, 4160);
53 DECLARE_TOAST(pg_attrdef, 2830, 2831);
54 DECLARE_TOAST(pg_collation, 4161, 4162);
55 DECLARE_TOAST(pg_constraint, 2832, 2833);
56 DECLARE_TOAST(pg_default_acl, 4143, 4144);
57 DECLARE_TOAST(pg_description, 2834, 2835);
58 DECLARE_TOAST(pg_event_trigger, 4145, 4146);
59 DECLARE_TOAST(pg_extension, 4147, 4148);
60 DECLARE_TOAST(pg_foreign_data_wrapper, 4149, 4150);
61 DECLARE_TOAST(pg_foreign_server, 4151, 4152);
62 DECLARE_TOAST(pg_foreign_table, 4153, 4154);
63 DECLARE_TOAST(pg_init_privs, 4155, 4156);
64 DECLARE_TOAST(pg_language, 4157, 4158);
65 DECLARE_TOAST(pg_namespace, 4163, 4164);
66 DECLARE_TOAST(pg_partitioned_table, 4165, 4166);
67 DECLARE_TOAST(pg_policy, 4167, 4168);
68 DECLARE_TOAST(pg_proc, 2836, 2837);
69 DECLARE_TOAST(pg_rewrite, 2838, 2839);
70 DECLARE_TOAST(pg_seclabel, 3598, 3599);
71 DECLARE_TOAST(pg_statistic, 2840, 2841);
72 DECLARE_TOAST(pg_statistic_ext, 3439, 3440);
73 DECLARE_TOAST(pg_statistic_ext_data, 3430, 3431);
74 DECLARE_TOAST(pg_trigger, 2336, 2337);
75 DECLARE_TOAST(pg_ts_dict, 4169, 4170);
76 DECLARE_TOAST(pg_type, 4171, 4172);
77 DECLARE_TOAST(pg_user_mapping, 4173, 4174);
78 
79 /* shared catalogs */
80 DECLARE_TOAST(pg_authid, 4175, 4176);
81 #define PgAuthidToastTable 4175
82 #define PgAuthidToastIndex 4176
83 DECLARE_TOAST(pg_database, 4177, 4178);
84 #define PgDatabaseToastTable 4177
85 #define PgDatabaseToastIndex 4178
86 DECLARE_TOAST(pg_db_role_setting, 2966, 2967);
87 #define PgDbRoleSettingToastTable 2966
88 #define PgDbRoleSettingToastIndex 2967
89 DECLARE_TOAST(pg_pltemplate, 4179, 4180);
90 #define PgPlTemplateToastTable 4179
91 #define PgPlTemplateToastIndex 4180
92 DECLARE_TOAST(pg_replication_origin, 4181, 4182);
93 #define PgReplicationOriginToastTable 4181
94 #define PgReplicationOriginToastIndex 4182
95 DECLARE_TOAST(pg_shdescription, 2846, 2847);
96 #define PgShdescriptionToastTable 2846
97 #define PgShdescriptionToastIndex 2847
98 DECLARE_TOAST(pg_shseclabel, 4060, 4061);
99 #define PgShseclabelToastTable 4060
100 #define PgShseclabelToastIndex 4061
101 DECLARE_TOAST(pg_subscription, 4183, 4184);
102 #define PgSubscriptionToastTable 4183
103 #define PgSubscriptionToastIndex 4184
104 DECLARE_TOAST(pg_tablespace, 4185, 4186);
105 #define PgTablespaceToastTable 4185
106 #define PgTablespaceToastIndex 4186
107 
108 #endif /* TOASTING_H */
int LOCKMODE
Definition: lockdefs.h:26
void NewRelationCreateToastTable(Oid relOid, Datum reloptions)
Definition: toasting.c:72
void BootstrapToastTable(char *relName, Oid toastOid, Oid toastIndexOid)
Definition: toasting.c:96
unsigned int Oid
Definition: postgres_ext.h:31
void AlterTableCreateToastTable(Oid relOid, Datum reloptions, LOCKMODE lockmode)
Definition: toasting.c:60
uintptr_t Datum
Definition: postgres.h:367
#define DECLARE_TOAST(name, toastoid, indexoid)
Definition: toasting.h:38
void NewHeapCreateToastTable(Oid relOid, Datum reloptions, LOCKMODE lockmode)
Definition: toasting.c:66