v19.4-0001-Change-gist-stategy-support-procedure-to-take-.patch

text/plain

Filename: v19.4-0001-Change-gist-stategy-support-procedure-to-take-.patch
Type: text/plain
Part: 0
Message: Re: Index AM API cleanup

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: format-patch
Series: patch v19-0001
Subject: Change gist stategy support procedure to take "any", "any" as argument
File+
contrib/btree_gist/btree_gist--1.7--1.8.sql 26 26
doc/src/sgml/gist.sgml 6 0
src/backend/access/gist/gistutil.c 1 1
src/backend/access/gist/gistvalidate.c 3 1
src/include/catalog/pg_amproc.dat 12 12
From 50ce2bca712e35b5a546cf9e9d55661d711aadb9 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Fri, 7 Feb 2025 15:48:43 +0100
Subject: [PATCH v19.4 1/2] Change gist stategy support procedure to take
 "any", "any" as argument

---
 contrib/btree_gist/btree_gist--1.7--1.8.sql | 52 ++++++++++-----------
 doc/src/sgml/gist.sgml                      |  6 +++
 src/backend/access/gist/gistutil.c          |  2 +-
 src/backend/access/gist/gistvalidate.c      |  4 +-
 src/include/catalog/pg_amproc.dat           | 24 +++++-----
 5 files changed, 48 insertions(+), 40 deletions(-)

diff --git a/contrib/btree_gist/btree_gist--1.7--1.8.sql b/contrib/btree_gist/btree_gist--1.7--1.8.sql
index c702426deab..4ff9c43a8eb 100644
--- a/contrib/btree_gist/btree_gist--1.7--1.8.sql
+++ b/contrib/btree_gist/btree_gist--1.7--1.8.sql
@@ -9,79 +9,79 @@ CREATE FUNCTION gist_stratnum_btree(int)
 LANGUAGE C IMMUTABLE PARALLEL SAFE STRICT;
 
 ALTER OPERATOR FAMILY gist_oid_ops USING gist ADD
-	FUNCTION 12 (oid, oid) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_int2_ops USING gist ADD
-	FUNCTION 12 (int2, int2) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_int4_ops USING gist ADD
-	FUNCTION 12 (int4, int4) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_int8_ops USING gist ADD
-	FUNCTION 12 (int8, int8) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_float4_ops USING gist ADD
-	FUNCTION 12 (float4, float4) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_float8_ops USING gist ADD
-	FUNCTION 12 (float8, float8) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_timestamp_ops USING gist ADD
-	FUNCTION 12 (timestamp, timestamp) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_timestamptz_ops USING gist ADD
-	FUNCTION 12 (timestamptz, timestamptz) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_time_ops USING gist ADD
-	FUNCTION 12 (time, time) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_date_ops USING gist ADD
-	FUNCTION 12 (date, date) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_interval_ops USING gist ADD
-	FUNCTION 12 (interval, interval) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_cash_ops USING gist ADD
-	FUNCTION 12 (money, money) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_macaddr_ops USING gist ADD
-	FUNCTION 12 (macaddr, macaddr) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_text_ops USING gist ADD
-	FUNCTION 12 (text, text) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_bpchar_ops USING gist ADD
-	FUNCTION 12 (bpchar, bpchar) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_bytea_ops USING gist ADD
-	FUNCTION 12 (bytea, bytea) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_numeric_ops USING gist ADD
-	FUNCTION 12 (numeric, numeric) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_bit_ops USING gist ADD
-	FUNCTION 12 (bit, bit) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_vbit_ops USING gist ADD
-	FUNCTION 12 (varbit, varbit) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_inet_ops USING gist ADD
-	FUNCTION 12 (inet, inet) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_cidr_ops USING gist ADD
-	FUNCTION 12 (cidr, cidr) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_timetz_ops USING gist ADD
-	FUNCTION 12 (timetz, timetz) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_uuid_ops USING gist ADD
-	FUNCTION 12 (uuid, uuid) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_macaddr8_ops USING gist ADD
-	FUNCTION 12 (macaddr8, macaddr8) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_enum_ops USING gist ADD
-	FUNCTION 12 (anyenum, anyenum) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
 
 ALTER OPERATOR FAMILY gist_bool_ops USING gist ADD
-	FUNCTION 12 (bool, bool) gist_stratnum_btree (int) ;
+	FUNCTION 12 ("any", "any") gist_stratnum_btree (int) ;
diff --git a/doc/src/sgml/gist.sgml b/doc/src/sgml/gist.sgml
index 99098ab2522..9af5a4805f6 100644
--- a/doc/src/sgml/gist.sgml
+++ b/doc/src/sgml/gist.sgml
@@ -1197,6 +1197,12 @@ <title>Extensibility</title>
 RETURNS smallint
 AS 'MODULE_PATHNAME'
 LANGUAGE C STRICT;
+</programlisting>
+
+       And the operator family registration must look like this:
+<programlisting>
+ALTER OPERATOR FAMILY my_opfamily USING gist ADD
+    FUNCTION 12 ("any", "any") my_stratnum(int);
 </programlisting>
       </para>
 
diff --git a/src/backend/access/gist/gistutil.c b/src/backend/access/gist/gistutil.c
index dbc4ac639a2..fef5876d7d8 100644
--- a/src/backend/access/gist/gistutil.c
+++ b/src/backend/access/gist/gistutil.c
@@ -1101,7 +1101,7 @@ gisttranslatecmptype(CompareType cmptype, Oid opfamily, Oid opcintype)
 	Datum		result;
 
 	/* Check whether the function is provided. */
-	funcid = get_opfamily_proc(opfamily, opcintype, opcintype, GIST_STRATNUM_PROC);
+	funcid = get_opfamily_proc(opfamily, ANYOID, ANYOID, GIST_STRATNUM_PROC);
 	if (!OidIsValid(funcid))
 		return InvalidStrategy;
 
diff --git a/src/backend/access/gist/gistvalidate.c b/src/backend/access/gist/gistvalidate.c
index ffefa12d97a..2a49e6d20f0 100644
--- a/src/backend/access/gist/gistvalidate.c
+++ b/src/backend/access/gist/gistvalidate.c
@@ -140,7 +140,9 @@ gistvalidate(Oid opclassoid)
 				break;
 			case GIST_STRATNUM_PROC:
 				ok = check_amproc_signature(procform->amproc, INT2OID, true,
-											1, 1, INT4OID);
+											1, 1, INT4OID) &&
+					procform->amproclefttype == ANYOID &&
+					procform->amprocrighttype == ANYOID;
 				break;
 			default:
 				ereport(INFO,
diff --git a/src/include/catalog/pg_amproc.dat b/src/include/catalog/pg_amproc.dat
index 508f48d345c..19100482ba4 100644
--- a/src/include/catalog/pg_amproc.dat
+++ b/src/include/catalog/pg_amproc.dat
@@ -506,8 +506,8 @@
   amprocrighttype => 'box', amprocnum => '7', amproc => 'gist_box_same' },
 { amprocfamily => 'gist/box_ops', amproclefttype => 'box',
   amprocrighttype => 'box', amprocnum => '8', amproc => 'gist_box_distance' },
-{ amprocfamily => 'gist/box_ops', amproclefttype => 'box',
-  amprocrighttype => 'box', amprocnum => '12',
+{ amprocfamily => 'gist/box_ops', amproclefttype => 'any',
+  amprocrighttype => 'any', amprocnum => '12',
   amproc => 'gist_stratnum_common' },
 { amprocfamily => 'gist/poly_ops', amproclefttype => 'polygon',
   amprocrighttype => 'polygon', amprocnum => '1',
@@ -528,8 +528,8 @@
 { amprocfamily => 'gist/poly_ops', amproclefttype => 'polygon',
   amprocrighttype => 'polygon', amprocnum => '8',
   amproc => 'gist_poly_distance' },
-{ amprocfamily => 'gist/poly_ops', amproclefttype => 'polygon',
-  amprocrighttype => 'polygon', amprocnum => '12',
+{ amprocfamily => 'gist/poly_ops', amproclefttype => 'any',
+  amprocrighttype => 'any', amprocnum => '12',
   amproc => 'gist_stratnum_common' },
 { amprocfamily => 'gist/circle_ops', amproclefttype => 'circle',
   amprocrighttype => 'circle', amprocnum => '1',
@@ -549,8 +549,8 @@
 { amprocfamily => 'gist/circle_ops', amproclefttype => 'circle',
   amprocrighttype => 'circle', amprocnum => '8',
   amproc => 'gist_circle_distance' },
-{ amprocfamily => 'gist/circle_ops', amproclefttype => 'circle',
-  amprocrighttype => 'circle', amprocnum => '12',
+{ amprocfamily => 'gist/circle_ops', amproclefttype => 'any',
+  amprocrighttype => 'any', amprocnum => '12',
   amproc => 'gist_stratnum_common' },
 { amprocfamily => 'gist/tsvector_ops', amproclefttype => 'tsvector',
   amprocrighttype => 'tsvector', amprocnum => '1',
@@ -606,8 +606,8 @@
 { amprocfamily => 'gist/range_ops', amproclefttype => 'anyrange',
   amprocrighttype => 'anyrange', amprocnum => '7',
   amproc => 'range_gist_same' },
-{ amprocfamily => 'gist/range_ops', amproclefttype => 'anyrange',
-  amprocrighttype => 'anyrange', amprocnum => '12',
+{ amprocfamily => 'gist/range_ops', amproclefttype => 'any',
+  amprocrighttype => 'any', amprocnum => '12',
   amproc => 'gist_stratnum_common' },
 { amprocfamily => 'gist/network_ops', amproclefttype => 'inet',
   amprocrighttype => 'inet', amprocnum => '1',
@@ -625,8 +625,8 @@
   amprocrighttype => 'inet', amprocnum => '7', amproc => 'inet_gist_same' },
 { amprocfamily => 'gist/network_ops', amproclefttype => 'inet',
   amprocrighttype => 'inet', amprocnum => '9', amproc => 'inet_gist_fetch' },
-{ amprocfamily => 'gist/network_ops', amproclefttype => 'inet',
-  amprocrighttype => 'inet', amprocnum => '12',
+{ amprocfamily => 'gist/network_ops', amproclefttype => 'any',
+  amprocrighttype => 'any', amprocnum => '12',
   amproc => 'gist_stratnum_common' },
 { amprocfamily => 'gist/multirange_ops', amproclefttype => 'anymultirange',
   amprocrighttype => 'anymultirange', amprocnum => '1',
@@ -646,8 +646,8 @@
 { amprocfamily => 'gist/multirange_ops', amproclefttype => 'anymultirange',
   amprocrighttype => 'anymultirange', amprocnum => '7',
   amproc => 'range_gist_same' },
-{ amprocfamily => 'gist/multirange_ops', amproclefttype => 'anymultirange',
-  amprocrighttype => 'anymultirange', amprocnum => '12',
+{ amprocfamily => 'gist/multirange_ops', amproclefttype => 'any',
+  amprocrighttype => 'any', amprocnum => '12',
   amproc => 'gist_stratnum_common' },
 
 # gin
-- 
2.48.1