193 bool include_out_arguments,
int pronargs,
241 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
242 errmsg(
"cross-database references are not implemented: \"%s.%s.%s\"",
298 (
errcode(ERRCODE_INVALID_TABLE_DEFINITION),
299 errmsg(
"temporary tables cannot specify a schema name")));
333 callback(relation, relId, oldRelId, callback_arg);
356 if (relId == oldRelId)
379 (
errcode(ERRCODE_LOCK_NOT_AVAILABLE),
380 errmsg(
"could not obtain lock on relation \"%s.%s\"",
384 (
errcode(ERRCODE_LOCK_NOT_AVAILABLE),
385 errmsg(
"could not obtain lock on relation \"%s\"",
413 errmsg(
"relation \"%s.%s\" does not exist",
418 errmsg(
"relation \"%s\" does not exist",
445 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
446 errmsg(
"cross-database references are not implemented: \"%s.%s.%s\"",
454 if (strcmp(newRelation->
schemaname,
"pg_temp") == 0)
483 (
errcode(ERRCODE_UNDEFINED_SCHEMA),
484 errmsg(
"no schema has been selected to create in")));
521 Oid *existing_relation_id)
537 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
538 errmsg(
"cross-database references are not implemented: \"%s.%s.%s\"",
558 if (existing_relation_id != NULL)
580 if (relid == oldrelid &&
nspid == oldnspid)
583 if (
nspid != oldnspid)
592 if (
nspid != oldnspid)
601 if (relid != oldrelid)
616 if (existing_relation_id != NULL)
617 *existing_relation_id = relid;
630 case RELPERSISTENCE_TEMP:
635 (
errcode(ERRCODE_INVALID_TABLE_DEFINITION),
636 errmsg(
"cannot create relations in temporary schemas of other sessions")));
639 (
errcode(ERRCODE_INVALID_TABLE_DEFINITION),
640 errmsg(
"cannot create temporary relation in non-temporary schema")));
643 case RELPERSISTENCE_PERMANENT:
648 (
errcode(ERRCODE_INVALID_TABLE_DEFINITION),
649 errmsg(
"cannot create relations in temporary schemas of other sessions")));
654 (
errcode(ERRCODE_INVALID_TABLE_DEFINITION),
655 errmsg(
"only temporary relations may be created in temporary schemas")));
702 elog(
ERROR,
"cache lookup failed for relation %u", relid);
712 relnamespace = relform->relnamespace;
713 if (relnamespace != PG_CATALOG_NAMESPACE &&
731 if (namespaceId == relnamespace)
810 elog(
ERROR,
"cache lookup failed for type %u", typid);
820 typnamespace = typform->typnamespace;
821 if (typnamespace != PG_CATALOG_NAMESPACE &&
839 if (namespaceId == typnamespace)
935 bool expand_variadic,
bool expand_defaults,
936 bool include_out_arguments,
bool missing_ok)
939 bool any_special =
false;
947 Assert(nargs >= 0 || !(expand_variadic | expand_defaults));
973 Oid *proargtypes = procform->proargtypes.values;
980 int *argnumbers = NULL;
986 if (procform->pronamespace != namespaceId)
999 if (procform->pronamespace ==
lfirst_oid(nsp) &&
1014 if (include_out_arguments)
1016 Datum proallargtypes;
1020 Anum_pg_proc_proallargtypes,
1031 elog(
ERROR,
"proallargtypes is not a 1-D Oid array or it contains nulls");
1037 if (argnames !=
NIL)
1046 if (
OidIsValid(procform->provariadic) && expand_variadic)
1056 if (
pronargs > nargs && expand_defaults)
1059 if (nargs + procform->pronargdefaults <
pronargs)
1061 use_defaults =
true;
1064 use_defaults =
false;
1067 if (
pronargs != nargs && !use_defaults)
1088 if (
pronargs <= nargs && expand_variadic)
1090 va_elem_type = procform->provariadic;
1092 any_special |= variadic;
1103 if (
pronargs > nargs && expand_defaults)
1106 if (nargs + procform->pronargdefaults <
pronargs)
1108 use_defaults =
true;
1112 use_defaults =
false;
1115 if (nargs >= 0 &&
pronargs != nargs && !variadic && !use_defaults)
1128 effective_nargs *
sizeof(
Oid));
1130 newResult->
oid = procform->oid;
1132 newResult->
nargs = effective_nargs;
1138 newResult->
args[
j] = proargtypes[argnumbers[
j]];
1149 for (
int j =
pronargs - 1;
j < effective_nargs;
j++)
1150 newResult->
args[
j] = va_elem_type;
1164 if (resultList != NULL &&
1180 if (catlist->
ordered && !any_special)
1183 if (effective_nargs == resultList->
nargs &&
1184 memcmp(newResult->
args,
1186 effective_nargs *
sizeof(
Oid)) == 0)
1187 prevResult = resultList;
1193 int cmp_nargs = newResult->
nargs - newResult->
ndargs;
1195 for (prevResult = resultList;
1197 prevResult = prevResult->
next)
1199 if (cmp_nargs == prevResult->
nargs - prevResult->
ndargs &&
1200 memcmp(newResult->
args,
1202 cmp_nargs *
sizeof(
Oid)) == 0)
1218 if (pathpos != prevResult->
pathpos)
1223 preference = pathpos - prevResult->
pathpos;
1225 else if (variadic && prevResult->
nvargs == 0)
1235 else if (!variadic && prevResult->
nvargs > 0)
1259 else if (preference < 0)
1262 if (prevResult == resultList)
1263 resultList = prevResult->
next;
1268 for (prevPrevResult = resultList;
1270 prevPrevResult = prevPrevResult->
next)
1272 if (prevResult == prevPrevResult->
next)
1274 prevPrevResult->
next = prevResult->
next;
1296 newResult->
next = resultList;
1297 resultList = newResult;
1328 bool include_out_arguments,
int pronargs,
1355 &p_argtypes, &p_argnames, &p_argmodes);
1356 Assert(p_argnames != NULL);
1362 memset(arggiven,
false,
pronargs *
sizeof(
bool));
1365 for (ap = 0; ap < numposargs; ap++)
1367 (*argnumbers)[ap] = ap;
1368 arggiven[ap] =
true;
1372 foreach(lc, argnames)
1374 char *argname = (
char *)
lfirst(lc);
1380 for (
i = 0;
i < pronallargs;
i++)
1383 if (!include_out_arguments &&
1389 if (p_argnames[
i] && strcmp(p_argnames[
i], argname) == 0)
1394 arggiven[pp] =
true;
1395 (*argnumbers)[ap] = pp;
1413 int first_arg_with_default =
pronargs - procform->pronargdefaults;
1415 for (pp = numposargs; pp <
pronargs; pp++)
1420 if (pp < first_arg_with_default)
1422 (*argnumbers)[ap++] = pp;
1447 elog(
ERROR,
"cache lookup failed for function %u", funcid);
1457 pronamespace = procform->pronamespace;
1458 if (pronamespace != PG_CATALOG_NAMESPACE &&
1470 int nargs = procform->pronargs;
1476 nargs,
NIL,
false,
false,
false,
false);
1478 for (; clist; clist = clist->
next)
1480 if (memcmp(clist->
args, procform->proargtypes.values,
1481 nargs *
sizeof(
Oid)) == 0)
1484 visible = (clist->
oid == funcid);
1536 Oid result = operclass->oid;
1579 if (operform->oprnamespace == namespaceId)
1581 Oid result = operform->oid;
1614 char *resultSpace = NULL;
1629 if (missing_schema_ok && !
OidIsValid(namespaceId))
1651 #define SPACE_PER_OP MAXALIGN(offsetof(struct _FuncCandidateList, args) + \
1665 if (oprkind && operform->oprkind != oprkind)
1671 if (operform->oprnamespace != namespaceId)
1685 if (operform->oprnamespace ==
lfirst_oid(nsp) &&
1710 if (operform->oprleft == resultList->
args[0] &&
1711 operform->oprright == resultList->
args[1])
1712 prevResult = resultList;
1718 for (prevResult = resultList;
1720 prevResult = prevResult->
next)
1722 if (operform->oprleft == prevResult->
args[0] &&
1723 operform->oprright == prevResult->
args[1])
1731 if (pathpos > prevResult->
pathpos)
1734 prevResult->
pathpos = pathpos;
1735 prevResult->
oid = operform->oid;
1748 newResult->
oid = operform->oid;
1750 newResult->
nargs = 2;
1754 newResult->
args[0] = operform->oprleft;
1755 newResult->
args[1] = operform->oprright;
1756 newResult->
next = resultList;
1757 resultList = newResult;
1791 oprnamespace = oprform->oprnamespace;
1792 if (oprnamespace != PG_CATALOG_NAMESPACE &&
1803 char *oprname =
NameStr(oprform->oprname);
1806 oprform->oprleft, oprform->oprright)
1867 elog(
ERROR,
"cache lookup failed for opclass %u", opcid);
1877 opcnamespace = opcform->opcnamespace;
1878 if (opcnamespace != PG_CATALOG_NAMESPACE &&
1889 char *opcname =
NameStr(opcform->opcname);
1950 elog(
ERROR,
"cache lookup failed for opfamily %u", opfid);
1960 opfnamespace = opfform->opfnamespace;
1961 if (opfnamespace != PG_CATALOG_NAMESPACE &&
1972 char *opfname =
NameStr(opfform->opfname);
2015 if (collform->collprovider == COLLPROVIDER_ICU)
2092 collnamespace = collform->collnamespace;
2093 if (collnamespace != PG_CATALOG_NAMESPACE &&
2105 char *collname =
NameStr(collform->collname);
2165 elog(
ERROR,
"cache lookup failed for conversion %u", conid);
2175 connamespace = conform->connamespace;
2176 if (connamespace != PG_CATALOG_NAMESPACE &&
2187 char *conname =
NameStr(conform->conname);
2246 (
errcode(ERRCODE_UNDEFINED_OBJECT),
2247 errmsg(
"statistics object \"%s\" does not exist",
2269 elog(
ERROR,
"cache lookup failed for statistics object %u", relid);
2279 stxnamespace = stxform->stxnamespace;
2280 if (stxnamespace != PG_CATALOG_NAMESPACE &&
2290 char *stxname =
NameStr(stxform->stxname);
2298 if (namespaceId == stxnamespace)
2369 (
errcode(ERRCODE_UNDEFINED_OBJECT),
2370 errmsg(
"text search parser \"%s\" does not exist",
2392 elog(
ERROR,
"cache lookup failed for text search parser %u", prsId);
2402 namespace = form->prsnamespace;
2403 if (
namespace != PG_CATALOG_NAMESPACE &&
2424 if (namespaceId ==
namespace)
2495 (
errcode(ERRCODE_UNDEFINED_OBJECT),
2496 errmsg(
"text search dictionary \"%s\" does not exist",
2518 elog(
ERROR,
"cache lookup failed for text search dictionary %u",
2529 namespace = form->dictnamespace;
2530 if (
namespace != PG_CATALOG_NAMESPACE &&
2551 if (namespaceId ==
namespace)
2581 char *template_name;
2622 (
errcode(ERRCODE_UNDEFINED_OBJECT),
2623 errmsg(
"text search template \"%s\" does not exist",
2645 elog(
ERROR,
"cache lookup failed for text search template %u", tmplId);
2655 namespace = form->tmplnamespace;
2656 if (
namespace != PG_CATALOG_NAMESPACE &&
2677 if (namespaceId ==
namespace)
2748 (
errcode(ERRCODE_UNDEFINED_OBJECT),
2749 errmsg(
"text search configuration \"%s\" does not exist",
2771 elog(
ERROR,
"cache lookup failed for text search configuration %u",
2782 namespace = form->cfgnamespace;
2783 if (
namespace != PG_CATALOG_NAMESPACE &&
2804 if (namespaceId ==
namespace)
2839 char *schemaname = NULL;
2840 char *objname = NULL;
2861 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
2862 errmsg(
"cross-database references are not implemented: %s",
2867 (
errcode(ERRCODE_SYNTAX_ERROR),
2868 errmsg(
"improper qualified name (too many dotted names): %s",
2873 *nspname_p = schemaname;
2874 *objname_p = objname;
2891 if (strcmp(nspname,
"pg_temp") == 0)
2924 if (strcmp(nspname,
"pg_temp") == 0)
2967 if (strcmp(nspname,
"pg_temp") == 0)
2997 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
2998 errmsg(
"cannot move objects into or out of temporary schemas")));
3001 if (nspOid == PG_TOAST_NAMESPACE || oldNspOid == PG_TOAST_NAMESPACE)
3003 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
3004 errmsg(
"cannot move objects into or out of TOAST schema")));
3031 if (strcmp(schemaname,
"pg_temp") == 0)
3054 (
errcode(ERRCODE_UNDEFINED_SCHEMA),
3055 errmsg(
"no schema has been selected to create in")));
3076 (
errcode(ERRCODE_UNDEFINED_SCHEMA),
3077 errmsg(
"schema \"%s\" does not exist", nspname)));
3107 (
errcode(ERRCODE_SYNTAX_ERROR),
3108 errmsg(
"improper relation name (too many dotted names): %s",
3146 elog(
ERROR,
"unexpected node type in name list: %d",
3229 result = (strncmp(nspname,
"pg_temp_", 8) == 0) ||
3230 (strncmp(nspname,
"pg_toast_temp_", 14) == 0);
3308 if (strncmp(nspname,
"pg_temp_", 8) == 0)
3309 result = atoi(nspname + 8);
3310 else if (strncmp(nspname,
"pg_toast_temp_", 14) == 0)
3311 result = atoi(nspname + 14);
3468 if (lc &&
lfirst_oid(lc) == PG_CATALOG_NAMESPACE)
3506 char *collation_name;
3547 (
errcode(ERRCODE_UNDEFINED_OBJECT),
3548 errmsg(
"collation \"%s\" for encoding \"%s\" does not exist",
3560 char *conversion_name;
3602 (
errcode(ERRCODE_UNDEFINED_OBJECT),
3603 errmsg(
"conversion \"%s\" does not exist",
3674 temp_missing =
false;
3675 foreach(l, namelist)
3677 char *curname = (
char *)
lfirst(l);
3680 if (strcmp(curname,
"$user") == 0)
3701 else if (strcmp(curname,
"pg_temp") == 0)
3714 temp_missing =
true;
3746 oidlist =
lcons_oid(PG_CATALOG_NAMESPACE, oidlist);
3761 pathChanged =
false;
3859 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
3860 errmsg(
"permission denied to create temporary tables in database \"%s\"",
3875 (
errcode(ERRCODE_READ_ONLY_SQL_TRANSACTION),
3876 errmsg(
"cannot create temporary tables during recovery")));
3881 (
errcode(ERRCODE_READ_ONLY_SQL_TRANSACTION),
3882 errmsg(
"cannot create temporary tables during a parallel operation")));
3916 snprintf(namespaceName,
sizeof(namespaceName),
"pg_toast_temp_%d",
4054 object.
classId = NamespaceRelationId;
4055 object.objectId = tempNamespaceId;
4056 object.objectSubId = 0;
4235 if (!includeImplicit)
4269 if (count < sarray_len)
4270 sarray[count] = namespaceId;
void aclcheck_error(AclResult aclerr, ObjectType objtype, const char *objectname)
AclResult object_aclcheck(Oid classid, Oid objectid, Oid roleid, AclMode mode)
bool object_ownercheck(Oid classid, Oid objectid, Oid roleid)
#define DatumGetArrayTypeP(X)
#define InvalidSubTransactionId
#define OidIsValid(objectId)
char * get_database_name(Oid dbid)
elog(ERROR, "%s: %s", p2, msg)
void performDeletion(const ObjectAddress *object, DropBehavior behavior, int flags)
#define PERFORM_DELETION_SKIP_EXTENSIONS
#define PERFORM_DELETION_QUIETLY
#define PERFORM_DELETION_SKIP_ORIGINAL
#define PERFORM_DELETION_INTERNAL
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
bool is_encoding_supported_by_icu(int encoding)
bool equal(const void *a, const void *b)
#define PG_RETURN_BOOL(x)
int get_func_arg_info(HeapTuple procTup, Oid **p_argtypes, char ***p_argnames, char **p_argmodes)
#define GUC_check_errdetail
#define HeapTupleIsValid(tuple)
#define IsParallelWorker()
void AcceptInvalidationMessages(void)
void CacheRegisterSyscacheCallback(int cacheid, SyscacheCallbackFunction func, Datum arg)
void before_shmem_exit(pg_on_exit_callback function, Datum arg)
Assert(fmt[strlen(fmt) - 1] !='\n')
List * lappend_oid(List *list, Oid datum)
List * list_copy(const List *oldlist)
List * list_delete_first(List *list)
void list_free(List *list)
bool list_member_oid(const List *list, Oid datum)
List * lcons_oid(Oid datum, List *list)
bool ConditionalLockRelationOid(Oid relid, LOCKMODE lockmode)
void UnlockRelationOid(Oid relid, LOCKMODE lockmode)
void LockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
void LockRelationOid(Oid relid, LOCKMODE lockmode)
void UnlockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
char * get_namespace_name(Oid nspid)
char get_rel_relkind(Oid relid)
Oid get_relname_relid(const char *relname, Oid relnamespace)
RangeVar * makeRangeVar(char *schemaname, char *relname, int location)
int GetDatabaseEncoding(void)
const char * GetDatabaseEncodingName(void)
char * pstrdup(const char *in)
void pfree(void *pointer)
MemoryContext TopMemoryContext
void * palloc0(Size size)
#define IsBootstrapProcessingMode()
Oid RangeVarGetAndCheckCreationNamespace(RangeVar *relation, LOCKMODE lockmode, Oid *existing_relation_id)
Oid OpclassnameGetOpcid(Oid amid, const char *opcname)
bool isTempOrTempToastNamespace(Oid namespaceId)
void ResetTempTableNamespace(void)
static bool baseTempCreationPending
Oid FindDefaultConversionProc(int32 for_encoding, int32 to_encoding)
Oid OpernameGetOprid(List *names, Oid oprleft, Oid oprright)
Oid LookupExplicitNamespace(const char *nspname, bool missing_ok)
char * NameListToQuotedString(const List *names)
Datum pg_is_other_temp_schema(PG_FUNCTION_ARGS)
bool TSTemplateIsVisible(Oid tmplId)
Oid QualifiedNameGetCreationNamespace(const List *names, char **objname_p)
bool OpfamilyIsVisible(Oid opfid)
bool CollationIsVisible(Oid collid)
static Oid baseCreationNamespace
bool TypeIsVisible(Oid typid)
bool isOtherTempNamespace(Oid namespaceId)
static Oid lookup_collation(const char *collname, Oid collnamespace, int32 encoding)
Oid CollationGetCollid(const char *collname)
void assign_search_path(const char *newval, void *extra)
static Oid activeCreationNamespace
bool isTempNamespace(Oid namespaceId)
bool isAnyTempNamespace(Oid namespaceId)
Datum pg_operator_is_visible(PG_FUNCTION_ARGS)
static List * activeSearchPath
bool ConversionIsVisible(Oid conid)
static bool baseSearchPathValid
static SubTransactionId myTempNamespaceSubID
Oid get_statistics_object_oid(List *names, bool missing_ok)
Oid LookupCreationNamespace(const char *nspname)
void RangeVarAdjustRelationPersistence(RangeVar *newRelation, Oid nspid)
static Oid myTempToastNamespace
Datum pg_collation_is_visible(PG_FUNCTION_ARGS)
List * fetch_search_path(bool includeImplicit)
Oid get_collation_oid(List *collname, bool missing_ok)
void DeconstructQualifiedName(const List *names, char **nspname_p, char **objname_p)
Datum pg_function_is_visible(PG_FUNCTION_ARGS)
Datum pg_type_is_visible(PG_FUNCTION_ARGS)
FuncCandidateList FuncnameGetCandidates(List *names, int nargs, List *argnames, bool expand_variadic, bool expand_defaults, bool include_out_arguments, bool missing_ok)
Datum pg_opclass_is_visible(PG_FUNCTION_ARGS)
Oid get_namespace_oid(const char *nspname, bool missing_ok)
Oid TypenameGetTypidExtended(const char *typname, bool temp_ok)
Oid RangeVarGetCreationNamespace(const RangeVar *newRelation)
bool RelationIsVisible(Oid relid)
Datum pg_ts_config_is_visible(PG_FUNCTION_ARGS)
Datum pg_opfamily_is_visible(PG_FUNCTION_ARGS)
bool OpclassIsVisible(Oid opcid)
Oid ConversionGetConid(const char *conname)
void AtEOSubXact_Namespace(bool isCommit, SubTransactionId mySubid, SubTransactionId parentSubid)
TempNamespaceStatus checkTempNamespaceStatus(Oid namespaceId)
Datum pg_conversion_is_visible(PG_FUNCTION_ARGS)
void CheckSetNamespace(Oid oldNspOid, Oid nspOid)
void GetTempNamespaceState(Oid *tempNamespaceId, Oid *tempToastNamespaceId)
RangeVar * makeRangeVarFromNameList(const List *names)
void InitializeSearchPath(void)
bool OperatorIsVisible(Oid oprid)
char * namespace_search_path
bool StatisticsObjIsVisible(Oid relid)
bool TSParserIsVisible(Oid prsId)
static void RemoveTempRelations(Oid tempNamespaceId)
SearchPathMatcher * CopySearchPathMatcher(SearchPathMatcher *path)
static void recomputeNamespacePath(void)
static Oid myTempNamespace
bool SearchPathMatchesCurrentEnvironment(SearchPathMatcher *path)
Datum pg_statistics_obj_is_visible(PG_FUNCTION_ARGS)
static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames, bool include_out_arguments, int pronargs, int **argnumbers)
static bool activeTempCreationPending
Oid get_conversion_oid(List *conname, bool missing_ok)
static void InitTempTableNamespace(void)
bool FunctionIsVisible(Oid funcid)
Oid get_ts_dict_oid(List *names, bool missing_ok)
Oid get_ts_parser_oid(List *names, bool missing_ok)
Datum pg_ts_template_is_visible(PG_FUNCTION_ARGS)
char * NameListToString(const List *names)
static void AccessTempTableNamespace(bool force)
void SetTempNamespaceState(Oid tempNamespaceId, Oid tempToastNamespaceId)
Oid GetTempToastNamespace(void)
Oid OpfamilynameGetOpfid(Oid amid, const char *opfname)
void AtEOXact_Namespace(bool isCommit, bool parallel)
Oid get_ts_config_oid(List *names, bool missing_ok)
FuncCandidateList OpernameGetCandidates(List *names, char oprkind, bool missing_schema_ok)
bool check_search_path(char **newval, void **extra, GucSource source)
Oid LookupNamespaceNoError(const char *nspname)
static void RemoveTempRelationsCallback(int code, Datum arg)
Oid TypenameGetTypid(const char *typname)
int fetch_search_path_array(Oid *sarray, int sarray_len)
Oid RangeVarGetRelidExtended(const RangeVar *relation, LOCKMODE lockmode, uint32 flags, RangeVarGetRelidCallback callback, void *callback_arg)
static uint64 activePathGeneration
bool TSConfigIsVisible(Oid cfgid)
SearchPathMatcher * GetSearchPathMatcher(MemoryContext context)
Datum pg_ts_dict_is_visible(PG_FUNCTION_ARGS)
Oid RelnameGetRelid(const char *relname)
int GetTempNamespaceBackendId(Oid namespaceId)
static List * baseSearchPath
Datum pg_my_temp_schema(PG_FUNCTION_ARGS)
Datum pg_ts_parser_is_visible(PG_FUNCTION_ARGS)
bool TSDictionaryIsVisible(Oid dictId)
Datum pg_table_is_visible(PG_FUNCTION_ARGS)
bool isTempToastNamespace(Oid namespaceId)
Oid get_ts_template_oid(List *names, bool missing_ok)
static void NamespaceCallback(Datum arg, int cacheid, uint32 hashvalue)
void(* RangeVarGetRelidCallback)(const RangeVar *relation, Oid relId, Oid oldRelId, void *callback_arg)
@ TEMP_NAMESPACE_NOT_TEMP
struct _FuncCandidateList * FuncCandidateList
#define IsA(nodeptr, _type_)
#define InvokeNamespaceSearchHook(objectId, ereport_on_violation)
ObjectType get_relkind_objtype(char relkind)
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
FormData_pg_authid * Form_pg_authid
FormData_pg_class * Form_pg_class
FormData_pg_collation * Form_pg_collation
Oid FindDefaultConversion(Oid name_space, int32 for_encoding, int32 to_encoding)
FormData_pg_conversion * Form_pg_conversion
static int list_length(const List *l)
#define list_make1_oid(x1)
static ListCell * list_head(const List *l)
static ListCell * lnext(const List *l, const ListCell *c)
Oid NamespaceCreate(const char *nspName, Oid ownerId, bool isTemp)
FormData_pg_opclass * Form_pg_opclass
FormData_pg_operator * Form_pg_operator
FormData_pg_opfamily * Form_pg_opfamily
FormData_pg_proc * Form_pg_proc
static rewind_source * source
FormData_pg_statistic_ext * Form_pg_statistic_ext
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
#define ERRCODE_UNDEFINED_TABLE
static Datum PointerGetDatum(const void *X)
static Datum ObjectIdGetDatum(Oid X)
static Datum CStringGetDatum(const char *X)
static Datum Int32GetDatum(int32 X)
const char * quote_identifier(const char *ident)
uint64 SharedInvalidMessageCounter
PGPROC * BackendIdGetProc(int backendID)
Snapshot GetTransactionSnapshot(void)
void PushActiveSnapshot(Snapshot snapshot)
void PopActiveSnapshot(void)
void appendStringInfoString(StringInfo str, const char *s)
void appendStringInfoChar(StringInfo str, char ch)
void initStringInfo(StringInfo str)
struct _FuncCandidateList * next
Oid args[FLEXIBLE_ARRAY_MEMBER]
CatCTup * members[FLEXIBLE_ARRAY_MEMBER]
void ReleaseSysCache(HeapTuple tuple)
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 SearchSysCache4(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4)
#define SearchSysCacheList3(cacheId, key1, key2, key3)
#define ReleaseSysCacheList(x)
#define SearchSysCacheExists2(cacheId, key1, key2)
#define SearchSysCacheList1(cacheId, key1)
#define SearchSysCacheExists1(cacheId, key1)
#define GetSysCacheOid3(cacheId, oidcol, key1, key2, key3)
#define GetSysCacheOid1(cacheId, oidcol, key1)
#define GetSysCacheOid2(cacheId, oidcol, key1, key2)
static void callback(struct sockaddr *addr, struct sockaddr *mask, void *unused)
String * makeString(char *str)
bool SplitIdentifierString(char *rawstring, char separator, List **namelist)
SubTransactionId GetCurrentSubTransactionId(void)
void CommandCounterIncrement(void)
void StartTransactionCommand(void)
void CommitTransactionCommand(void)
void AbortOutOfAnyTransaction(void)
#define XACT_FLAGS_ACCESSEDTEMPNAMESPACE
bool RecoveryInProgress(void)