84#include "utils/fmgroids.h"
122 AccessMethodRelationId,
135 "access method operator",
136 AccessMethodOperatorRelationId,
137 AccessMethodOperatorOidIndexId,
149 "access method procedure",
150 AccessMethodProcedureRelationId,
151 AccessMethodProcedureOidIndexId,
182 Anum_pg_collation_oid,
183 Anum_pg_collation_collname,
184 Anum_pg_collation_collnamespace,
185 Anum_pg_collation_collowner,
192 ConstraintRelationId,
193 ConstraintOidIndexId,
196 Anum_pg_constraint_oid,
197 Anum_pg_constraint_conname,
198 Anum_pg_constraint_connamespace,
206 ConversionRelationId,
207 ConversionOidIndexId,
210 Anum_pg_conversion_oid,
211 Anum_pg_conversion_conname,
212 Anum_pg_conversion_connamespace,
213 Anum_pg_conversion_conowner,
224 Anum_pg_database_oid,
225 Anum_pg_database_datname,
227 Anum_pg_database_datdba,
228 Anum_pg_database_datacl,
234 DefaultAclRelationId,
235 DefaultAclOidIndexId,
238 Anum_pg_default_acl_oid,
252 Anum_pg_extension_oid,
253 Anum_pg_extension_extname,
255 Anum_pg_extension_extowner,
261 "foreign-data wrapper",
262 ForeignDataWrapperRelationId,
263 ForeignDataWrapperOidIndexId,
264 FOREIGNDATAWRAPPEROID,
265 FOREIGNDATAWRAPPERNAME,
266 Anum_pg_foreign_data_wrapper_oid,
267 Anum_pg_foreign_data_wrapper_fdwname,
269 Anum_pg_foreign_data_wrapper_fdwowner,
270 Anum_pg_foreign_data_wrapper_fdwacl,
276 ForeignServerRelationId,
277 ForeignServerOidIndexId,
280 Anum_pg_foreign_server_oid,
281 Anum_pg_foreign_server_srvname,
283 Anum_pg_foreign_server_srvowner,
284 Anum_pg_foreign_server_srvacl,
295 Anum_pg_proc_proname,
296 Anum_pg_proc_pronamespace,
297 Anum_pg_proc_proowner,
308 Anum_pg_language_oid,
309 Anum_pg_language_lanname,
311 Anum_pg_language_lanowner,
312 Anum_pg_language_lanacl,
317 "large object metadata",
318 LargeObjectMetadataRelationId,
319 LargeObjectMetadataOidIndexId,
322 Anum_pg_largeobject_metadata_oid,
325 Anum_pg_largeobject_metadata_lomowner,
326 Anum_pg_largeobject_metadata_lomacl,
332 OperatorClassRelationId,
337 Anum_pg_opclass_opcname,
338 Anum_pg_opclass_opcnamespace,
339 Anum_pg_opclass_opcowner,
350 Anum_pg_operator_oid,
351 Anum_pg_operator_oprname,
352 Anum_pg_operator_oprnamespace,
353 Anum_pg_operator_oprowner,
360 OperatorFamilyRelationId,
364 Anum_pg_opfamily_oid,
365 Anum_pg_opfamily_opfname,
366 Anum_pg_opfamily_opfnamespace,
367 Anum_pg_opfamily_opfowner,
379 Anum_pg_authid_rolname,
392 Anum_pg_auth_members_oid,
395 Anum_pg_auth_members_grantor,
407 Anum_pg_rewrite_rulename,
420 Anum_pg_namespace_oid,
421 Anum_pg_namespace_nspname,
423 Anum_pg_namespace_nspowner,
424 Anum_pg_namespace_nspacl,
435 Anum_pg_class_relname,
436 Anum_pg_class_relnamespace,
437 Anum_pg_class_relowner,
438 Anum_pg_class_relacl,
444 TableSpaceRelationId,
445 TablespaceOidIndexId,
448 Anum_pg_tablespace_oid,
449 Anum_pg_tablespace_spcname,
451 Anum_pg_tablespace_spcowner,
452 Anum_pg_tablespace_spcacl,
462 Anum_pg_transform_oid,
477 Anum_pg_trigger_tgname,
491 Anum_pg_policy_polname,
500 EventTriggerRelationId,
501 EventTriggerOidIndexId,
504 Anum_pg_event_trigger_oid,
505 Anum_pg_event_trigger_evtname,
507 Anum_pg_event_trigger_evtowner,
513 "text search configuration",
518 Anum_pg_ts_config_oid,
519 Anum_pg_ts_config_cfgname,
520 Anum_pg_ts_config_cfgnamespace,
521 Anum_pg_ts_config_cfgowner,
527 "text search dictionary",
528 TSDictionaryRelationId,
529 TSDictionaryOidIndexId,
533 Anum_pg_ts_dict_dictname,
534 Anum_pg_ts_dict_dictnamespace,
535 Anum_pg_ts_dict_dictowner,
541 "text search parser",
546 Anum_pg_ts_parser_oid,
547 Anum_pg_ts_parser_prsname,
548 Anum_pg_ts_parser_prsnamespace,
555 "text search template",
556 TSTemplateRelationId,
557 TSTemplateOidIndexId,
560 Anum_pg_ts_template_oid,
561 Anum_pg_ts_template_tmplname,
562 Anum_pg_ts_template_tmplnamespace,
575 Anum_pg_type_typname,
576 Anum_pg_type_typnamespace,
577 Anum_pg_type_typowner,
584 PublicationRelationId,
585 PublicationObjectIndexId,
588 Anum_pg_publication_oid,
589 Anum_pg_publication_pubname,
591 Anum_pg_publication_pubowner,
598 SubscriptionRelationId,
599 SubscriptionObjectIndexId,
602 Anum_pg_subscription_oid,
603 Anum_pg_subscription_subname,
605 Anum_pg_subscription_subowner,
611 "extended statistics",
612 StatisticExtRelationId,
613 StatisticExtOidIndexId,
616 Anum_pg_statistic_ext_oid,
617 Anum_pg_statistic_ext_stxname,
618 Anum_pg_statistic_ext_stxnamespace,
619 Anum_pg_statistic_ext_stxowner,
626 UserMappingRelationId,
627 UserMappingOidIndexId,
630 Anum_pg_user_mapping_oid,
688 "sequence column", -1
691 "toast table column", -1
697 "materialized view column", -1
700 "composite type column", -1
784 "role membership", -1
844 String *strval,
bool missing_ok);
847 LOCKMODE lockmode,
bool missing_ok);
852 LOCKMODE lockmode,
bool missing_ok);
857 TypeName *
typename,
bool missing_ok);
861 List *
object,
bool missing_ok);
879 int32 objectSubId,
bool missing_ok);
974 &relation, missing_ok);
988 address.
classId = ConstraintRelationId;
990 constrname, missing_ok);
1018 address.
classId = ProcedureRelationId;
1023 address.
classId = OperatorRelationId;
1028 address.
classId = CollationRelationId;
1033 address.
classId = ConversionRelationId;
1046 address.
classId = LargeObjectRelationId;
1053 (
errcode(ERRCODE_UNDEFINED_OBJECT),
1054 errmsg(
"large object %u does not exist",
1067 address.
classId = CastRelationId;
1080 address.
classId = TransformRelationId;
1087 address.
classId = TSParserRelationId;
1092 address.
classId = TSDictionaryRelationId;
1097 address.
classId = TSTemplateRelationId;
1102 address.
classId = TSConfigRelationId;
1124 address.
classId = StatisticExtRelationId;
1133 elog(
ERROR,
"unrecognized object type: %d", (
int) objtype);
1155 if (old_address.
classId != RelationRelationId)
1172 if (address.
classId != RelationRelationId)
1204 old_address = address;
1208 Assert(!relation || relp);
1238 relp, lockmode, missing_ok);
1247 String *strval,
bool missing_ok)
1258 address.
classId = AccessMethodRelationId;
1263 address.
classId = DatabaseRelationId;
1268 address.
classId = ExtensionRelationId;
1273 address.
classId = TableSpaceRelationId;
1278 address.
classId = AuthIdRelationId;
1283 address.
classId = NamespaceRelationId;
1288 address.
classId = LanguageRelationId;
1293 address.
classId = ForeignDataWrapperRelationId;
1298 address.
classId = ForeignServerRelationId;
1303 address.
classId = EventTriggerRelationId;
1308 address.
classId = ParameterAclRelationId;
1313 address.
classId = PublicationRelationId;
1318 address.
classId = SubscriptionRelationId;
1323 elog(
ERROR,
"unrecognized object type: %d", (
int) objtype);
1344 address.
classId = RelationRelationId;
1349 lockmode, missing_ok);
1356 if (relation->
rd_rel->relkind != RELKIND_INDEX &&
1357 relation->
rd_rel->relkind != RELKIND_PARTITIONED_INDEX)
1359 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
1360 errmsg(
"\"%s\" is not an index",
1364 if (relation->
rd_rel->relkind != RELKIND_SEQUENCE)
1366 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
1367 errmsg(
"\"%s\" is not a sequence",
1371 if (relation->
rd_rel->relkind != RELKIND_RELATION &&
1372 relation->
rd_rel->relkind != RELKIND_PARTITIONED_TABLE)
1374 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
1375 errmsg(
"\"%s\" is not a table",
1379 if (relation->
rd_rel->relkind != RELKIND_VIEW)
1381 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
1382 errmsg(
"\"%s\" is not a view",
1386 if (relation->
rd_rel->relkind != RELKIND_MATVIEW)
1388 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
1389 errmsg(
"\"%s\" is not a materialized view",
1393 if (relation->
rd_rel->relkind != RELKIND_FOREIGN_TABLE)
1395 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
1396 errmsg(
"\"%s\" is not a foreign table",
1400 elog(
ERROR,
"unrecognized object type: %d", (
int) objtype);
1425 const char *depname;
1436 (
errcode(ERRCODE_SYNTAX_ERROR),
1437 errmsg(
"must specify relation and object name")));
1450 address.
classId = RewriteRelationId;
1456 address.
classId = TriggerRelationId;
1462 address.
classId = ConstraintRelationId;
1469 address.
classId = PolicyRelationId;
1476 elog(
ERROR,
"unrecognized object type: %d", (
int) objtype);
1482 if (relation != NULL)
1512 (
errcode(ERRCODE_SYNTAX_ERROR),
1513 errmsg(
"column name must be qualified")));
1526 (
errcode(ERRCODE_UNDEFINED_COLUMN),
1527 errmsg(
"column \"%s\" of relation \"%s\" does not exist",
1530 address.
classId = RelationRelationId;
1537 address.
classId = RelationRelationId;
1565 (
errcode(ERRCODE_SYNTAX_ERROR),
1566 errmsg(
"column name must be qualified")));
1584 (
errcode(ERRCODE_UNDEFINED_COLUMN),
1585 errmsg(
"default value for column \"%s\" of relation \"%s\" does not exist",
1588 address.
classId = AttrDefaultRelationId;
1595 address.
classId = AttrDefaultRelationId;
1612 address.
classId = TypeRelationId;
1621 (
errcode(ERRCODE_UNDEFINED_OBJECT),
1622 errmsg(
"type \"%s\" does not exist",
1632 (
errcode(ERRCODE_WRONG_OBJECT_TYPE),
1633 errmsg(
"\"%s\" is not a domain",
1658 address.
classId = OperatorClassRelationId;
1663 address.
classId = OperatorFamilyRelationId;
1668 elog(
ERROR,
"unrecognized object type: %d", (
int) objtype);
1685 List *
object,
bool missing_ok)
1711 foreach(cell,
lsecond(
object))
1740 (
errcode(ERRCODE_UNDEFINED_OBJECT),
1741 errmsg(
"operator %d (%s, %s) of %s does not exist",
1771 (
errcode(ERRCODE_UNDEFINED_OBJECT),
1772 errmsg(
"function %d (%s, %s) of %s does not exist",
1786 elog(
ERROR,
"unrecognized object type: %d", (
int) objtype);
1812 if (strcmp(
username,
"public") == 0)
1822 (
errcode(ERRCODE_UNDEFINED_OBJECT),
1823 errmsg(
"user mapping for user \"%s\" on server \"%s\" does not exist",
1837 (
errcode(ERRCODE_UNDEFINED_OBJECT),
1838 errmsg(
"server \"%s\" does not exist", servername)));
1848 (
errcode(ERRCODE_UNDEFINED_OBJECT),
1849 errmsg(
"user mapping for user \"%s\" on server \"%s\" does not exist",
1904 (
errcode(ERRCODE_UNDEFINED_OBJECT),
1905 errmsg(
"publication relation \"%s\" in publication \"%s\" does not exist",
1946 Anum_pg_publication_namespace_oid,
1951 (
errcode(ERRCODE_UNDEFINED_OBJECT),
1952 errmsg(
"publication schema \"%s\" in publication \"%s\" does not exist",
1953 schemaname, pubname)));
1992 case DEFACLOBJ_RELATION:
1993 objtype_str =
"tables";
1995 case DEFACLOBJ_SEQUENCE:
1996 objtype_str =
"sequences";
1998 case DEFACLOBJ_FUNCTION:
1999 objtype_str =
"functions";
2001 case DEFACLOBJ_TYPE:
2002 objtype_str =
"types";
2004 case DEFACLOBJ_NAMESPACE:
2005 objtype_str =
"schemas";
2007 case DEFACLOBJ_LARGEOBJECT:
2008 objtype_str =
"large objects";
2012 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2013 errmsg(
"unrecognized default ACL object type \"%c\"", objtype),
2014 errhint(
"Valid object types are \"%c\", \"%c\", \"%c\", \"%c\", \"%c\", \"%c\".",
2019 DEFACLOBJ_NAMESPACE,
2020 DEFACLOBJ_LARGEOBJECT)));
2065 (
errcode(ERRCODE_UNDEFINED_OBJECT),
2066 errmsg(
"default ACL for user \"%s\" in schema \"%s\" on %s does not exist",
2070 (
errcode(ERRCODE_UNDEFINED_OBJECT),
2071 errmsg(
"default ACL for user \"%s\" on %s does not exist",
2092 for (
i = 0;
i < nelems;
i++)
2096 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2097 errmsg(
"name or argument lists may not contain nulls")));
2118 Node *objnode = NULL;
2130 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2131 errmsg(
"unsupported object type \"%s\"", ttype)));
2149 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2150 errmsg(
"name list length must be exactly %d", 1)));
2153 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2154 errmsg(
"name or argument lists may not contain nulls")));
2166 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2167 errmsg(
"name list length must be exactly %d", 1)));
2170 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2171 errmsg(
"large object OID may not be null")));
2179 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2180 errmsg(
"name list length must be at least %d", 1)));
2204 for (
i = 0;
i < nelems;
i++)
2208 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2209 errmsg(
"name or argument lists may not contain nulls")));
2231 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2232 errmsg(
"name list length must be exactly %d", 1)));
2242 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2243 errmsg(
"argument list length must be exactly %d", 1)));
2249 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2250 errmsg(
"name list length must be at least %d", 2)));
2256 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2257 errmsg(
"name list length must be at least %d", 3)));
2263 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2264 errmsg(
"argument list length must be exactly %d", 2)));
2315 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2316 errmsg(
"name list length must be exactly %d", 1)));
2321 objnode = (
Node *)
typename;
2352 objnode = (
Node *) owa;
2361 if (objnode == NULL)
2372 elog(
ERROR,
"return type must be a row type");
2424 elog(
ERROR,
"constraint with OID %u does not exist",
2477 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
2478 errmsg(
"must be owner of large object %u",
2492 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
2493 errmsg(
"must be owner of type %s or type %s",
2519 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
2520 errmsg(
"permission denied"),
2521 errdetail(
"The current user must have the %s attribute.",
2528 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
2529 errmsg(
"permission denied"),
2530 errdetail(
"The current user must have the %s attribute.",
2534 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
2535 errmsg(
"permission denied"),
2536 errdetail(
"The current user must have the %s option on role \"%s\".",
2549 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
2550 errmsg(
"must be superuser")));
2560 elog(
ERROR,
"unsupported object type: %d", (
int) objtype);
2585 cache =
property->oid_catcache_id;
2591 elog(
ERROR,
"cache lookup failed for cache %d oid %u",
2618 (
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
2619 errmsg(
"unrecognized object type \"%s\"", objtype)));
2763 if (prop_last && prop_last->
class_oid == class_id)
2864 char **pubname,
char **nspname)
2874 elog(
ERROR,
"cache lookup failed for publication schema %u",
2890 Oid schemaid = pnform->pnnspid;
2895 elog(
ERROR,
"cache lookup failed for schema %u",
2919 case RelationRelationId:
2942 case ProcedureRelationId:
2955 case TypeRelationId:
2968 case CastRelationId:
2991 elog(
ERROR,
"could not find tuple for cast %u",
3010 case CollationRelationId:
3021 elog(
ERROR,
"cache lookup failed for collation %u",
3041 case ConstraintRelationId:
3051 elog(
ERROR,
"cache lookup failed for constraint %u",
3079 case ConversionRelationId:
3090 elog(
ERROR,
"cache lookup failed for conversion %u",
3110 case AttrDefaultRelationId:
3119 elog(
ERROR,
"could not find tuple for attrdef %u",
3130 case LanguageRelationId:
3141 case LargeObjectRelationId:
3148 case OperatorRelationId:
3154 if (oprname == NULL)
3161 case OperatorClassRelationId:
3174 elog(
ERROR,
"cache lookup failed for opclass %u",
3184 elog(
ERROR,
"cache lookup failed for access method %u",
3185 opcForm->opcmethod);
3204 case OperatorFamilyRelationId:
3208 case AccessMethodRelationId:
3217 elog(
ERROR,
"cache lookup failed for access method %u",
3228 case AccessMethodOperatorRelationId:
3237 amopDesc =
table_open(AccessMethodOperatorRelationId,
3253 elog(
ERROR,
"could not find tuple for amop entry %u",
3278 amopForm->amopstrategy,
3293 case AccessMethodProcedureRelationId:
3302 amprocDesc =
table_open(AccessMethodProcedureRelationId,
3318 elog(
ERROR,
"could not find tuple for amproc entry %u",
3343 amprocForm->amprocnum,
3358 case RewriteRelationId:
3370 Anum_pg_rewrite_oid,
3382 elog(
ERROR,
"could not find tuple for rule %u",
3404 case TriggerRelationId:
3416 Anum_pg_trigger_oid,
3428 elog(
ERROR,
"could not find tuple for trigger %u",
3450 case NamespaceRelationId:
3458 elog(
ERROR,
"cache lookup failed for namespace %u",
3466 case StatisticExtRelationId:
3477 elog(
ERROR,
"could not find tuple for statistics object %u",
3498 case TSParserRelationId:
3509 elog(
ERROR,
"cache lookup failed for text search parser %u",
3528 case TSDictionaryRelationId:
3539 elog(
ERROR,
"cache lookup failed for text search dictionary %u",
3554 NameStr(dictForm->dictname)));
3559 case TSTemplateRelationId:
3570 elog(
ERROR,
"cache lookup failed for text search template %u",
3585 NameStr(tmplForm->tmplname)));
3590 case TSConfigRelationId:
3601 elog(
ERROR,
"cache lookup failed for text search configuration %u",
3621 case AuthIdRelationId:
3631 case AuthMemRelationId:
3642 Anum_pg_auth_members_oid,
3654 elog(
ERROR,
"could not find tuple for role membership %u",
3673 case DatabaseRelationId:
3681 elog(
ERROR,
"cache lookup failed for database %u",
3689 case TableSpaceRelationId:
3697 elog(
ERROR,
"cache lookup failed for tablespace %u",
3705 case ForeignDataWrapperRelationId:
3716 case ForeignServerRelationId:
3726 case UserMappingRelationId:
3739 elog(
ERROR,
"cache lookup failed for user mapping %u",
3745 useid = umform->umuser;
3760 case DefaultAclRelationId:
3773 Anum_pg_default_acl_oid,
3778 true, NULL, 1, skey);
3785 elog(
ERROR,
"could not find tuple for default ACL %u",
3802 switch (defacl->defaclobjtype)
3804 case DEFACLOBJ_RELATION:
3807 _(
"default privileges on new relations belonging to role %s in schema %s"),
3811 _(
"default privileges on new relations belonging to role %s"),
3814 case DEFACLOBJ_SEQUENCE:
3817 _(
"default privileges on new sequences belonging to role %s in schema %s"),
3821 _(
"default privileges on new sequences belonging to role %s"),
3824 case DEFACLOBJ_FUNCTION:
3827 _(
"default privileges on new functions belonging to role %s in schema %s"),
3831 _(
"default privileges on new functions belonging to role %s"),
3834 case DEFACLOBJ_TYPE:
3837 _(
"default privileges on new types belonging to role %s in schema %s"),
3841 _(
"default privileges on new types belonging to role %s"),
3844 case DEFACLOBJ_NAMESPACE:
3847 _(
"default privileges on new schemas belonging to role %s"),
3850 case DEFACLOBJ_LARGEOBJECT:
3853 _(
"default privileges on new large objects belonging to role %s"),
3860 _(
"default privileges belonging to role %s in schema %s"),
3864 _(
"default privileges belonging to role %s"),
3874 case ExtensionRelationId:
3882 elog(
ERROR,
"cache lookup failed for extension %u",
3890 case EventTriggerRelationId:
3899 elog(
ERROR,
"cache lookup failed for event trigger %u",
3909 case ParameterAclRelationId:
3920 elog(
ERROR,
"cache lookup failed for parameter ACL %u",
3925 Anum_pg_parameter_acl_parname);
3932 case PolicyRelationId:
3949 true, NULL, 1, skey);
3956 elog(
ERROR,
"could not find tuple for policy %u",
3978 case PublicationRelationId:
3988 case PublicationNamespaceRelationId:
3994 &pubname, &nspname))
4004 case PublicationRelRelationId:
4016 elog(
ERROR,
"cache lookup failed for publication table %u",
4035 case SubscriptionRelationId:
4045 case TransformRelationId:
4055 elog(
ERROR,
"could not find tuple for transform %u",
4075 if (buffer.
len == 0)
4114 elog(
ERROR,
"cache lookup failed for relation %u", relid);
4127 switch (relForm->relkind)
4129 case RELKIND_RELATION:
4130 case RELKIND_PARTITIONED_TABLE:
4135 case RELKIND_PARTITIONED_INDEX:
4139 case RELKIND_SEQUENCE:
4143 case RELKIND_TOASTVALUE:
4151 case RELKIND_MATVIEW:
4155 case RELKIND_COMPOSITE_TYPE:
4159 case RELKIND_FOREIGN_TABLE:
4189 elog(
ERROR,
"cache lookup failed for opfamily %u", opfid);
4196 elog(
ERROR,
"cache lookup failed for access method %u",
4197 opfForm->opfmethod);
4253 const char *objname = NULL;
4266 elog(
ERROR,
"return type must be a row type");
4288 elog(
ERROR,
"invalid null namespace in object %u/%u/%d",
4306 elog(
ERROR,
"invalid null name in object %u/%u/%d",
4338 if (objname && objidentity)
4383 elog(
ERROR,
"return type must be a row type");
4391 if (identity == NULL)
4441 catalogId = (classId == LargeObjectRelationId) ?
4442 LargeObjectMetadataRelationId : classId;
4453 if (classId == RelationRelationId && objsubid != 0)
4504 case RelationRelationId:
4510 case ProcedureRelationId:
4515 case TypeRelationId:
4519 case CastRelationId:
4523 case CollationRelationId:
4527 case ConstraintRelationId:
4532 case ConversionRelationId:
4536 case AttrDefaultRelationId:
4540 case LanguageRelationId:
4544 case LargeObjectRelationId:
4548 case OperatorRelationId:
4552 case OperatorClassRelationId:
4556 case OperatorFamilyRelationId:
4560 case AccessMethodRelationId:
4564 case AccessMethodOperatorRelationId:
4568 case AccessMethodProcedureRelationId:
4572 case RewriteRelationId:
4576 case TriggerRelationId:
4580 case NamespaceRelationId:
4584 case StatisticExtRelationId:
4588 case TSParserRelationId:
4592 case TSDictionaryRelationId:
4596 case TSTemplateRelationId:
4600 case TSConfigRelationId:
4604 case AuthIdRelationId:
4608 case AuthMemRelationId:
4612 case DatabaseRelationId:
4616 case TableSpaceRelationId:
4620 case ForeignDataWrapperRelationId:
4624 case ForeignServerRelationId:
4628 case UserMappingRelationId:
4632 case DefaultAclRelationId:
4636 case ExtensionRelationId:
4640 case EventTriggerRelationId:
4644 case ParameterAclRelationId:
4648 case PolicyRelationId:
4652 case PublicationRelationId:
4656 case PublicationNamespaceRelationId:
4660 case PublicationRelRelationId:
4664 case SubscriptionRelationId:
4668 case TransformRelationId:
4697 elog(
ERROR,
"cache lookup failed for relation %u", relid);
4705 switch (relForm->relkind)
4707 case RELKIND_RELATION:
4708 case RELKIND_PARTITIONED_TABLE:
4712 case RELKIND_PARTITIONED_INDEX:
4715 case RELKIND_SEQUENCE:
4718 case RELKIND_TOASTVALUE:
4724 case RELKIND_MATVIEW:
4727 case RELKIND_COMPOSITE_TYPE:
4730 case RELKIND_FOREIGN_TABLE:
4739 if (objectSubId != 0)
4761 elog(
ERROR,
"cache lookup failed for constraint %u", constroid);
4777 elog(
ERROR,
"invalid constraint %u", constrForm->oid);
4797 elog(
ERROR,
"cache lookup failed for procedure %u", procid);
4805 if (procForm->prokind == PROKIND_AGGREGATE)
4807 else if (procForm->prokind == PROKIND_PROCEDURE)
4852 Assert((objname != NULL) == (objargs != NULL));
4861 case RelationRelationId:
4875 if (missing_ok && attr == NULL)
4881 if (objname && *objname ==
NIL)
4889 *objname =
lappend(*objname, attr);
4894 case ProcedureRelationId:
4910 case TypeRelationId:
4917 if (typeout == NULL)
4926 case CastRelationId:
4940 elog(
ERROR,
"could not find tuple for cast %u",
4963 case CollationRelationId:
4974 elog(
ERROR,
"cache lookup failed for collation %u",
4990 case ConstraintRelationId:
5000 elog(
ERROR,
"cache lookup failed for constraint %u",
5020 domain.
classId = TypeRelationId;
5037 case ConversionRelationId:
5048 elog(
ERROR,
"cache lookup failed for conversion %u",
5064 case AttrDefaultRelationId:
5073 elog(
ERROR,
"could not find tuple for attrdef %u",
5085 case LanguageRelationId:
5095 elog(
ERROR,
"cache lookup failed for language %u",
5108 case LargeObjectRelationId:
5117 case OperatorRelationId:
5123 if (oprname == NULL)
5132 case OperatorClassRelationId:
5145 elog(
ERROR,
"cache lookup failed for opclass %u",
5155 elog(
ERROR,
"cache lookup failed for access method %u",
5156 opcForm->opcmethod);
5173 case OperatorFamilyRelationId:
5178 case AccessMethodRelationId:
5186 elog(
ERROR,
"cache lookup failed for access method %u",
5196 case AccessMethodOperatorRelationId:
5207 amopDesc =
table_open(AccessMethodOperatorRelationId,
5223 elog(
ERROR,
"could not find tuple for amop entry %u",
5243 psprintf(
"%d", amopForm->amopstrategy));
5248 amopForm->amopstrategy,
5249 ltype, rtype, opfam.
data);
5258 case AccessMethodProcedureRelationId:
5269 amprocDesc =
table_open(AccessMethodProcedureRelationId,
5285 elog(
ERROR,
"could not find tuple for amproc entry %u",
5305 psprintf(
"%d", amprocForm->amprocnum));
5310 amprocForm->amprocnum,
5311 ltype, rtype, opfam.
data);
5320 case RewriteRelationId:
5334 elog(
ERROR,
"could not find tuple for rule %u",
5353 case TriggerRelationId:
5367 elog(
ERROR,
"could not find tuple for trigger %u",
5386 case NamespaceRelationId:
5394 elog(
ERROR,
"cache lookup failed for namespace %u",
5405 case StatisticExtRelationId:
5416 elog(
ERROR,
"cache lookup failed for statistics object %u",
5424 NameStr(formStatistic->stxname)));
5432 case TSParserRelationId:
5443 elog(
ERROR,
"cache lookup failed for text search parser %u",
5451 NameStr(formParser->prsname)));
5459 case TSDictionaryRelationId:
5470 elog(
ERROR,
"cache lookup failed for text search dictionary %u",
5478 NameStr(formDict->dictname)));
5486 case TSTemplateRelationId:
5497 elog(
ERROR,
"cache lookup failed for text search template %u",
5505 NameStr(formTmpl->tmplname)));
5513 case TSConfigRelationId:
5524 elog(
ERROR,
"cache lookup failed for text search configuration %u",
5540 case AuthIdRelationId:
5554 case AuthMemRelationId:
5566 Anum_pg_auth_members_oid,
5578 elog(
ERROR,
"could not find tuple for pg_auth_members entry %u",
5597 case DatabaseRelationId:
5605 elog(
ERROR,
"cache lookup failed for database %u",
5616 case TableSpaceRelationId:
5624 elog(
ERROR,
"cache lookup failed for tablespace %u",
5635 case ForeignDataWrapperRelationId:
5650 case ForeignServerRelationId:
5666 case UserMappingRelationId:
5672 const char *usename;
5679 elog(
ERROR,
"cache lookup failed for user mapping %u",
5684 useid = umform->umuser;
5706 case DefaultAclRelationId:
5719 Anum_pg_default_acl_oid,
5724 true, NULL, 1, skey);
5731 elog(
ERROR,
"could not find tuple for default ACL %u",
5756 switch (defacl->defaclobjtype)
5758 case DEFACLOBJ_RELATION:
5762 case DEFACLOBJ_SEQUENCE:
5766 case DEFACLOBJ_FUNCTION:
5770 case DEFACLOBJ_TYPE:
5774 case DEFACLOBJ_NAMESPACE:
5778 case DEFACLOBJ_LARGEOBJECT:
5780 " on large objects");
5788 *objname =
lappend(*objname, schema);
5797 case ExtensionRelationId:
5805 elog(
ERROR,
"cache lookup failed for extension %u",
5815 case EventTriggerRelationId:
5826 elog(
ERROR,
"cache lookup failed for event trigger %u",
5839 case ParameterAclRelationId:
5850 elog(
ERROR,
"cache lookup failed for parameter ACL %u",
5855 Anum_pg_parameter_acl_parname);
5864 case PolicyRelationId:
5878 elog(
ERROR,
"could not find tuple for policy %u",
5897 case PublicationRelationId:
5912 case PublicationNamespaceRelationId:
5936 case PublicationRelRelationId:
5947 elog(
ERROR,
"cache lookup failed for publication table %u",
5965 case SubscriptionRelationId:
5980 case TransformRelationId:
5985 char *transformLang;
5986 char *transformType;
5991 Anum_pg_transform_oid,
5997 elog(
ERROR,
"could not find tuple for transform %u",
6033 if (objname && *objname ==
NIL)
6034 elog(
ERROR,
"requested object address for unsupported object class %u: text result \"%s\"",
6040 if (buffer.
len == 0)
6042 Assert((objname == NULL || *objname ==
NIL) &&
6043 (objargs == NULL || *objargs ==
NIL));
6065 elog(
ERROR,
"cache lookup failed for opfamily %u", opfid);
6072 elog(
ERROR,
"cache lookup failed for access method %u",
6073 opfForm->opfmethod);
6108 elog(
ERROR,
"cache lookup failed for relation %u", relid);
6167 lb, TEXTOID, -1,
false, TYPALIGN_INT);
6189 case RELKIND_RELATION:
6190 case RELKIND_PARTITIONED_TABLE:
6193 case RELKIND_PARTITIONED_INDEX:
6195 case RELKIND_SEQUENCE:
6199 case RELKIND_MATVIEW:
6201 case RELKIND_FOREIGN_TABLE:
6203 case RELKIND_TOASTVALUE:
bool is_admin_of_role(Oid member, Oid role)
Oid get_role_oid(const char *rolname, bool missing_ok)
void aclcheck_error(AclResult aclerr, ObjectType objtype, const char *objectname)
bool object_ownercheck(Oid classid, Oid objectid, Oid roleid)
void aclcheck_error_type(AclResult aclerr, Oid typeOid)
bool has_createrole_privilege(Oid roleid)
Oid get_index_am_oid(const char *amname, bool missing_ok)
char * get_am_name(Oid amOid)
Oid get_am_oid(const char *amname, bool missing_ok)
#define PG_GETARG_ARRAYTYPE_P(n)
ArrayType * construct_empty_array(Oid elmtype)
void deconstruct_array_builtin(ArrayType *array, Oid elmtype, Datum **elemsp, bool **nullsp, int *nelemsp)
ArrayType * construct_md_array(Datum *elems, bool *nulls, int ndims, int *dims, int *lbs, Oid elmtype, int elmlen, bool elmbyval, char elmalign)
#define InvalidAttrNumber
char * get_tablespace_name(Oid spc_oid)
Oid get_tablespace_oid(const char *tablespacename, bool missing_ok)
static Datum values[MAXATTR]
#define CStringGetTextDatum(s)
#define FORMAT_TYPE_ALLOW_INVALID
#define TextDatumGetCString(d)
#define FORMAT_TYPE_INVALID_AS_NULL
#define FORMAT_TYPE_FORCE_QUALIFY
#define OidIsValid(objectId)
bool IsSharedRelation(Oid relationId)
Oid get_database_oid(const char *dbname, bool missing_ok)
int errmsg_internal(const char *fmt,...)
int errdetail(const char *fmt,...)
int errhint(const char *fmt,...)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
Oid get_event_trigger_oid(const char *trigname, bool missing_ok)
Oid get_extension_oid(const char *extname, bool missing_ok)
char * get_extension_name(Oid ext_oid)
#define PG_GETARG_DATUM(n)
#define PG_RETURN_TEXT_P(x)
#define PG_GETARG_INT32(n)
#define PG_RETURN_DATUM(x)
ForeignServer * GetForeignServerByName(const char *srvname, bool missing_ok)
Oid get_foreign_server_oid(const char *servername, bool missing_ok)
ForeignServer * GetForeignServer(Oid serverid)
ForeignDataWrapper * GetForeignDataWrapperExtended(Oid fdwid, bits16 flags)
ForeignServer * GetForeignServerExtended(Oid serverid, bits16 flags)
Oid get_foreign_data_wrapper_oid(const char *fdwname, bool missing_ok)
TypeFuncClass get_call_result_type(FunctionCallInfo fcinfo, Oid *resultTypeId, TupleDesc *resultTupleDesc)
static Datum HeapTupleGetDatum(const HeapTupleData *tuple)
Oid get_transform_oid(Oid type_id, Oid lang_id, bool missing_ok)
void systable_endscan(SysScanDesc sysscan)
HeapTuple systable_getnext(SysScanDesc sysscan)
SysScanDesc systable_beginscan(Relation heapRelation, Oid indexId, bool indexOK, Snapshot snapshot, int nkeys, ScanKey key)
Assert(PointerIsAligned(start, uint64))
HeapTuple heap_copytuple(HeapTuple tuple)
HeapTuple heap_form_tuple(TupleDesc tupleDescriptor, const Datum *values, const bool *isnull)
#define HeapTupleIsValid(tuple)
static Datum heap_getattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
static void * GETSTRUCT(const HeapTupleData *tuple)
bool lo_compat_privileges
List * lappend(List *list, void *datum)
List * list_copy_tail(const List *oldlist, int nskip)
List * lcons(void *datum, List *list)
List * list_copy_head(const List *oldlist, int len)
void LockSharedObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
void LockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
void LockTuple(Relation relation, const ItemPointerData *tid, LOCKMODE lockmode)
void UnlockSharedObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
void UnlockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
#define InplaceUpdateTupleLock
Oid get_cast_oid(Oid sourcetypeid, Oid targettypeid, bool missing_ok)
AttrNumber get_attnum(Oid relid, const char *attname)
char * get_database_name(Oid dbid)
char get_rel_relkind(Oid relid)
Oid get_publication_oid(const char *pubname, bool missing_ok)
char * get_language_name(Oid langoid, bool missing_ok)
char * get_namespace_name_or_temp(Oid nspid)
char * get_attname(Oid relid, AttrNumber attnum, bool missing_ok)
Oid get_subscription_oid(const char *subname, bool missing_ok)
char * get_subscription_name(Oid subid, bool missing_ok)
char * get_publication_name(Oid pubid, bool missing_ok)
char * get_namespace_name(Oid nspid)
char * pstrdup(const char *in)
void pfree(void *pointer)
MemoryContext CurrentMemoryContext
void MemoryContextDelete(MemoryContext context)
#define AllocSetContextCreate
#define ALLOCSET_DEFAULT_SIZES
char * GetUserNameFromId(Oid roleid, bool noerr)
char * NameListToString(const List *names)
bool TSTemplateIsVisible(Oid tmplId)
bool OpfamilyIsVisible(Oid opfid)
bool CollationIsVisible(Oid collid)
bool ConversionIsVisible(Oid conid)
Oid get_statistics_object_oid(List *names, bool missing_ok)
Oid get_collation_oid(List *collname, bool missing_ok)
Oid get_namespace_oid(const char *nspname, bool missing_ok)
bool RelationIsVisible(Oid relid)
bool OpclassIsVisible(Oid opcid)
bool TSParserIsVisible(Oid prsId)
Oid get_conversion_oid(List *conname, bool missing_ok)
Oid get_ts_dict_oid(List *names, bool missing_ok)
Oid get_ts_parser_oid(List *names, bool missing_ok)
RangeVar * makeRangeVarFromNameList(const List *names)
Oid get_ts_config_oid(List *names, bool missing_ok)
bool TSConfigIsVisible(Oid cfgid)
bool StatisticsObjIsVisible(Oid stxid)
bool TSDictionaryIsVisible(Oid dictId)
Oid get_ts_template_oid(List *names, bool missing_ok)
#define castNode(_type_, nodeptr)
static void getRelationDescription(StringInfo buffer, Oid relid, bool missing_ok)
int get_object_catcache_name(Oid class_id)
char * getObjectTypeDescription(const ObjectAddress *object, bool missing_ok)
ArrayType * strlist_to_textarray(List *list)
bool get_object_namensp_unique(Oid class_id)
ObjectAddress get_object_address_rv(ObjectType objtype, RangeVar *rel, List *object, Relation *relp, LOCKMODE lockmode, bool missing_ok)
AttrNumber get_object_attnum_owner(Oid class_id)
Datum pg_identify_object(PG_FUNCTION_ARGS)
HeapTuple get_catalog_object_by_oid(Relation catalog, AttrNumber oidcol, Oid objectId)
AttrNumber get_object_attnum_oid(Oid class_id)
static const ObjectPropertyType ObjectProperty[]
ObjectType get_relkind_objtype(char relkind)
AttrNumber get_object_attnum_namespace(Oid class_id)
void check_object_ownership(Oid roleid, ObjectType objtype, ObjectAddress address, Node *object, Relation relation)
char * getObjectDescriptionOids(Oid classid, Oid objid)
char * getObjectIdentityParts(const ObjectAddress *object, List **objname, List **objargs, bool missing_ok)
static ObjectAddress get_object_address_publication_schema(List *object, bool missing_ok)
AttrNumber get_object_attnum_name(Oid class_id)
static ObjectAddress get_object_address_relobject(ObjectType objtype, List *object, Relation *relp, bool missing_ok)
static void getConstraintTypeDescription(StringInfo buffer, Oid constroid, bool missing_ok)
const char * get_object_class_descr(Oid class_id)
static void getProcedureTypeDescription(StringInfo buffer, Oid procid, bool missing_ok)
static void getOpFamilyIdentity(StringInfo buffer, Oid opfid, List **object, bool missing_ok)
static ObjectAddress get_object_address_defacl(List *object, bool missing_ok)
char * getObjectDescription(const ObjectAddress *object, bool missing_ok)
Datum pg_get_acl(PG_FUNCTION_ARGS)
static bool getPublicationSchemaInfo(const ObjectAddress *object, bool missing_ok, char **pubname, char **nspname)
AttrNumber get_object_attnum_acl(Oid class_id)
static void getRelationTypeDescription(StringInfo buffer, Oid relid, int32 objectSubId, bool missing_ok)
int get_object_catcache_oid(Oid class_id)
static void getOpFamilyDescription(StringInfo buffer, Oid opfid, bool missing_ok)
Oid get_object_oid_index(Oid class_id)
static ObjectAddress get_object_address_unqualified(ObjectType objtype, String *strval, bool missing_ok)
int read_objtype_from_string(const char *objtype)
const ObjectAddress InvalidObjectAddress
ObjectType get_object_type(Oid class_id, Oid object_id)
static ObjectAddress get_object_address_publication_rel(List *object, Relation *relp, bool missing_ok)
static ObjectAddress get_object_address_opf_member(ObjectType objtype, List *object, bool missing_ok)
static const ObjectPropertyType * get_object_property_data(Oid class_id)
static ObjectAddress get_object_address_type(ObjectType objtype, TypeName *typename, bool missing_ok)
static ObjectAddress get_object_address_usermapping(List *object, bool missing_ok)
static const struct object_type_map ObjectTypeMap[]
static void getRelationIdentity(StringInfo buffer, Oid relid, List **object, bool missing_ok)
static ObjectAddress get_object_address_opcf(ObjectType objtype, List *object, bool missing_ok)
Datum pg_identify_object_as_address(PG_FUNCTION_ARGS)
ObjectAddress get_object_address(ObjectType objtype, Node *object, Relation *relp, LOCKMODE lockmode, bool missing_ok)
Datum pg_describe_object(PG_FUNCTION_ARGS)
Datum pg_get_object_address(PG_FUNCTION_ARGS)
static ObjectAddress get_object_address_attribute(ObjectType objtype, List *object, Relation *relp, LOCKMODE lockmode, bool missing_ok)
static ObjectAddress get_relation_by_qualified_name(ObjectType objtype, List *object, Relation *relp, LOCKMODE lockmode, bool missing_ok)
char * getObjectIdentity(const ObjectAddress *object, bool missing_ok)
Oid get_object_namespace(const ObjectAddress *address)
HeapTuple get_catalog_object_by_oid_extended(Relation catalog, AttrNumber oidcol, Oid objectId, bool locktup)
static ObjectAddress get_object_address_attrdef(ObjectType objtype, List *object, Relation *relp, LOCKMODE lockmode, bool missing_ok)
bool is_objectclass_supported(Oid class_id)
static List * textarray_to_strvaluelist(ArrayType *arr)
#define ObjectAddressSet(addr, class_id, object_id)
Oid get_opclass_oid(Oid amID, List *opclassname, bool missing_ok)
Oid get_opfamily_oid(Oid amID, List *opfamilyname, bool missing_ok)
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
Oid LookupFuncWithArgs(ObjectType objtype, ObjectWithArgs *func, bool missing_ok)
Oid LookupOperWithArgs(ObjectWithArgs *oper, bool noError)
char * TypeNameToString(const TypeName *typeName)
Type LookupTypeName(ParseState *pstate, const TypeName *typeName, int32 *typmod_p, bool missing_ok)
TypeName * typeStringToTypeName(const char *str, Node *escontext)
Oid typenameTypeId(ParseState *pstate, const TypeName *typeName)
Oid LookupTypeNameOid(ParseState *pstate, const TypeName *typeName, bool missing_ok)
@ OBJECT_PUBLICATION_NAMESPACE
FormData_pg_am * Form_pg_am
FormData_pg_amop * Form_pg_amop
FormData_pg_amproc * Form_pg_amproc
Oid GetAttrDefaultOid(Oid relid, AttrNumber attnum)
ObjectAddress GetAttrDefaultColumnAddress(Oid attrdefoid)
FormData_pg_auth_members * Form_pg_auth_members
FormData_pg_authid * Form_pg_authid
FormData_pg_cast * Form_pg_cast
FormData_pg_class * Form_pg_class
FormData_pg_collation * Form_pg_collation
Oid get_relation_constraint_oid(Oid relid, const char *conname, bool missing_ok)
Oid get_domain_constraint_oid(Oid typid, const char *conname, bool missing_ok)
FormData_pg_constraint * Form_pg_constraint
FormData_pg_conversion * Form_pg_conversion
FormData_pg_default_acl * Form_pg_default_acl
FormData_pg_event_trigger * Form_pg_event_trigger
FormData_pg_language * Form_pg_language
bool LargeObjectExists(Oid loid)
#define lfirst_node(type, lc)
static int list_length(const List *l)
#define linitial_node(type, l)
#define lsecond_node(type, l)
#define list_make3(x1, x2, x3)
#define list_make2(x1, x2)
FormData_pg_opclass * Form_pg_opclass
FormData_pg_opfamily * Form_pg_opfamily
Oid ParameterAclLookup(const char *parameter, bool missing_ok)
FormData_pg_policy * Form_pg_policy
FormData_pg_proc * Form_pg_proc
Publication * GetPublicationByName(const char *pubname, bool missing_ok)
FormData_pg_publication_namespace * Form_pg_publication_namespace
FormData_pg_publication_rel * Form_pg_publication_rel
FormData_pg_rewrite * Form_pg_rewrite
FormData_pg_statistic_ext * Form_pg_statistic_ext
FormData_pg_trigger * Form_pg_trigger
FormData_pg_ts_config * Form_pg_ts_config
FormData_pg_ts_dict * Form_pg_ts_dict
FormData_pg_ts_parser * Form_pg_ts_parser
FormData_pg_ts_template * Form_pg_ts_template
FormData_pg_type * Form_pg_type
FormData_pg_user_mapping * Form_pg_user_mapping
Oid get_relation_policy_oid(Oid relid, const char *policy_name, bool missing_ok)
static Datum PointerGetDatum(const void *X)
static Name DatumGetName(Datum X)
static Oid DatumGetObjectId(Datum X)
static Datum Int16GetDatum(int16 X)
static Datum ObjectIdGetDatum(Oid X)
static Datum CStringGetDatum(const char *X)
static Datum Int32GetDatum(int32 X)
static Datum CharGetDatum(char X)
Oid get_language_oid(const char *langname, bool missing_ok)
char * psprintf(const char *fmt,...)
char * format_procedure_extended(Oid procedure_oid, bits16 flags)
char * format_procedure(Oid procedure_oid)
char * format_operator_extended(Oid operator_oid, bits16 flags)
void format_operator_parts(Oid operator_oid, List **objnames, List **objargs, bool missing_ok)
void format_procedure_parts(Oid procedure_oid, List **objnames, List **objargs, bool missing_ok)
char * format_operator(Oid operator_oid)
#define FORMAT_OPERATOR_INVALID_AS_NULL
#define FORMAT_OPERATOR_FORCE_QUALIFY
#define FORMAT_PROC_FORCE_QUALIFY
#define FORMAT_PROC_INVALID_AS_NULL
#define RelationGetRelid(relation)
#define RelationGetDescr(relation)
#define RelationGetRelationName(relation)
Oid get_rewrite_oid(Oid relid, const char *rulename, bool missing_ok)
char * quote_qualified_identifier(const char *qualifier, const char *ident)
const char * quote_identifier(const char *ident)
void ScanKeyInit(ScanKey entry, AttrNumber attributeNumber, StrategyNumber strategy, RegProcedure procedure, Datum argument)
uint64 SharedInvalidMessageCounter
Relation relation_openrv_extended(const RangeVar *relation, LOCKMODE lockmode, bool missing_ok)
void relation_close(Relation relation, LOCKMODE lockmode)
Relation relation_openrv(const RangeVar *relation, LOCKMODE lockmode)
#define BTEqualStrategyNumber
void appendStringInfo(StringInfo str, const char *fmt,...)
void appendStringInfoString(StringInfo str, const char *s)
void initStringInfo(StringInfo str)
AttrNumber attnum_namespace
bool superuser_arg(Oid roleid)
HeapTuple SearchSysCacheCopyAttNum(Oid relid, int16 attnum)
void ReleaseSysCache(HeapTuple tuple)
HeapTuple SearchSysCacheLockedCopy1(int cacheId, Datum key1)
HeapTuple SearchSysCache1(int cacheId, Datum key1)
HeapTuple SearchSysCache3(int cacheId, Datum key1, Datum key2, Datum key3)
Datum SysCacheGetAttr(int cacheId, HeapTuple tup, AttrNumber attributeNumber, bool *isNull)
HeapTuple SearchSysCache2(int cacheId, Datum key1, Datum key2)
HeapTuple SearchSysCache4(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4)
Datum SysCacheGetAttrNotNull(int cacheId, HeapTuple tup, AttrNumber attributeNumber)
#define SearchSysCacheCopy1(cacheId, key1)
#define GetSysCacheOid2(cacheId, oidcol, key1, key2)
void table_close(Relation relation, LOCKMODE lockmode)
Relation table_open(Oid relationId, LOCKMODE lockmode)
Relation table_openrv_extended(const RangeVar *relation, LOCKMODE lockmode, bool missing_ok)
Oid get_trigger_oid(Oid relid, const char *trigname, bool missing_ok)
String * makeString(char *str)
Float * makeFloat(char *numericStr)
text * cstring_to_text(const char *s)