103 foreach(
pl, parameters)
113 errmsg(
"SETOF type not allowed for operator argument")));
121 errmsg(
"SETOF type not allowed for operator argument")));
128 else if (
strcmp(
defel->defname,
"commutator") == 0)
154 errmsg(
"operator attribute \"%s\" not recognized",
165 errmsg(
"operator function must be specified")));
183 errmsg(
"operator argument types must be specified")));
187 errmsg(
"operator right argument type must be specified"),
188 errdetail(
"Postfix operators are not supported.")));
292 errmsg(
"restriction estimator function %s must return type %s",
335 errmsg(
"join estimator function %s has multiple matches",
350 errmsg(
"join estimator function %s must return type %s",
388 errmsg(
"operator does not exist: %s",
396 errmsg(
"operator is only a shell: %s",
498 foreach(
pl,
stmt->options)
518 else if (
strcmp(
defel->defname,
"commutator") == 0)
548 errmsg(
"operator attribute \"%s\" cannot be changed",
554 errmsg(
"operator attribute \"%s\" not recognized",
600 errmsg(
"operator cannot be its own negator")));
615 errmsg(
"operator attribute \"%s\" cannot be changed if it has already been set",
622 errmsg(
"operator attribute \"%s\" cannot be changed if it has already been set",
628 errmsg(
"operator attribute \"%s\" cannot be changed if it has already been set",
634 errmsg(
"operator attribute \"%s\" cannot be changed if it has already been set",
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)
void aclcheck_error_type(AclResult aclerr, Oid typeOid)
static Datum values[MAXATTR]
#define OidIsValid(objectId)
TypeName * defGetTypeName(DefElem *def)
bool defGetBoolean(DefElem *def)
List * defGetQualifiedName(DefElem *def)
int errdetail(const char *fmt,...)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
HeapTuple heap_modify_tuple(HeapTuple tuple, TupleDesc tupleDesc, const Datum *replValues, const bool *replIsnull, const bool *doReplace)
#define HeapTupleIsValid(tuple)
static void * GETSTRUCT(const HeapTupleData *tuple)
void CatalogTupleUpdate(Relation heapRel, const ItemPointerData *otid, HeapTuple tup)
void CatalogTupleDelete(Relation heapRel, const ItemPointerData *tid)
char * get_namespace_name(Oid nspid)
Oid get_func_rettype(Oid funcid)
char * NameListToString(const List *names)
Oid QualifiedNameGetCreationNamespace(const List *names, char **objname_p)
#define InvokeObjectPostAlterHook(classId, objectId, subId)
ObjectAddress AlterOperator(AlterOperatorStmt *stmt)
void RemoveOperatorById(Oid operOid)
static Oid ValidateJoinEstimator(List *joinName)
static Oid ValidateOperatorReference(List *name, Oid leftTypeId, Oid rightTypeId)
ObjectAddress DefineOperator(List *names, List *parameters)
static Oid ValidateRestrictionEstimator(List *restrictionName)
Oid LookupFuncName(List *funcname, int nargs, const Oid *argtypes, bool missing_ok)
const char * op_signature_string(List *op, Oid arg1, Oid arg2)
Oid LookupOperWithArgs(ObjectWithArgs *oper, bool noError)
Oid typenameTypeId(ParseState *pstate, const TypeName *typeName)
ObjectAddress OperatorCreate(const char *operatorName, Oid operatorNamespace, Oid leftTypeId, Oid rightTypeId, Oid procedureId, List *commutatorName, List *negatorName, Oid restrictionId, Oid joinId, bool canMerge, bool canHash)
void OperatorValidateParams(Oid leftTypeId, Oid rightTypeId, Oid operResultType, bool hasCommutator, bool hasNegator, bool hasRestrictionSelectivity, bool hasJoinSelectivity, bool canMerge, bool canHash)
Oid OperatorLookup(List *operatorName, Oid leftObjectId, Oid rightObjectId, bool *defined)
ObjectAddress makeOperatorDependencies(HeapTuple tuple, bool makeExtensionDep, bool isUpdate)
void OperatorUpd(Oid baseId, Oid commId, Oid negId, bool isDelete)
FormData_pg_operator * Form_pg_operator
static Datum BoolGetDatum(bool X)
static Datum ObjectIdGetDatum(Oid X)
#define RelationGetDescr(relation)
void ReleaseSysCache(HeapTuple tuple)
HeapTuple SearchSysCache1(int cacheId, Datum key1)
#define SearchSysCacheCopy1(cacheId, key1)
void table_close(Relation relation, LOCKMODE lockmode)
Relation table_open(Oid relationId, LOCKMODE lockmode)