in contrib/pax_storage/tools/gen_sql.c [29:309]
int main() {
printf("-- insert pax catalog values\n");
#if !defined(USE_MANIFEST_API) || defined(USE_PAX_CATALOG)
printf("-- create pg_ext_aux.pg_pax_tables\n");
printf(
"CREATE TABLE pg_ext_aux.pg_pax_tables(relid oid not null, auxrelid oid "
"not null);\n");
printf(
"DELETE FROM gp_distribution_policy WHERE "
"localoid='pg_ext_aux.pg_pax_tables'::regclass;\n");
printf("\n-- update pg_depend\n");
printf(
"UPDATE pg_depend SET refobjid = %u WHERE refclassid = %u AND "
"refobjid='pg_ext_aux.pg_pax_tables'::regclass;\n",
PAX_TABLES_RELATION_ID, RelationRelationId);
printf(
"UPDATE pg_depend SET objid = %u WHERE classid = %u AND "
"objid='pg_ext_aux.pg_pax_tables'::regclass;\n",
PAX_TABLES_RELATION_ID, RelationRelationId);
printf("\n-- update pg_attribute\n");
printf(
"UPDATE pg_attribute SET attrelid = %u WHERE attrelid = "
"'pg_ext_aux.pg_pax_tables'::regclass;\n",
PAX_TABLES_RELATION_ID);
printf(
"UPDATE pg_class SET oid=%u WHERE "
"oid='pg_ext_aux.pg_pax_tables'::regclass;\n",
PAX_TABLES_RELATION_ID);
printf("\n-- add unique index\n");
printf(
"CREATE UNIQUE INDEX pg_pax_tables_relid_index on "
"pg_ext_aux.pg_pax_tables(relid);\n");
printf("\n-- update pg_attribute\n");
printf(
"UPDATE pg_attribute SET attrelid = %u WHERE attrelid = (SELECT "
"indexrelid FROM pg_index WHERE "
"indrelid='pg_ext_aux.pg_pax_tables'::regclass);\n",
PAX_TABLES_RELID_INDEX_ID);
printf("\n-- update pg_depend\n");
printf(
"UPDATE pg_depend SET objid = %u WHERE classid = %u AND refclassid = %u "
"AND refobjid='pg_ext_aux.pg_pax_tables'::regclass AND objid = (SELECT "
"indexrelid FROM pg_index WHERE "
"indrelid='pg_ext_aux.pg_pax_tables'::regclass);",
PAX_TABLES_RELID_INDEX_ID, RelationRelationId, RelationRelationId);
printf("\n-- update index oid\n");
printf(
"UPDATE pg_class SET oid = %u WHERE oid = (SELECT indexrelid FROM "
"pg_index WHERE indrelid='pg_ext_aux.pg_pax_tables'::regclass);\n",
PAX_TABLES_RELID_INDEX_ID);
printf(
"UPDATE pg_index SET indexrelid = %u WHERE "
"indrelid='pg_ext_aux.pg_pax_tables'::regclass;\n",
PAX_TABLES_RELID_INDEX_ID);
#endif
printf("\n-- insert proc and am entry\n");
printf(
"INSERT INTO pg_proc "
"VALUES(%u,'%s',%u,%u,%u,%u,%u,%u,%u,'%c','%c','%c','%c','%c','%c','%c',"
"1,0,%u,'%u',null,null,null,null,null,'%s','%s',null,null,null,'%c','%c')"
";\n",
PAX_AM_HANDLER_OID, /* oid: pg_proc.oid */
PAX_AM_HANDLER_NAME, /* proname */
PG_CATALOG_NAMESPACE, /* pronamespace: pg_namespace.oid: pg_catalog */
BOOTSTRAP_SUPERUSERID, /* proowner: pg_authid.oid */
ClanguageId, /* prolang: pg_language.oid */
1, /* procost: 1 */
0, /* prorows: 0 */
0, /* provariadic: pg_type.oid*/
0, /* prosupport: pg_proc.oid */
'f', /* prokind: 'f' normal function */
'f', /* prosecdef */
'f', /* proleakproof */
't', /* proisstrict */
'f', /* proretset */
's', /* provolatile */
'u', /* proparallel */
/* pronargs: 1 */
/* pronargdefaults: 0 */
TABLE_AM_HANDLEROID, /* prorettype: pg_type.oid */
INTERNALOID, /* proargtypes: pg_type.oid, internal */
/* proallargtypes: null */
/* proargmodes: null */
/* proargnames: null */
/* proargdefaults: nulll */
/* protrftypes: null */
PAX_AM_HANDLER_NAME, /* prosrc */
"$libdir/pax", /* probin */
/* prosqlbody: null */
/* proconfig: null */
/* proacl: null */
'n', /* prodataaccess */
'a' /* proexeclocation: all */);
printf("INSERT INTO pg_am VALUES(%u,'%s',%u,'%c');\n",
PAX_TABLE_AM_OID, /* pg_am.oid */
PAX_AMNAME, /* pg_am.amname */
PAX_AM_HANDLER_OID, /* pg_am.amhandler: pg_proc.oid */
't' /* pg_am.amtype: TABLE */);
printf("COMMENT ON FUNCTION %s IS '%s';\n", PAX_AM_HANDLER_NAME, PAX_COMMENT);
/* create type for micropartition stats */
printf(
"INSERT INTO pg_proc "
"VALUES(%u,'%s',%u,%u,%u,%u,%u,%u,%u,'%c','%c','%c','%c','%c','%c','%c',"
"1,0,%u,'%u',null,null,null,null,null,'%s','%s',null,null,null,'%c','%c')"
";\n",
PAX_AUX_STATS_IN_OID, /* oid: pg_proc.oid */
"paxauxstats_in", /* proname */
PG_EXTAUX_NAMESPACE, /* pronamespace: pg_namespace.oid: pg_catalog */
BOOTSTRAP_SUPERUSERID, /* proowner: pg_authid.oid */
ClanguageId, /* prolang: pg_language.oid */
1, /* procost: 1 */
0, /* prorows: 0 */
0, /* provariadic: pg_type.oid*/
0, /* prosupport: pg_proc.oid */
'f', /* prokind: 'f' normal function */
'f', /* prosecdef */
'f', /* proleakproof */
't', /* proisstrict */
'f', /* proretset */
'i', /* provolatile */
'u', /* proparallel */
/* pronargs: 1 */
/* pronargdefaults: 0 */
PAX_AUX_STATS_TYPE_OID, /* prorettype: pg_type.oid */
CSTRINGOID, /* proargtypes: pg_type.oid, internal */
/* proallargtypes: null */
/* proargmodes: null */
/* proargnames: null */
/* proargdefaults: nulll */
/* protrftypes: null */
"MicroPartitionStatsInput", /* prosrc */
"$libdir/pax", /* probin */
/* prosqlbody: null */
/* proconfig: null */
/* proacl: null */
'n', /* prodataaccess */
'a' /* proexeclocation: all */);
printf(
"INSERT INTO pg_proc "
"VALUES(%u,'%s',%u,%u,%u,%u,%u,%u,%u,'%c','%c','%c','%c','%c','%c','%c',"
"1,0,%u,'%u',null,null,null,null,null,'%s','%s',null,null,null,'%c','%c')"
";\n",
PAX_AUX_STATS_OUT_OID, /* oid: pg_proc.oid */
"paxauxstats_out", /* proname */
PG_EXTAUX_NAMESPACE, /* pronamespace: pg_namespace.oid: pg_catalog */
BOOTSTRAP_SUPERUSERID, /* proowner: pg_authid.oid */
ClanguageId, /* prolang: pg_language.oid */
1, /* procost: 1 */
0, /* prorows: 0 */
0, /* provariadic: pg_type.oid*/
0, /* prosupport: pg_proc.oid */
'f', /* prokind: 'f' normal function */
'f', /* prosecdef */
'f', /* proleakproof */
't', /* proisstrict */
'f', /* proretset */
'i', /* provolatile */
'u', /* proparallel */
/* pronargs: 1 */
/* pronargdefaults: 0 */
CSTRINGOID, /* proargtypes: pg_type.oid, internal */
PAX_AUX_STATS_TYPE_OID, /* prorettype: pg_type.oid */
/* proallargtypes: null */
/* proargmodes: null */
/* proargnames: null */
/* proargdefaults: nulll */
/* protrftypes: null */
"MicroPartitionStatsOutput", /* prosrc */
"$libdir/pax", /* probin */
/* prosqlbody: null */
/* proconfig: null */
/* proacl: null */
'n', /* prodataaccess */
'a' /* proexeclocation: all */);
printf(
"INSERT INTO pg_type "
"VALUES(%u,'%s',%u,%u,%d,'%c','%c','%c','%c','%c','%c',"
"%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,'%c','%c','%c',"
"%u,%d,%d,%u,null,null,null);\n",
PAX_AUX_STATS_TYPE_OID, /* pg_type.oid */
PAX_AUX_STATS_TYPE_NAME, /* pg_type.typname */
PG_EXTAUX_NAMESPACE, /* pg_type.typnamespace: pg_namespace.oid:
pg_catalog */
BOOTSTRAP_SUPERUSERID, /* pg_type.typowner: pg_authid.oid */
-1, /* pg_type.typlen: -1 variable length */
'f', /* pg_type.typbyval */
'b', /* pg_type.typtype */
'U', /* pg_type.typcategory */
'f', /* pg_type.typispreferred */
't', /* pg_type.typisdefined */
',', /* pg_type.typdelim */
InvalidOid, /* pg_type.typrelid */
InvalidOid, /* pg_type.typsubscript */
InvalidOid, /* pg_type.typelem */
InvalidOid, /* pg_type.typarray */
PAX_AUX_STATS_IN_OID, /* pg_type.typinput */
PAX_AUX_STATS_OUT_OID, /* pg_type.typoutput */
InvalidOid, /* pg_type.typreceive */
InvalidOid, /* pg_type.typsend */
InvalidOid, /* pg_type.typmodin */
InvalidOid, /* pg_type.typmodout */
InvalidOid, /* pg_type.typanalyze */
'i', /* pg_type.typalign */
'x', /* pg_type.typstorage */
't', /* pg_type.typnotnull */
InvalidOid, /* pg_type.typbasetype */
-1, /* pg_type.typtypmod */
0, /* pg_type.ndims */
InvalidOid /* pg_type.typcollation */
);
printf("\n");
/* create pax auxiliary fast sequence table. */
printf("CREATE TABLE %s.%s(objid oid NOT NULL, seq int NOT NULL);\n",
PG_PAX_FASTSEQUENCE_NAMESPACE, PG_PAX_FASTSEQUENCE_TABLE);
/* create pax auxiliary fast sequence index. */
printf("CREATE INDEX %s ON %s.%s(objid);\n", PG_PAX_FASTSEQUENCE_INDEX_NAME,
PG_PAX_FASTSEQUENCE_NAMESPACE, PG_PAX_FASTSEQUENCE_TABLE);
/* update oid of pg_pax_fastsequence and pg_pax_fastsequence_objid_idx */
printf("-- update oid of fastsequence: table %u index %u\n",
PAX_FASTSEQUENCE_OID, PAX_FASTSEQUENCE_INDEX_OID);
printf("-- pg_type\n");
printf("UPDATE pg_type SET typrelid = %u WHERE typname='%s';\n",
PAX_FASTSEQUENCE_OID, PG_PAX_FASTSEQUENCE_TABLE);
printf("-- pg_depend\n");
printf(
"UPDATE pg_depend SET refobjid = %u WHERE refobjid = (SELECT oid FROM "
"pg_class WHERE relname='%s');\n",
PAX_FASTSEQUENCE_OID, PG_PAX_FASTSEQUENCE_TABLE);
printf(
"UPDATE pg_depend SET objid = %u WHERE objid = (SELECT oid FROM pg_class "
"WHERE relname='%s');\n",
PAX_FASTSEQUENCE_OID, PG_PAX_FASTSEQUENCE_TABLE);
printf(
"UPDATE pg_depend SET objid = %u WHERE objid = (SELECT oid FROM pg_class "
"WHERE relname='%s');\n",
PAX_FASTSEQUENCE_INDEX_OID, PG_PAX_FASTSEQUENCE_INDEX_NAME);
printf("-- pg_attribute\n");
printf(
"UPDATE pg_attribute SET attrelid=%u WHERE attrelid = (SELECT oid FROM "
"pg_class WHERE relname='%s');\n",
PAX_FASTSEQUENCE_OID, PG_PAX_FASTSEQUENCE_TABLE);
printf("\n");
printf(
"UPDATE pg_attribute SET attrelid=%u WHERE attrelid = (SELECT oid FROM "
"pg_class WHERE relname='%s');\n",
PAX_FASTSEQUENCE_INDEX_OID, PG_PAX_FASTSEQUENCE_INDEX_NAME);
printf("\n");
printf("-- pg_index\n");
printf(
"UPDATE pg_index SET indexrelid = %u, indrelid = %u WHERE indexrelid = "
"(SELECT oid FROM pg_class WHERE relname='%s') AND indrelid = (SELECT "
"oid FROM pg_class WHERE relname='%s');\n",
PAX_FASTSEQUENCE_INDEX_OID, PAX_FASTSEQUENCE_OID,
PG_PAX_FASTSEQUENCE_INDEX_NAME, PG_PAX_FASTSEQUENCE_TABLE);
printf("-- pg_class\n");
printf("UPDATE pg_class SET oid=%u WHERE relname='%s';\n",
PAX_FASTSEQUENCE_OID, PG_PAX_FASTSEQUENCE_TABLE);
printf("UPDATE pg_class SET oid=%u WHERE relname='%s';\n",
PAX_FASTSEQUENCE_INDEX_OID, PG_PAX_FASTSEQUENCE_INDEX_NAME);
return 0;
}