diff options
Diffstat (limited to 'src/backend/commands')
-rw-r--r-- | src/backend/commands/opclasscmds.c | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/backend/commands/opclasscmds.c b/src/backend/commands/opclasscmds.c index 2c325badf94..8546366ee06 100644 --- a/src/backend/commands/opclasscmds.c +++ b/src/backend/commands/opclasscmds.c @@ -1242,25 +1242,25 @@ assignProcTypes(OpFamilyMember *member, Oid amoid, Oid typeoid, } /* - * btree comparison procs must be 2-arg procs returning int4. btree - * sortsupport procs must take internal and return void. btree in_range - * procs must be 5-arg procs returning bool. btree equalimage procs must - * take 1 arg and return bool. hash support proc 1 must be a 1-arg proc - * returning int4, while proc 2 must be a 2-arg proc returning int8. - * Otherwise we don't know. + * Ordering comparison procs must be 2-arg procs returning int4. Ordering + * sortsupport procs must take internal and return void. Ordering + * in_range procs must be 5-arg procs returning bool. Ordering equalimage + * procs must take 1 arg and return bool. Hashing support proc 1 must be + * a 1-arg proc returning int4, while proc 2 must be a 2-arg proc + * returning int8. Otherwise we don't know. */ - else if (amoid == BTREE_AM_OID) + else if (GetIndexAmRoutineByAmId(amoid, false)->amcanorder) { if (member->number == BTORDER_PROC) { if (procform->pronargs != 2) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree comparison functions must have two arguments"))); + errmsg("ordering comparison functions must have two arguments"))); if (procform->prorettype != INT4OID) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree comparison functions must return integer"))); + errmsg("ordering comparison functions must return integer"))); /* * If lefttype/righttype isn't specified, use the proc's input @@ -1277,11 +1277,11 @@ assignProcTypes(OpFamilyMember *member, Oid amoid, Oid typeoid, procform->proargtypes.values[0] != INTERNALOID) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree sort support functions must accept type \"internal\""))); + errmsg("ordering sort support functions must accept type \"internal\""))); if (procform->prorettype != VOIDOID) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree sort support functions must return void"))); + errmsg("ordering sort support functions must return void"))); /* * Can't infer lefttype/righttype from proc, so use default rule @@ -1292,11 +1292,11 @@ assignProcTypes(OpFamilyMember *member, Oid amoid, Oid typeoid, if (procform->pronargs != 5) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree in_range functions must have five arguments"))); + errmsg("ordering in_range functions must have five arguments"))); if (procform->prorettype != BOOLOID) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree in_range functions must return boolean"))); + errmsg("ordering in_range functions must return boolean"))); /* * If lefttype/righttype isn't specified, use the proc's input @@ -1312,11 +1312,11 @@ assignProcTypes(OpFamilyMember *member, Oid amoid, Oid typeoid, if (procform->pronargs != 1) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree equal image functions must have one argument"))); + errmsg("ordering equal image functions must have one argument"))); if (procform->prorettype != BOOLOID) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree equal image functions must return boolean"))); + errmsg("ordering equal image functions must return boolean"))); /* * pg_amproc functions are indexed by (lefttype, righttype), but @@ -1329,10 +1329,10 @@ assignProcTypes(OpFamilyMember *member, Oid amoid, Oid typeoid, if (member->lefttype != member->righttype) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("btree equal image functions must not be cross-type"))); + errmsg("ordering equal image functions must not be cross-type"))); } } - else if (amoid == HASH_AM_OID) + else if (GetIndexAmRoutineByAmId(amoid, false)->amcanhash) { if (member->number == HASHSTANDARD_PROC) { |