49#include "utils/fmgroids.h"
151 elog(
ERROR,
"operator %u is not a member of opfamily %u",
156 *righttype =
amop_tup->amoprighttype;
295 if (
aform->amoplefttype ==
aform->amoprighttype)
298 *opfamily =
aform->amopfamily;
299 *opcintype =
aform->amoplefttype;
333 &opfamily, &opcintype, &cmptype))
504 if (
aform->amoplefttype ==
aform->amoprighttype)
537 aform->amoprighttype,
538 aform->amoprighttype,
623 if (
aform->amoplefttype ==
aform->amoprighttype)
633 aform->amoprighttype,
634 aform->amoprighttype,
920 elog(
ERROR,
"cache lookup failed for attribute %d of relation %u",
974 elog(
ERROR,
"cache lookup failed for attribute %d of relation %u",
977 result =
att_tup->attgenerated;
1029 elog(
ERROR,
"cache lookup failed for attribute %d of relation %u",
1058 elog(
ERROR,
"cache lookup failed for attribute %d of relation %u",
1093 errmsg(
"cast from type %s to type %s does not exist",
1138 elog(
ERROR,
"cache lookup failed for collation %u", colloid);
1140 result =
colltup->collisdeterministic;
1202 result =
contup->conindid;
1226 elog(
ERROR,
"cache lookup failed for constraint %u", conoid);
1279 elog(
ERROR,
"cache lookup failed for language %u",
1300 elog(
ERROR,
"cache lookup failed for opclass %u", opclass);
1322 elog(
ERROR,
"cache lookup failed for opclass %u", opclass);
1348 *opfamily =
cla_tup->opcfamily;
1349 *opcintype =
cla_tup->opcintype;
1370 elog(
ERROR,
"cache lookup failed for opclass %u", opclass);
1394 elog(
ERROR,
"cache lookup failed for operator family %u",
opfid);
1414 elog(
ERROR,
"cache lookup failed for operator family %u",
opfid);
1445 result =
optup->oprcode;
1493 result =
optup->oprresult;
1515 elog(
ERROR,
"cache lookup failed for operator %u", opno);
1517 *lefttype =
optup->oprleft;
1518 *righttype =
optup->oprright;
1538 bool result =
false;
1568 result =
optup->oprcanmerge;
1589 bool result =
false;
1614 result =
optup->oprcanhash;
1632 elog(
ERROR,
"operator %u does not exist", opno);
1648 elog(
ERROR,
"operator %u does not exist", opno);
1669 result =
optup->oprcom;
1693 result =
optup->oprnegate;
1717 result =
optup->oprrest;
1741 result =
optup->oprjoin;
1792 result =
functup->pronamespace;
1812 elog(
ERROR,
"cache lookup failed for function %u", funcid);
1831 elog(
ERROR,
"cache lookup failed for function %u", funcid);
1854 elog(
ERROR,
"cache lookup failed for function %u", funcid);
1880 elog(
ERROR,
"cache lookup failed for function %u", funcid);
1899 elog(
ERROR,
"cache lookup failed for function %u", funcid);
1918 elog(
ERROR,
"cache lookup failed for function %u", funcid);
1937 elog(
ERROR,
"cache lookup failed for function %u", funcid);
1956 elog(
ERROR,
"cache lookup failed for function %u", funcid);
1975 elog(
ERROR,
"cache lookup failed for function %u", funcid);
1994 elog(
ERROR,
"cache lookup failed for function %u", funcid);
2059 result =
reltup->relnatts;
2112 result =
reltup->relnamespace;
2139 result =
reltup->reltype;
2163 result =
reltup->relkind;
2187 result =
reltup->relispartition;
2214 result =
reltup->reltablespace;
2236 elog(
ERROR,
"cache lookup failed for relation %u", relid);
2238 result =
reltup->relpersistence;
2258 elog(
ERROR,
"cache lookup failed for relation %u", relid);
2333 result =
typtup->typisdefined;
2382 result =
typtup->typbyval;
2408 elog(
ERROR,
"cache lookup failed for type %u", typid);
2410 *typlen =
typtup->typlen;
2411 *typbyval =
typtup->typbyval;
2429 elog(
ERROR,
"cache lookup failed for type %u", typid);
2431 *typlen =
typtup->typlen;
2432 *typbyval =
typtup->typbyval;
2513 elog(
ERROR,
"binary I/O not supported during bootstrap");
2521 elog(
ERROR,
"cache lookup failed for type %u", typid);
2559 result =
typtup->typalign;
2579 result =
typtup->typstorage;
2608 elog(
ERROR,
"cache lookup failed for type %u", typid);
2700 elog(
ERROR,
"cache lookup failed for type %u", typid);
2710 typid =
typTup->typbasetype;
2711 *typmod =
typTup->typtypmod;
2763 return 32 + (1000 - 32) / 2;
2789 result =
typtup->typtype;
2867 elog(
ERROR,
"cache lookup failed for type %u", typid);
2891 result =
typtup->typrelid;
2920 result =
typtup->typelem;
3003 result =
typTup->typelem;
3010 typid =
typTup->typbasetype;
3034 if (!
pt->typisdefined)
3037 errmsg(
"type %s is only a shell",
3042 errmsg(
"no input function available for type %s",
3067 if (!
pt->typisdefined)
3070 errmsg(
"type %s is only a shell",
3075 errmsg(
"no output function available for type %s",
3100 if (!
pt->typisdefined)
3103 errmsg(
"type %s is only a shell",
3108 errmsg(
"no binary input function available for type %s",
3133 if (!
pt->typisdefined)
3136 errmsg(
"type %s is only a shell",
3141 errmsg(
"no binary output function available for type %s",
3166 result =
typtup->typmodin;
3191 result =
typtup->typmodout;
3216 result =
typtup->typcollation;
3315 stawidth = (*get_attavgwidth_hook) (relid,
attnum);
3401 if ((&stats->stakind1)[
i] ==
reqkind &&
3408 sslot->staop = (&stats->staop1)[
i];
3409 sslot->stacoll = (&stats->stacoll1)[
i];
3476 elog(
ERROR,
"stanumbers is not a 1-D float4 array");
3501 if (
sslot->values_arr)
3503 if (
sslot->numbers_arr)
3567 result =
rngtup->rngsubtype;
3593 result =
rngtup->rngcollation;
3618 result =
rngtup->rngmultitypid;
3643 result =
rngtup->rngtypid;
3682 if (attno > rd_index->indnkeyatts)
3692 opclass =
indclass->values[attno - 1];
3716 result = rd_index->indisreplident;
3739 isvalid = rd_index->indisvalid;
3784 errmsg(
"publication \"%s\" does not exist", pubname)));
3806 elog(
ERROR,
"cache lookup failed for publication %u", pubid);
3856 elog(
ERROR,
"cache lookup failed for subscription %u", subid);
const IndexAmRoutine * GetIndexAmRoutineByAmId(Oid amoid, bool noerror)
StrategyNumber IndexAmTranslateCompareType(CompareType cmptype, Oid amoid, Oid opfamily, bool missing_ok)
CompareType IndexAmTranslateStrategy(StrategyNumber strategy, Oid amoid, Oid opfamily, bool missing_ok)
#define DatumGetArrayTypePCopy(X)
void deconstruct_array(const ArrayType *array, Oid elmtype, int elmlen, bool elmbyval, char elmalign, Datum **elemsp, bool **nullsp, int *nelemsp)
#define InvalidAttrNumber
void boot_get_type_io_data(Oid typid, int16 *typlen, bool *typbyval, char *typalign, char *typdelim, Oid *typioparam, Oid *typinput, Oid *typoutput)
#define TextDatumGetCString(d)
#define Assert(condition)
#define OidIsValid(objectId)
Datum datumCopy(Datum value, bool typByVal, int typLen)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
#define palloc_object(type)
Datum OidInputFunctionCall(Oid functionId, char *str, Oid typioparam, int32 typmod)
#define OidFunctionCall0(functionId)
#define HASHSTANDARD_PROC
#define HeapTupleIsValid(tuple)
static void * GETSTRUCT(const HeapTupleData *tuple)
List * lappend(List *list, void *datum)
List * lappend_oid(List *list, Oid datum)
bool list_member_oid(const List *list, Oid datum)
Oid get_range_subtype(Oid rangeOid)
char * get_rel_name(Oid relid)
void get_op_opfamily_properties(Oid opno, Oid opfamily, bool ordering_op, int *strategy, Oid *lefttype, Oid *righttype)
Oid get_func_variadictype(Oid funcid)
Oid get_opclass_method(Oid opclass)
bool get_compatible_hash_operators(Oid opno, Oid *lhs_opno, Oid *rhs_opno)
bool get_rel_relispartition(Oid relid)
Oid get_op_opfamily_sortfamily(Oid opno, Oid opfamily)
char get_rel_persistence(Oid relid)
char get_func_prokind(Oid funcid)
bool get_index_isvalid(Oid index_oid)
Oid get_cast_oid(Oid sourcetypeid, Oid targettypeid, bool missing_ok)
void getTypeBinaryOutputInfo(Oid type, Oid *typSend, bool *typIsVarlena)
AttrNumber get_attnum(Oid relid, const char *attname)
RegProcedure get_oprrest(Oid opno)
void free_attstatsslot(AttStatsSlot *sslot)
bool comparison_ops_are_compatible(Oid opno1, Oid opno2)
Oid get_constraint_index(Oid conoid)
bool get_func_retset(Oid funcid)
bool get_ordering_op_properties(Oid opno, Oid *opfamily, Oid *opcintype, CompareType *cmptype)
Oid get_element_type(Oid typid)
Oid get_opclass_input_type(Oid opclass)
bool type_is_rowtype(Oid typid)
bool type_is_range(Oid typid)
char func_parallel(Oid funcid)
Oid get_opclass_family(Oid opclass)
char get_attgenerated(Oid relid, AttrNumber attnum)
bool type_is_enum(Oid typid)
Oid get_multirange_range(Oid multirangeOid)
Oid get_typmodin(Oid typid)
Oid get_opfamily_member_for_cmptype(Oid opfamily, Oid lefttype, Oid righttype, CompareType cmptype)
char get_typstorage(Oid typid)
bool get_opclass_opfamily_and_input_type(Oid opclass, Oid *opfamily, Oid *opcintype)
RegProcedure get_func_support(Oid funcid)
char * get_database_name(Oid dbid)
void getTypeOutputInfo(Oid type, Oid *typOutput, bool *typIsVarlena)
bool get_typisdefined(Oid typid)
char * get_opname(Oid opno)
Datum get_attoptions(Oid relid, int16 attnum)
void get_typlenbyvalalign(Oid typid, int16 *typlen, bool *typbyval, char *typalign)
int32 get_attavgwidth(Oid relid, AttrNumber attnum)
bool get_index_isreplident(Oid index_oid)
Oid get_opfamily_proc(Oid opfamily, Oid lefttype, Oid righttype, int16 procnum)
RegProcedure get_oprjoin(Oid opno)
Oid get_equality_op_for_ordering_op(Oid opno, bool *reverse)
bool op_hashjoinable(Oid opno, Oid inputtype)
char get_rel_relkind(Oid relid)
void get_typlenbyval(Oid typid, int16 *typlen, bool *typbyval)
Oid get_func_signature(Oid funcid, Oid **argtypes, int *nargs)
Oid get_publication_oid(const char *pubname, bool missing_ok)
Oid get_rel_namespace(Oid relid)
static bool get_opmethod_canorder(Oid amoid)
RegProcedure get_opcode(Oid opno)
Oid get_typcollation(Oid typid)
Oid get_op_rettype(Oid opno)
int get_op_opfamily_strategy(Oid opno, Oid opfamily)
char * get_collation_name(Oid colloid)
Oid get_rel_type_id(Oid relid)
char * get_language_name(Oid langoid, bool missing_ok)
char * get_namespace_name_or_temp(Oid nspid)
void getTypeInputInfo(Oid type, Oid *typInput, Oid *typIOParam)
char func_volatile(Oid funcid)
bool equality_ops_are_compatible(Oid opno1, Oid opno2)
get_attavgwidth_hook_type get_attavgwidth_hook
bool get_index_isclustered(Oid index_oid)
Oid get_opfamily_member(Oid opfamily, Oid lefttype, Oid righttype, int16 strategy)
Oid get_ordering_op_for_equality_op(Oid opno, bool use_lhs_type)
Oid get_transform_tosql(Oid typid, Oid langid, List *trftypes)
bool func_strict(Oid funcid)
Oid get_index_column_opclass(Oid index_oid, int attno)
char * get_constraint_name(Oid conoid)
char * get_attname(Oid relid, AttrNumber attnum, bool missing_ok)
bool get_func_leakproof(Oid funcid)
const struct SubscriptRoutines * getSubscriptingRoutines(Oid typid, Oid *typelemp)
Node * get_typdefault(Oid typid)
bool get_collation_isdeterministic(Oid colloid)
List * get_op_index_interpretation(Oid opno)
Oid get_subscription_oid(const char *subname, bool missing_ok)
char * get_subscription_name(Oid subid, bool missing_ok)
Oid get_range_collation(Oid rangeOid)
char * get_opfamily_name(Oid opfid, bool missing_ok)
char * get_func_name(Oid funcid)
Oid get_range_multirange(Oid rangeOid)
Oid get_rel_relam(Oid relid)
char op_volatile(Oid opno)
Oid get_func_namespace(Oid funcid)
bool type_is_collatable(Oid typid)
Oid get_rel_tablespace(Oid relid)
int get_func_nargs(Oid funcid)
void get_type_io_data(Oid typid, IOFuncSelector which_func, int16 *typlen, bool *typbyval, char *typalign, char *typdelim, Oid *typioparam, Oid *func)
int16 get_typlen(Oid typid)
Oid get_typ_typrelid(Oid typid)
char get_typtype(Oid typid)
Oid get_base_element_type(Oid typid)
Oid getTypeIOParam(HeapTuple typeTuple)
Oid get_opfamily_method(Oid opfid)
Oid getBaseTypeAndTypmod(Oid typid, int32 *typmod)
Oid get_transform_fromsql(Oid typid, Oid langid, List *trftypes)
char * get_publication_name(Oid pubid, bool missing_ok)
Oid getBaseType(Oid typid)
bool get_op_hash_functions(Oid opno, RegProcedure *lhs_procno, RegProcedure *rhs_procno)
bool get_typbyval(Oid typid)
bool op_mergejoinable(Oid opno, Oid inputtype)
List * get_mergejoin_opfamilies(Oid opno)
char * get_namespace_name(Oid nspid)
Oid get_array_type(Oid typid)
Oid get_func_rettype(Oid funcid)
Oid get_promoted_array_type(Oid typid)
Oid get_atttype(Oid relid, AttrNumber attnum)
char get_constraint_type(Oid conoid)
int32 get_typavgwidth(Oid typid, int32 typmod)
bool op_in_opfamily(Oid opno, Oid opfamily)
RegProcedure get_typsubscript(Oid typid, Oid *typelemp)
void get_type_category_preferred(Oid typid, char *typcategory, bool *typispreferred)
bool get_attstatsslot(AttStatsSlot *sslot, HeapTuple statstuple, int reqkind, Oid reqop, int flags)
Oid get_relname_relid(const char *relname, Oid relnamespace)
Oid get_negator(Oid opno)
Oid get_commutator(Oid opno)
void op_input_types(Oid opno, Oid *lefttype, Oid *righttype)
bool type_is_multirange(Oid typid)
void getTypeBinaryInputInfo(Oid type, Oid *typReceive, Oid *typIOParam)
void get_atttypetypmodcoll(Oid relid, AttrNumber attnum, Oid *typid, int32 *typmod, Oid *collid)
#define ATTSTATSSLOT_NUMBERS
#define ATTSTATSSLOT_VALUES
int32(* get_attavgwidth_hook_type)(Oid relid, AttrNumber attnum)
Const * makeConst(Oid consttype, int32 consttypmod, Oid constcollid, int constlen, Datum constvalue, bool constisnull, bool constbyval)
char * pstrdup(const char *in)
void pfree(void *pointer)
#define IsBootstrapProcessingMode()
bool isTempNamespace(Oid namespaceId)
FormData_pg_amop * Form_pg_amop
FormData_pg_amproc * Form_pg_amproc
FormData_pg_attribute * Form_pg_attribute
FormData_pg_class * Form_pg_class
FormData_pg_collation * Form_pg_collation
FormData_pg_constraint * Form_pg_constraint
FormData_pg_database * Form_pg_database
FormData_pg_index * Form_pg_index
FormData_pg_language * Form_pg_language
FormData_pg_namespace * Form_pg_namespace
FormData_pg_opclass * Form_pg_opclass
FormData_pg_operator * Form_pg_operator
FormData_pg_opfamily * Form_pg_opfamily
FormData_pg_proc * Form_pg_proc
FormData_pg_publication * Form_pg_publication
FormData_pg_range * Form_pg_range
#define STATISTIC_NUM_SLOTS
FormData_pg_statistic * Form_pg_statistic
FormData_pg_subscription * Form_pg_subscription
FormData_pg_type * Form_pg_type
static Datum PointerGetDatum(const void *X)
static Datum Int16GetDatum(int16 X)
static Datum BoolGetDatum(bool X)
static Datum ObjectIdGetDatum(Oid X)
static Pointer DatumGetPointer(Datum X)
static Datum CStringGetDatum(const char *X)
static Datum CharGetDatum(char X)
void * stringToNode(const char *str)
#define HTEqualStrategyNumber
bool amconsistentordering
bool amconsistentequality
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 SearchSysCache2(int cacheId, Datum key1, Datum key2)
HeapTuple SearchSysCacheAttName(Oid relid, const char *attname)
HeapTuple SearchSysCache4(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4)
Datum SysCacheGetAttrNotNull(int cacheId, HeapTuple tup, AttrNumber attributeNumber)
#define ReleaseSysCacheList(x)
#define SearchSysCacheList1(cacheId, key1)
#define SearchSysCacheExists3(cacheId, key1, key2, key3)
#define GetSysCacheOid1(cacheId, oidcol, key1)
#define GetSysCacheOid2(cacheId, oidcol, key1, key2)
TypeCacheEntry * lookup_type_cache(Oid type_id, int flags)
#define TYPECACHE_CMP_PROC
#define TYPECACHE_HASH_PROC