mirror of
https://github.com/postgres/postgres.git
synced 2025-06-13 07:41:39 +03:00
Convert PathKey to use CompareType
Change the PathKey struct to use CompareType to record the sort direction instead of hardcoding btree strategy numbers. The CompareType is then converted to the index-type-specific strategy when the plan is created. This reduces the number of places btree strategy numbers are hardcoded, and it's a self-contained subset of a larger effort to allow non-btree indexes to behave like btrees. Author: Mark Dilger <mark.dilger@enterprisedb.com> Co-authored-by: Peter Eisentraut <peter@eisentraut.org> Discussion: https://www.postgresql.org/message-id/flat/E72EAA49-354D-4C2E-8EB9-255197F55330@enterprisedb.com
This commit is contained in:
@ -3969,17 +3969,17 @@ appendOrderByClause(List *pathkeys, bool has_final_sort,
|
||||
appendStringInfoString(buf, ", ");
|
||||
|
||||
/*
|
||||
* Lookup the operator corresponding to the strategy in the opclass.
|
||||
* The datatype used by the opfamily is not necessarily the same as
|
||||
* the expression type (for array types for example).
|
||||
* Lookup the operator corresponding to the compare type in the
|
||||
* opclass. The datatype used by the opfamily is not necessarily the
|
||||
* same as the expression type (for array types for example).
|
||||
*/
|
||||
oprid = get_opfamily_member(pathkey->pk_opfamily,
|
||||
em->em_datatype,
|
||||
em->em_datatype,
|
||||
pathkey->pk_strategy);
|
||||
oprid = get_opfamily_member_for_cmptype(pathkey->pk_opfamily,
|
||||
em->em_datatype,
|
||||
em->em_datatype,
|
||||
pathkey->pk_cmptype);
|
||||
if (!OidIsValid(oprid))
|
||||
elog(ERROR, "missing operator %d(%u,%u) in opfamily %u",
|
||||
pathkey->pk_strategy, em->em_datatype, em->em_datatype,
|
||||
pathkey->pk_cmptype, em->em_datatype, em->em_datatype,
|
||||
pathkey->pk_opfamily);
|
||||
|
||||
deparseExpr(em_expr, context);
|
||||
|
Reference in New Issue
Block a user