55 elog(
ERROR,
"cache lookup failed for operator class %u", opclassoid);
58 opfamilyoid = classform->opcfamily;
59 opcintype = classform->opcintype;
60 opckeytype = classform->opckeytype;
62 opckeytype = opcintype;
63 opclassname =
NameStr(classform->opcname);
68 elog(
ERROR,
"cache lookup failed for operator family %u", opfamilyoid);
71 opfamilyname =
NameStr(familyform->opfname);
88 if (procform->amproclefttype != procform->amprocrighttype)
91 (
errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
92 errmsg(
"operator family \"%s\" of access method %s contains support function %s with different left and right input types",
102 if (procform->amproclefttype != opcintype)
106 switch (procform->amprocnum)
110 5, 5, INTERNALOID, opcintype,
111 INT2OID, OIDOID, INTERNALOID);
115 2, 2, INTERNALOID, INTERNALOID);
126 INTERNALOID, INTERNALOID);
130 2, 2, INTERNALOID, INTERNALOID);
134 3, 3, opckeytype, opckeytype,
139 5, 5, INTERNALOID, opcintype,
140 INT2OID, OIDOID, INTERNALOID);
155 (
errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
156 errmsg(
"operator family \"%s\" of access method %s contains function %s with invalid support number %d",
157 opfamilyname,
"gist",
159 procform->amprocnum)));
167 (
errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
168 errmsg(
"operator family \"%s\" of access method %s contains function %s with wrong signature for support number %d",
169 opfamilyname,
"gist",
171 procform->amprocnum)));
184 if (oprform->amopstrategy < 1)
187 (
errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
188 errmsg(
"operator family \"%s\" of access method %s contains operator %s with invalid strategy number %d",
189 opfamilyname,
"gist",
191 oprform->amopstrategy)));
196 if (oprform->amoppurpose != AMOP_SEARCH)
200 oprform->amoplefttype,
201 oprform->amoplefttype,
205 (
errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
206 errmsg(
"operator family \"%s\" of access method %s contains unsupported ORDER BY specification for operator %s",
207 opfamilyname,
"gist",
216 (
errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
217 errmsg(
"operator family \"%s\" of access method %s contains incorrect ORDER BY opfamily specification for operator %s",
218 opfamilyname,
"gist",
226 op_rettype = BOOLOID;
231 oprform->amoplefttype,
232 oprform->amoprighttype))
235 (
errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
236 errmsg(
"operator family \"%s\" of access method %s contains operator %s with wrong signature",
237 opfamilyname,
"gist",
246 foreach(lc, grouplist)
251 if (thisgroup->
lefttype == opcintype &&
253 opclassgroup = thisgroup;
277 (
errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
278 errmsg(
"operator class \"%s\" of access method %s is missing support function %d",
279 opclassname,
"gist",
i)));
310 foreach(lc, operators)
354 (
errcode(ERRCODE_INVALID_OBJECT_DEFINITION),
355 errmsg(
"support function number %d is invalid for access method %s",
bool check_amproc_signature(Oid funcid, Oid restype, bool exact, int minargs, int maxargs,...)
bool check_amop_signature(Oid opno, Oid restype, Oid lefttype, Oid righttype)
List * identify_opfamily_groups(CatCList *oprlist, CatCList *proclist)
bool opfamily_can_sort_type(Oid opfamilyoid, Oid datatypeoid)
bool check_amoptsproc_signature(Oid funcid)
#define OidIsValid(objectId)
void ReleaseCatCacheList(CatCList *list)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
#define GIST_STRATNUM_PROC
#define GIST_DECOMPRESS_PROC
#define GIST_PICKSPLIT_PROC
#define GIST_CONSISTENT_PROC
#define GIST_SORTSUPPORT_PROC
#define GIST_COMPRESS_PROC
#define GIST_PENALTY_PROC
#define GIST_OPTIONS_PROC
#define GIST_DISTANCE_PROC
void gistadjustmembers(Oid opfamilyoid, Oid opclassoid, List *operators, List *functions)
bool gistvalidate(Oid opclassoid)
#define HeapTupleIsValid(tuple)
Oid get_opfamily_proc(Oid opfamily, Oid lefttype, Oid righttype, int16 procnum)
Oid get_op_rettype(Oid opno)
FormData_pg_amop * Form_pg_amop
FormData_pg_amproc * Form_pg_amproc
FormData_pg_opclass * Form_pg_opclass
FormData_pg_opfamily * Form_pg_opfamily
static Datum ObjectIdGetDatum(Oid X)
static const struct fns functions
char * format_procedure(Oid procedure_oid)
char * format_operator(Oid operator_oid)
CatCTup * members[FLEXIBLE_ARRAY_MEMBER]
void ReleaseSysCache(HeapTuple tuple)
HeapTuple SearchSysCache1(int cacheId, Datum key1)
#define SearchSysCacheList1(cacheId, key1)