diff options
author | Peter Eisentraut | 2025-04-04 09:13:54 +0000 |
---|---|---|
committer | Peter Eisentraut | 2025-04-04 09:22:20 +0000 |
commit | 8123e91f5aeb26c6e4cf583bb61c99281485af83 (patch) | |
tree | 7ca4f65aeae6dbdf2d35d6c137b60191f82a85b2 /contrib | |
parent | daa16893faa96246d758eb2cc27e2f75c5308296 (diff) |
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 <[email protected]>
Co-authored-by: Peter Eisentraut <[email protected]>
Discussion: https://www.postgresql.org/message-id/flat/[email protected]
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/postgres_fdw/deparse.c | 16 | ||||
-rw-r--r-- | contrib/postgres_fdw/postgres_fdw.c | 2 |
2 files changed, 9 insertions, 9 deletions
diff --git a/contrib/postgres_fdw/deparse.c b/contrib/postgres_fdw/deparse.c index 6e7dc3d2df9..d9970dd6753 100644 --- a/contrib/postgres_fdw/deparse.c +++ b/contrib/postgres_fdw/deparse.c @@ -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); diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c index ac14c06c715..b4e0e60928b 100644 --- a/contrib/postgres_fdw/postgres_fdw.c +++ b/contrib/postgres_fdw/postgres_fdw.c @@ -999,7 +999,7 @@ get_useful_pathkeys_for_relation(PlannerInfo *root, RelOptInfo *rel) /* Looks like we can generate a pathkey, so let's do it. */ pathkey = make_canonical_pathkey(root, cur_ec, linitial_oid(cur_ec->ec_opfamilies), - BTLessStrategyNumber, + COMPARE_LT, false); useful_pathkeys_list = lappend(useful_pathkeys_list, list_make1(pathkey)); |