233 bool missing_ok,
bool nowait,
248 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
249 errmsg(
"cross-database references are not implemented: \"%s.%s.%s\"",
305 (
errcode(ERRCODE_INVALID_TABLE_DEFINITION),
306 errmsg(
"temporary tables cannot specify a schema name")));
340 callback(relation, relId, oldRelId, callback_arg);
363 if (relId == oldRelId)
384 (
errcode(ERRCODE_LOCK_NOT_AVAILABLE),
385 errmsg(
"could not obtain lock on relation \"%s.%s\"",
389 (
errcode(ERRCODE_LOCK_NOT_AVAILABLE),
390 errmsg(
"could not obtain lock on relation \"%s\"",
414 errmsg(
"relation \"%s.%s\" does not exist",
419 errmsg(
"relation \"%s\" does not exist",
446 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
447 errmsg(
"cross-database references are not implemented: \"%s.%s.%s\"",
455 if (strcmp(newRelation->
schemaname,
"pg_temp") == 0)
486 (
errcode(ERRCODE_UNDEFINED_SCHEMA),
487 errmsg(
"no schema has been selected to create in")));
524 Oid *existing_relation_id)
540 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
541 errmsg(
"cross-database references are not implemented: \"%s.%s.%s\"",
561 if (existing_relation_id !=
NULL)
583 if (relid == oldrelid && nspid == oldnspid)
586 if (nspid != oldnspid)
595 if (nspid != oldnspid)
604 if (relid != oldrelid)
619 if (existing_relation_id !=
NULL)
620 *existing_relation_id = relid;
638 (
errcode(ERRCODE_INVALID_TABLE_DEFINITION),
639 errmsg(
"cannot create relations in temporary schemas of other sessions")));
642 (
errcode(ERRCODE_INVALID_TABLE_DEFINITION),
643 errmsg(
"cannot create temporary relation in non-temporary schema")));
651 (
errcode(ERRCODE_INVALID_TABLE_DEFINITION),
652 errmsg(
"cannot create relations in temporary schemas of other sessions")));
657 (
errcode(ERRCODE_INVALID_TABLE_DEFINITION),
658 errmsg(
"only temporary relations may be created in temporary schemas")));
675 foreach(l, activeSearchPath)
705 elog(
ERROR,
"cache lookup failed for relation %u", relid);
715 relnamespace = relform->relnamespace;
730 foreach(l, activeSearchPath)
734 if (namespaceId == relnamespace)
769 foreach(l, activeSearchPath)
800 elog(
ERROR,
"cache lookup failed for type %u", typid);
810 typnamespace = typform->typnamespace;
821 char *typname =
NameStr(typform->typname);
825 foreach(l, activeSearchPath)
829 if (namespaceId == typnamespace)
918 bool expand_variadic,
bool expand_defaults,
922 bool any_special =
false;
930 Assert(nargs >= 0 || !(expand_variadic | expand_defaults));
956 int pronargs = procform->pronargs;
962 int *argnumbers =
NULL;
968 if (procform->pronamespace != namespaceId)
979 foreach(nsp, activeSearchPath)
981 if (procform->pronamespace ==
lfirst_oid(nsp) &&
999 if (
OidIsValid(procform->provariadic) && expand_variadic)
1009 if (pronargs > nargs && expand_defaults)
1012 if (nargs + procform->pronargdefaults < pronargs)
1014 use_defaults =
true;
1017 use_defaults =
false;
1020 if (pronargs != nargs && !use_defaults)
1040 if (pronargs <= nargs && expand_variadic)
1042 va_elem_type = procform->provariadic;
1044 any_special |= variadic;
1055 if (pronargs > nargs && expand_defaults)
1058 if (nargs + procform->pronargdefaults < pronargs)
1060 use_defaults =
true;
1064 use_defaults =
false;
1067 if (nargs >= 0 && pronargs != nargs && !variadic && !use_defaults)
1077 effective_nargs =
Max(pronargs, nargs);
1080 effective_nargs *
sizeof(
Oid));
1083 newResult->
nargs = effective_nargs;
1088 Oid *proargtypes = procform->proargtypes.values;
1091 for (i = 0; i < pronargs; i++)
1092 newResult->
args[i] = proargtypes[argnumbers[i]];
1097 memcpy(newResult->
args, procform->proargtypes.values,
1098 pronargs *
sizeof(
Oid));
1104 newResult->
nvargs = effective_nargs - pronargs + 1;
1106 for (i = pronargs - 1; i < effective_nargs; i++)
1107 newResult->
args[i] = va_elem_type;
1111 newResult->
ndargs = use_defaults ? pronargs - nargs : 0;
1121 if (resultList !=
NULL &&
1137 if (catlist->
ordered && !any_special)
1140 if (effective_nargs == resultList->
nargs &&
1141 memcmp(newResult->
args,
1143 effective_nargs *
sizeof(
Oid)) == 0)
1144 prevResult = resultList;
1150 int cmp_nargs = newResult->
nargs - newResult->
ndargs;
1152 for (prevResult = resultList;
1154 prevResult = prevResult->
next)
1156 if (cmp_nargs == prevResult->
nargs - prevResult->
ndargs &&
1157 memcmp(newResult->
args,
1159 cmp_nargs *
sizeof(
Oid)) == 0)
1175 if (pathpos != prevResult->
pathpos)
1180 preference = pathpos - prevResult->
pathpos;
1182 else if (variadic && prevResult->
nvargs == 0)
1192 else if (!variadic && prevResult->
nvargs > 0)
1216 else if (preference < 0)
1219 if (prevResult == resultList)
1220 resultList = prevResult->
next;
1225 for (prevPrevResult = resultList;
1227 prevPrevResult = prevPrevResult->
next)
1229 if (prevResult == prevPrevResult->
next)
1231 prevPrevResult->
next = prevResult->
next;
1253 newResult->
next = resultList;
1254 resultList = newResult;
1284 int pronargs = procform->pronargs;
1298 Assert(nargs <= pronargs);
1308 &p_argtypes, &p_argnames, &p_argmodes);
1312 *argnumbers = (
int *)
palloc(pronargs *
sizeof(
int));
1313 memset(arggiven,
false, pronargs *
sizeof(
bool));
1316 for (ap = 0; ap < numposargs; ap++)
1318 (*argnumbers)[ap] = ap;
1319 arggiven[ap] =
true;
1323 foreach(lc, argnames)
1325 char *argname = (
char *)
lfirst(lc);
1331 for (i = 0; i < pronallargs; i++)
1339 if (p_argnames[i] && strcmp(p_argnames[i], argname) == 0)
1344 arggiven[pp] =
true;
1345 (*argnumbers)[ap] = pp;
1361 if (nargs < pronargs)
1363 int first_arg_with_default = pronargs - procform->pronargdefaults;
1365 for (pp = numposargs; pp < pronargs; pp++)
1370 if (pp < first_arg_with_default)
1372 (*argnumbers)[ap++] = pp;
1397 elog(
ERROR,
"cache lookup failed for function %u", funcid);
1407 pronamespace = procform->pronamespace;
1419 char *proname =
NameStr(procform->proname);
1420 int nargs = procform->pronargs;
1426 nargs,
NIL,
false,
false,
false);
1428 for (; clist; clist = clist->
next)
1430 if (memcmp(clist->
args, procform->proargtypes.values,
1431 nargs *
sizeof(
Oid)) == 0)
1434 visible = (clist->
oid == funcid);
1516 foreach(l, activeSearchPath)
1524 for (i = 0; i < catlist->
n_members; i++)
1529 if (operform->oprnamespace == namespaceId)
1564 char *resultSpace =
NULL;
1579 if (missing_schema_ok && !
OidIsValid(namespaceId))
1601 #define SPACE_PER_OP MAXALIGN(offsetof(struct _FuncCandidateList, args) + \
1607 for (i = 0; i < catlist->
n_members; i++)
1615 if (oprkind && operform->oprkind != oprkind)
1621 if (operform->oprnamespace != namespaceId)
1633 foreach(nsp, activeSearchPath)
1635 if (operform->oprnamespace ==
lfirst_oid(nsp) &&
1660 if (operform->oprleft == resultList->
args[0] &&
1661 operform->oprright == resultList->
args[1])
1662 prevResult = resultList;
1668 for (prevResult = resultList;
1670 prevResult = prevResult->
next)
1672 if (operform->oprleft == prevResult->
args[0] &&
1673 operform->oprright == prevResult->
args[1])
1681 if (pathpos > prevResult->
pathpos)
1684 prevResult->
pathpos = pathpos;
1699 newResult->
nargs = 2;
1703 newResult->
args[0] = operform->oprleft;
1704 newResult->
args[1] = operform->oprright;
1705 newResult->
next = resultList;
1706 resultList = newResult;
1730 elog(
ERROR,
"cache lookup failed for operator %u", oprid);
1740 oprnamespace = oprform->oprnamespace;
1752 char *oprname =
NameStr(oprform->oprname);
1755 oprform->oprleft, oprform->oprright)
1781 foreach(l, activeSearchPath)
1816 elog(
ERROR,
"cache lookup failed for opclass %u", opcid);
1826 opcnamespace = opcform->opcnamespace;
1838 char *opcname =
NameStr(opcform->opcname);
1864 foreach(l, activeSearchPath)
1899 elog(
ERROR,
"cache lookup failed for opfamily %u", opfid);
1909 opfnamespace = opfform->opfnamespace;
1921 char *opfname =
NameStr(opfform->opfname);
1944 foreach(l, activeSearchPath)
1989 elog(
ERROR,
"cache lookup failed for collation %u", collid);
1999 collnamespace = collform->collnamespace;
2011 char *collname =
NameStr(collform->collname);
2037 foreach(l, activeSearchPath)
2071 elog(
ERROR,
"cache lookup failed for conversion %u", conid);
2081 connamespace = conform->connamespace;
2093 char *conname =
NameStr(conform->conname);
2136 foreach(l, activeSearchPath)
2153 (
errcode(ERRCODE_UNDEFINED_OBJECT),
2154 errmsg(
"text search parser \"%s\" does not exist",
2176 elog(
ERROR,
"cache lookup failed for text search parser %u", prsId);
2186 namespace = form->prsnamespace;
2201 foreach(l, activeSearchPath)
2208 if (namespaceId ==
namespace)
2262 foreach(l, activeSearchPath)
2279 (
errcode(ERRCODE_UNDEFINED_OBJECT),
2280 errmsg(
"text search dictionary \"%s\" does not exist",
2302 elog(
ERROR,
"cache lookup failed for text search dictionary %u",
2313 namespace = form->dictnamespace;
2328 foreach(l, activeSearchPath)
2335 if (namespaceId ==
namespace)
2365 char *template_name;
2389 foreach(l, activeSearchPath)
2406 (
errcode(ERRCODE_UNDEFINED_OBJECT),
2407 errmsg(
"text search template \"%s\" does not exist",
2429 elog(
ERROR,
"cache lookup failed for text search template %u", tmplId);
2439 namespace = form->tmplnamespace;
2454 foreach(l, activeSearchPath)
2461 if (namespaceId ==
namespace)
2515 foreach(l, activeSearchPath)
2532 (
errcode(ERRCODE_UNDEFINED_OBJECT),
2533 errmsg(
"text search configuration \"%s\" does not exist",
2555 elog(
ERROR,
"cache lookup failed for text search configuration %u",
2566 namespace = form->cfgnamespace;
2581 foreach(l, activeSearchPath)
2588 if (namespaceId ==
namespace)
2623 char *schemaname =
NULL;
2624 char *objname =
NULL;
2645 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
2646 errmsg(
"cross-database references are not implemented: %s",
2651 (
errcode(ERRCODE_SYNTAX_ERROR),
2652 errmsg(
"improper qualified name (too many dotted names): %s",
2657 *nspname_p = schemaname;
2658 *objname_p = objname;
2675 if (strcmp(nspname,
"pg_temp") == 0)
2708 if (strcmp(nspname,
"pg_temp") == 0)
2751 if (strcmp(nspname,
"pg_temp") == 0)
2782 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
2783 errmsg(
"cannot move objects into or out of temporary schemas")));
2788 (
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
2789 errmsg(
"cannot move objects into or out of TOAST schema")));
2816 if (strcmp(schemaname,
"pg_temp") == 0)
2840 (
errcode(ERRCODE_UNDEFINED_SCHEMA),
2841 errmsg(
"no schema has been selected to create in")));
2861 (
errcode(ERRCODE_UNDEFINED_SCHEMA),
2862 errmsg(
"schema \"%s\" does not exist", nspname)));
2892 (
errcode(ERRCODE_SYNTAX_ERROR),
2893 errmsg(
"improper relation name (too many dotted names): %s",
2926 if (
IsA(name, String))
2931 elog(
ERROR,
"unexpected node type in name list: %d",
3014 result = (strncmp(nspname,
"pg_temp_", 8) == 0) ||
3015 (strncmp(nspname,
"pg_toast_temp_", 14) == 0);
3053 if (strncmp(nspname,
"pg_temp_", 8) == 0)
3054 result = atoi(nspname + 8);
3055 else if (strncmp(nspname,
"pg_toast_temp_", 14) == 0)
3056 result = atoi(nspname + 14);
3239 overrideStack =
lcons(entry, overrideStack);
3261 if (overrideStack ==
NIL)
3262 elog(
ERROR,
"bogus PopOverrideSearchPath call");
3265 elog(
ERROR,
"bogus PopOverrideSearchPath call");
3297 char *collation_name;
3332 foreach(l, activeSearchPath)
3357 (
errcode(ERRCODE_UNDEFINED_OBJECT),
3358 errmsg(
"collation \"%s\" for encoding \"%s\" does not exist",
3370 char *conversion_name;
3394 foreach(l, activeSearchPath)
3412 (
errcode(ERRCODE_UNDEFINED_OBJECT),
3413 errmsg(
"conversion \"%s\" does not exist",
3429 foreach(l, activeSearchPath)
3487 temp_missing =
false;
3488 foreach(l, namelist)
3490 char *curname = (
char *)
lfirst(l);
3493 if (strcmp(curname,
"$user") == 0)
3514 else if (strcmp(curname,
"pg_temp") == 0)
3527 temp_missing =
true;
3575 baseSearchPath = newpath;
3620 (
errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
3621 errmsg(
"permission denied to create temporary tables in database \"%s\"",
3636 (
errcode(ERRCODE_READ_ONLY_SQL_TRANSACTION),
3637 errmsg(
"cannot create temporary tables during recovery")));
3642 (
errcode(ERRCODE_READ_ONLY_SQL_TRANSACTION),
3643 errmsg(
"cannot create temporary tables in parallel mode")));
3677 snprintf(namespaceName,
sizeof(namespaceName),
"pg_toast_temp_%d",
3738 while (overrideStack)
3785 while (overrideStack)
3834 object.objectId = tempNamespaceId;
3835 object.objectSubId = 0;
4003 if (!includeImplicit)
4030 foreach(l, activeSearchPath)
4037 if (count < sarray_len)
4038 sarray[count] = namespaceId;
Value * makeString(char *str)
void ResetTempTableNamespace(void)
bool ConditionalLockRelationOid(Oid relid, LOCKMODE lockmode)
static bool baseSearchPathValid
#define NamespaceRelationId
#define IsA(nodeptr, _type_)
Oid get_namespace_oid(const char *nspname, bool missing_ok)
Oid LookupExplicitNamespace(const char *nspname, bool missing_ok)
#define AssertState(condition)
#define ERRCODE_UNDEFINED_TABLE
void AcceptInvalidationMessages(void)
const char * quote_identifier(const char *ident)
FormData_pg_ts_config * Form_pg_ts_config
Oid TypenameGetTypid(const char *typname)
Datum pg_type_is_visible(PG_FUNCTION_ARGS)
void UnlockRelationOid(Oid relid, LOCKMODE lockmode)
Oid RangeVarGetRelidExtended(const RangeVar *relation, LOCKMODE lockmode, bool missing_ok, bool nowait, RangeVarGetRelidCallback callback, void *callback_arg)
#define GUC_check_errdetail
Oid RelnameGetRelid(const char *relname)
Datum pg_my_temp_schema(PG_FUNCTION_ARGS)
Oid QualifiedNameGetCreationNamespace(List *names, char **objname_p)
bool isTempOrTempToastNamespace(Oid namespaceId)
#define PointerGetDatum(X)
static Oid myTempToastNamespace
Oid LookupCreationNamespace(const char *nspname)
#define SearchSysCache4(cacheId, key1, key2, key3, key4)
char * pstrdup(const char *in)
void CommitTransactionCommand(void)
Datum pg_opclass_is_visible(PG_FUNCTION_ARGS)
void PushOverrideSearchPath(OverrideSearchPath *newpath)
Datum pg_conversion_is_visible(PG_FUNCTION_ARGS)
int get_func_arg_info(HeapTuple procTup, Oid **p_argtypes, char ***p_argnames, char **p_argmodes)
static Oid myTempNamespace
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
static List * overrideStack
List * list_copy(const List *oldlist)
int errcode(int sqlerrcode)
Oid get_ts_config_oid(List *names, bool missing_ok)
bool OperatorIsVisible(Oid oprid)
int snprintf(char *str, size_t count, const char *fmt,...) pg_attribute_printf(3
int GetTempNamespaceBackendId(Oid namespaceId)
void DeconstructQualifiedName(List *names, char **nspname_p, char **objname_p)
bool FunctionIsVisible(Oid funcid)
void(* RangeVarGetRelidCallback)(const RangeVar *relation, Oid relId, Oid oldRelId, void *callback_arg)
RangeVar * makeRangeVarFromNameList(List *names)
Oid CollationGetCollid(const char *collname)
List * lcons_oid(Oid datum, List *list)
FormData_pg_type * Form_pg_type
#define PG_TOAST_NAMESPACE
bool RecoveryInProgress(void)
Oid OpclassnameGetOpcid(Oid amid, const char *opcname)
List * lappend_oid(List *list, Oid datum)
#define OidIsValid(objectId)
int fetch_search_path_array(Oid *sarray, int sarray_len)
void AbortOutOfAnyTransaction(void)
AclResult pg_namespace_aclcheck(Oid nsp_oid, Oid roleid, AclMode mode)
#define GetSysCacheOid3(cacheId, key1, key2, key3)
void RangeVarAdjustRelationPersistence(RangeVar *newRelation, Oid nspid)
#define SearchSysCache1(cacheId, key1)
#define GetSysCacheOid2(cacheId, key1, key2)
FuncCandidateList OpernameGetCandidates(List *names, char oprkind, bool missing_schema_ok)
static void recomputeNamespacePath(void)
struct _FuncCandidateList * FuncCandidateList
#define GetSysCacheOid1(cacheId, key1)
#define RELPERSISTENCE_PERMANENT
static char * relname(char const *dir, char const *base)
#define InvokeNamespaceSearchHook(objectId, ereport_on_violation)
CatCTup * members[FLEXIBLE_ARRAY_MEMBER]
Oid ConversionGetConid(const char *conname)
FormData_pg_authid * Form_pg_authid
Oid OpernameGetOprid(List *names, Oid oprleft, Oid oprright)
Oid get_ts_dict_oid(List *names, bool missing_ok)
static Oid activeCreationNamespace
Oid OpfamilynameGetOpfid(Oid amid, const char *opfname)
#define SearchSysCacheExists1(cacheId, key1)
Oid args[FLEXIBLE_ARRAY_MEMBER]
void pfree(void *pointer)
#define ObjectIdGetDatum(X)
void deleteWhatDependsOn(const ObjectAddress *object, bool showNotices)
bool TSConfigIsVisible(Oid cfgid)
static bool baseTempCreationPending
FuncCandidateList FuncnameGetCandidates(List *names, int nargs, List *argnames, bool expand_variadic, bool expand_defaults, bool missing_ok)
void InitializeSearchPath(void)
static void callback(struct sockaddr *addr, struct sockaddr *mask, void *unused)
OverrideSearchPath * CopyOverrideSearchPath(OverrideSearchPath *path)
Oid get_relname_relid(const char *relname, Oid relnamespace)
OverrideSearchPath * GetOverrideSearchPath(MemoryContext context)
char * get_database_name(Oid dbid)
Datum pg_opfamily_is_visible(PG_FUNCTION_ARGS)
FormData_pg_ts_dict * Form_pg_ts_dict
Oid GetTempToastNamespace(void)
void appendStringInfoString(StringInfo str, const char *s)
Oid get_ts_template_oid(List *names, bool missing_ok)
char * get_namespace_name(Oid nspid)
bool SplitIdentifierString(char *rawstring, char separator, List **namelist)
void aclcheck_error(AclResult aclerr, AclObjectKind objectkind, const char *objectname)
Datum pg_function_is_visible(PG_FUNCTION_ARGS)
#define CStringGetDatum(X)
void LockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
void before_shmem_exit(pg_on_exit_callback function, Datum arg)
static ListCell * list_head(const List *l)
static SubTransactionId myTempNamespaceSubID
bool isTempNamespace(Oid namespaceId)
#define SearchSysCacheList1(cacheId, key1)
bool CollationIsVisible(Oid collid)
#define PG_CATALOG_NAMESPACE
struct _FuncCandidateList * next
static void NamespaceCallback(Datum arg, int cacheid, uint32 hashvalue)
Datum pg_ts_config_is_visible(PG_FUNCTION_ARGS)
static bool activeTempCreationPending
#define ereport(elevel, rest)
bool OpfamilyIsVisible(Oid opfid)
#define IsParallelWorker()
MemoryContext TopMemoryContext
Datum pg_ts_template_is_visible(PG_FUNCTION_ARGS)
void CheckSetNamespace(Oid oldNspOid, Oid nspOid)
void UnlockDatabaseObject(Oid classid, Oid objid, uint16 objsubid, LOCKMODE lockmode)
static Oid baseCreationNamespace
static void InitTempTableNamespace(void)
bool isTempToastNamespace(Oid namespaceId)
#define Anum_pg_proc_proargnames
void appendStringInfoChar(StringInfo str, char ch)
void initStringInfo(StringInfo str)
bool TSDictionaryIsVisible(Oid dictId)
char * NameListToString(List *names)
char * NameListToQuotedString(List *names)
Oid RangeVarGetAndCheckCreationNamespace(RangeVar *relation, LOCKMODE lockmode, Oid *existing_relation_id)
#define ReleaseSysCacheList(x)
void PopOverrideSearchPath(void)
FormData_pg_opfamily * Form_pg_opfamily
char * namespace_search_path
static List * baseSearchPath
void CacheRegisterSyscacheCallback(int cacheid, SyscacheCallbackFunction func, Datum arg)
void * palloc0(Size size)
#define PG_RETURN_BOOL(x)
void CommandCounterIncrement(void)
void ReleaseSysCache(HeapTuple tuple)
FormData_pg_ts_parser * Form_pg_ts_parser
FormData_pg_conversion * Form_pg_conversion
int GetDatabaseEncoding(void)
Datum SysCacheGetAttr(int cacheId, HeapTuple tup, AttrNumber attributeNumber, bool *isNull)
#define list_make1_oid(x1)
Datum pg_ts_parser_is_visible(PG_FUNCTION_ARGS)
bool OpclassIsVisible(Oid opcid)
uint64 SharedInvalidMessageCounter
FormData_pg_proc * Form_pg_proc
void assign_search_path(const char *newval, void *extra)
Datum pg_ts_dict_is_visible(PG_FUNCTION_ARGS)
int GetCurrentTransactionNestLevel(void)
List * lcons(void *datum, List *list)
bool ConversionIsVisible(Oid conid)
bool OverrideSearchPathMatchesCurrent(OverrideSearchPath *path)
Datum pg_is_other_temp_schema(PG_FUNCTION_ARGS)
bool list_member_oid(const List *list, Oid datum)
#define HeapTupleIsValid(tuple)
AclResult pg_database_aclcheck(Oid db_oid, Oid roleid, AclMode mode)
Oid get_ts_parser_oid(List *names, bool missing_ok)
#define Assert(condition)
const char * GetDatabaseEncodingName(void)
bool TypeIsVisible(Oid typid)
SubTransactionId GetCurrentSubTransactionId(void)
bool pg_class_ownercheck(Oid class_oid, Oid roleid)
void StartTransactionCommand(void)
Datum pg_operator_is_visible(PG_FUNCTION_ARGS)
static void RemoveTempRelations(Oid tempNamespaceId)
bool check_search_path(char **newval, void **extra, GucSource source)
static int list_length(const List *l)
Oid FindDefaultConversionProc(int32 for_encoding, int32 to_encoding)
#define SearchSysCacheExists2(cacheId, key1, key2)
#define BOOTSTRAP_SUPERUSERID
#define InvalidSubTransactionId
FormData_pg_operator* Form_pg_operator
static bool MatchNamedCall(HeapTuple proctup, int nargs, List *argnames, int **argnumbers)
FormData_pg_collation * Form_pg_collation
Datum pg_collation_is_visible(PG_FUNCTION_ARGS)
Oid get_conversion_oid(List *name, bool missing_ok)
#define IsBootstrapProcessingMode()
FormData_pg_class * Form_pg_class
static List * activeSearchPath
bool TSTemplateIsVisible(Oid tmplId)
bool TSParserIsVisible(Oid prsId)
int errmsg(const char *fmt,...)
#define SearchSysCacheList3(cacheId, key1, key2, key3)
bool RelationIsVisible(Oid relid)
bool isOtherTempNamespace(Oid namespaceId)
void list_free(List *list)
FormData_pg_ts_template * Form_pg_ts_template
bool isAnyTempNamespace(Oid namespaceId)
void AtEOSubXact_Namespace(bool isCommit, SubTransactionId mySubid, SubTransactionId parentSubid)
Oid FindDefaultConversion(Oid name_space, int32 for_encoding, int32 to_encoding)
#define HeapTupleGetOid(tuple)
void LockRelationOid(Oid relid, LOCKMODE lockmode)
#define RELPERSISTENCE_TEMP
Datum pg_table_is_visible(PG_FUNCTION_ARGS)
FormData_pg_opclass * Form_pg_opclass
void AtEOXact_Namespace(bool isCommit, bool parallel)
Oid get_collation_oid(List *name, bool missing_ok)
List * fetch_search_path(bool includeImplicit)
RangeVar * makeRangeVar(char *schemaname, char *relname, int location)
static void RemoveTempRelationsCallback(int code, Datum arg)
#define offsetof(type, field)
Oid RangeVarGetCreationNamespace(const RangeVar *newRelation)
Oid NamespaceCreate(const char *nspName, Oid ownerId, bool isTemp)
List * list_delete_first(List *list)
Oid LookupNamespaceNoError(const char *nspname)