diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2024-01-20 13:57:54 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2024-01-20 13:57:54 -0500 |
commit | 075df6b2080b13e0a5adc88737b7c24417a873c1 (patch) | |
tree | 85d338b2c24b52e74b006fb7766d8259307276e5 /src/backend/utils/cache/typcache.c | |
parent | abb0b4fc03fcf5a0ca786bd88c357bf9213aa6e1 (diff) |
Add planner support functions for range operators <@ and @>.
These support functions will transform expressions with constant
range values into direct comparisons on the range bound values,
which are frequently better-optimizable. The transformation is
skipped however if it would require double evaluation of a
volatile or expensive element expression.
Along the way, add the range opfamily OID to range typcache entries,
since load_rangetype_info has to compute that anyway and it seems
silly to duplicate the work later.
Kim Johan Andersson and Jian He, reviewed by Laurenz Albe
Discussion: https://postgr.es/m/94f64d1f-b8c0-b0c5-98bc-0793a34e0851@kimmet.dk
Diffstat (limited to 'src/backend/utils/cache/typcache.c')
-rw-r--r-- | src/backend/utils/cache/typcache.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/backend/utils/cache/typcache.c b/src/backend/utils/cache/typcache.c index 4625be4d5c5..84fc83cb11f 100644 --- a/src/backend/utils/cache/typcache.c +++ b/src/backend/utils/cache/typcache.c @@ -940,6 +940,7 @@ load_rangetype_info(TypeCacheEntry *typentry) /* get opclass properties and look up the comparison function */ opfamilyOid = get_opclass_family(opclassOid); opcintype = get_opclass_input_type(opclassOid); + typentry->rng_opfamily = opfamilyOid; cmpFnOid = get_opfamily_proc(opfamilyOid, opcintype, opcintype, BTORDER_PROC); |