aboutsummaryrefslogtreecommitdiff
path: root/src/include/nodes/pathnodes.h
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2025-04-04 11:13:54 +0200
committerPeter Eisentraut <peter@eisentraut.org>2025-04-04 11:22:20 +0200
commit8123e91f5aeb26c6e4cf583bb61c99281485af83 (patch)
tree7ca4f65aeae6dbdf2d35d6c137b60191f82a85b2 /src/include/nodes/pathnodes.h
parentdaa16893faa96246d758eb2cc27e2f75c5308296 (diff)
downloadpostgresql-8123e91f5aeb26c6e4cf583bb61c99281485af83.tar.gz
postgresql-8123e91f5aeb26c6e4cf583bb61c99281485af83.zip
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
Diffstat (limited to 'src/include/nodes/pathnodes.h')
-rw-r--r--src/include/nodes/pathnodes.h12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/include/nodes/pathnodes.h b/src/include/nodes/pathnodes.h
index 6e034960896..4c466f76778 100644
--- a/src/include/nodes/pathnodes.h
+++ b/src/include/nodes/pathnodes.h
@@ -1506,9 +1506,7 @@ typedef struct EquivalenceMember
* equivalent and closely-related orderings. (See optimizer/README for more
* information.)
*
- * Note: pk_strategy is either BTLessStrategyNumber (for ASC) or
- * BTGreaterStrategyNumber (for DESC). We assume that all ordering-capable
- * index types will use btree-compatible strategy numbers.
+ * Note: pk_strategy is either COMPARE_LT (for ASC) or COMPARE_GT (for DESC).
*/
typedef struct PathKey
{
@@ -1518,8 +1516,8 @@ typedef struct PathKey
/* the value that is ordered */
EquivalenceClass *pk_eclass pg_node_attr(copy_as_scalar, equal_as_scalar);
- Oid pk_opfamily; /* btree opfamily defining the ordering */
- int pk_strategy; /* sort direction (ASC or DESC) */
+ Oid pk_opfamily; /* index opfamily defining the ordering */
+ CompareType pk_cmptype; /* sort direction (ASC or DESC) */
bool pk_nulls_first; /* do NULLs come before normal values? */
} PathKey;
@@ -2784,9 +2782,9 @@ typedef struct RestrictInfo
typedef struct MergeScanSelCache
{
/* Ordering details (cache lookup key) */
- Oid opfamily; /* btree opfamily defining the ordering */
+ Oid opfamily; /* index opfamily defining the ordering */
Oid collation; /* collation for the ordering */
- int strategy; /* sort direction (ASC or DESC) */
+ CompareType cmptype; /* sort direction (ASC or DESC) */
bool nulls_first; /* do NULLs come before normal values? */
/* Results */
Selectivity leftstartsel; /* first-join fraction for clause left side */