mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
Change gist stratnum function to use CompareType
This changes commit 7406ab623f
in that the gist strategy number
mapping support function is changed to use the CompareType enum as
input, instead of the "well-known" RT*StrategyNumber strategy numbers.
This is a bit cleaner, since you are not dealing with two sets of
strategy numbers. Also, this will enable us to subsume this system
into a more general system of using CompareType to define operator
semantics across index methods.
Discussion: https://www.postgresql.org/message-id/flat/E72EAA49-354D-4C2E-8EB9-255197F55330@enterprisedb.com
This commit is contained in:
@ -3,85 +3,85 @@
|
||||
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
||||
\echo Use "ALTER EXTENSION btree_gist UPDATE TO '1.8'" to load this file. \quit
|
||||
|
||||
CREATE FUNCTION gist_stratnum_btree(smallint)
|
||||
CREATE FUNCTION gist_stratnum_btree(int)
|
||||
RETURNS smallint
|
||||
AS 'MODULE_PATHNAME'
|
||||
LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_oid_ops USING gist ADD
|
||||
FUNCTION 12 (oid, oid) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (oid, oid) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_int2_ops USING gist ADD
|
||||
FUNCTION 12 (int2, int2) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (int2, int2) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_int4_ops USING gist ADD
|
||||
FUNCTION 12 (int4, int4) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (int4, int4) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_int8_ops USING gist ADD
|
||||
FUNCTION 12 (int8, int8) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (int8, int8) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_float4_ops USING gist ADD
|
||||
FUNCTION 12 (float4, float4) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (float4, float4) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_float8_ops USING gist ADD
|
||||
FUNCTION 12 (float8, float8) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (float8, float8) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_timestamp_ops USING gist ADD
|
||||
FUNCTION 12 (timestamp, timestamp) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (timestamp, timestamp) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_timestamptz_ops USING gist ADD
|
||||
FUNCTION 12 (timestamptz, timestamptz) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (timestamptz, timestamptz) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_time_ops USING gist ADD
|
||||
FUNCTION 12 (time, time) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (time, time) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_date_ops USING gist ADD
|
||||
FUNCTION 12 (date, date) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (date, date) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_interval_ops USING gist ADD
|
||||
FUNCTION 12 (interval, interval) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (interval, interval) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_cash_ops USING gist ADD
|
||||
FUNCTION 12 (money, money) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (money, money) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_macaddr_ops USING gist ADD
|
||||
FUNCTION 12 (macaddr, macaddr) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (macaddr, macaddr) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_text_ops USING gist ADD
|
||||
FUNCTION 12 (text, text) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (text, text) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_bpchar_ops USING gist ADD
|
||||
FUNCTION 12 (bpchar, bpchar) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (bpchar, bpchar) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_bytea_ops USING gist ADD
|
||||
FUNCTION 12 (bytea, bytea) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (bytea, bytea) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_numeric_ops USING gist ADD
|
||||
FUNCTION 12 (numeric, numeric) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (numeric, numeric) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_bit_ops USING gist ADD
|
||||
FUNCTION 12 (bit, bit) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (bit, bit) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_vbit_ops USING gist ADD
|
||||
FUNCTION 12 (varbit, varbit) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (varbit, varbit) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_inet_ops USING gist ADD
|
||||
FUNCTION 12 (inet, inet) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (inet, inet) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_cidr_ops USING gist ADD
|
||||
FUNCTION 12 (cidr, cidr) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (cidr, cidr) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_timetz_ops USING gist ADD
|
||||
FUNCTION 12 (timetz, timetz) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (timetz, timetz) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_uuid_ops USING gist ADD
|
||||
FUNCTION 12 (uuid, uuid) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (uuid, uuid) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_macaddr8_ops USING gist ADD
|
||||
FUNCTION 12 (macaddr8, macaddr8) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (macaddr8, macaddr8) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_enum_ops USING gist ADD
|
||||
FUNCTION 12 (anyenum, anyenum) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (anyenum, anyenum) gist_stratnum_btree (int) ;
|
||||
|
||||
ALTER OPERATOR FAMILY gist_bool_ops USING gist ADD
|
||||
FUNCTION 12 (bool, bool) gist_stratnum_btree (int2) ;
|
||||
FUNCTION 12 (bool, bool) gist_stratnum_btree (int) ;
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include "postgres.h"
|
||||
|
||||
#include "access/stratnum.h"
|
||||
#include "nodes/primnodes.h"
|
||||
#include "utils/builtins.h"
|
||||
|
||||
PG_MODULE_MAGIC;
|
||||
@ -60,19 +61,19 @@ gbt_decompress(PG_FUNCTION_ARGS)
|
||||
Datum
|
||||
gist_stratnum_btree(PG_FUNCTION_ARGS)
|
||||
{
|
||||
StrategyNumber strat = PG_GETARG_UINT16(0);
|
||||
CompareType cmptype = PG_GETARG_INT32(0);
|
||||
|
||||
switch (strat)
|
||||
switch (cmptype)
|
||||
{
|
||||
case RTEqualStrategyNumber:
|
||||
case COMPARE_EQ:
|
||||
PG_RETURN_UINT16(BTEqualStrategyNumber);
|
||||
case RTLessStrategyNumber:
|
||||
case COMPARE_LT:
|
||||
PG_RETURN_UINT16(BTLessStrategyNumber);
|
||||
case RTLessEqualStrategyNumber:
|
||||
case COMPARE_LE:
|
||||
PG_RETURN_UINT16(BTLessEqualStrategyNumber);
|
||||
case RTGreaterStrategyNumber:
|
||||
case COMPARE_GT:
|
||||
PG_RETURN_UINT16(BTGreaterStrategyNumber);
|
||||
case RTGreaterEqualStrategyNumber:
|
||||
case COMPARE_GE:
|
||||
PG_RETURN_UINT16(BTGreaterEqualStrategyNumber);
|
||||
default:
|
||||
PG_RETURN_UINT16(InvalidStrategy);
|
||||
|
@ -1,11 +1,11 @@
|
||||
-- test stratnum support func
|
||||
SELECT gist_stratnum_btree(3::smallint);
|
||||
SELECT gist_stratnum_btree(7);
|
||||
gist_stratnum_btree
|
||||
---------------------
|
||||
0
|
||||
(1 row)
|
||||
|
||||
SELECT gist_stratnum_btree(18::smallint);
|
||||
SELECT gist_stratnum_btree(3);
|
||||
gist_stratnum_btree
|
||||
---------------------
|
||||
3
|
||||
|
@ -1,3 +1,3 @@
|
||||
-- test stratnum support func
|
||||
SELECT gist_stratnum_btree(3::smallint);
|
||||
SELECT gist_stratnum_btree(18::smallint);
|
||||
SELECT gist_stratnum_btree(7);
|
||||
SELECT gist_stratnum_btree(3);
|
||||
|
Reference in New Issue
Block a user