[PATCH] remove deprecated v8.2 containment operators
Forking this thread:
/messages/by-id/fd93f1c5-7818-a02c-01e5-1075ac0d4def@iki.fi
They have been deprecated for a Long Time, so finally remove them for v14.
Four fewer exclamation marks makes the documentation less exciting, which is a
good thing.
Attachments:
0001-remove-deprecated-v8.2-containment-operators.patchtext/x-diff; charset=us-asciiDownload
From 7868fee24f92fb5150735f1f9507cfe9a6ab212c Mon Sep 17 00:00:00 2001
From: Justin Pryzby <pryzbyj@telsasoft.com>
Date: Sat, 11 Apr 2020 22:57:06 -0500
Subject: [PATCH] remove deprecated v8.2 containment operators
See also:
ba920e1c9182eac55d5f1327ab0d29b721154277
684ad6a92fcc33adebdab65c4e7d72a68ba05408
---
contrib/cube/cube.c | 4 --
contrib/hstore/hstore.h | 1 -
contrib/hstore/hstore_gist.c | 3 +-
contrib/intarray/_int_gin.c | 4 --
contrib/intarray/_int_gist.c | 2 -
contrib/intarray/_intbig_gist.c | 2 -
contrib/intarray/intarray--1.2.sql | 6 --
contrib/intarray/intarray--1.3--1.4.sql | 7 ---
contrib/seg/seg.c | 4 --
doc/src/sgml/cube.sgml | 8 ---
doc/src/sgml/func.sgml | 9 ---
doc/src/sgml/hstore.sgml | 10 ----
doc/src/sgml/intarray.sgml | 8 ---
doc/src/sgml/seg.sgml | 8 ---
src/backend/access/brin/brin_inclusion.c | 2 -
src/backend/access/gist/gistproc.c | 4 --
src/include/access/stratnum.h | 2 -
src/include/catalog/pg_amop.dat | 16 ------
src/include/catalog/pg_operator.dat | 65 ----------------------
src/test/regress/expected/create_am.out | 12 ++--
src/test/regress/expected/create_index.out | 24 ++++----
src/test/regress/expected/opr_sanity.out | 7 +--
src/test/regress/sql/create_am.sql | 6 +-
src/test/regress/sql/create_index.sql | 12 ++--
24 files changed, 28 insertions(+), 198 deletions(-)
diff --git a/contrib/cube/cube.c b/contrib/cube/cube.c
index 6f810b26c5..57b89d91b8 100644
--- a/contrib/cube/cube.c
+++ b/contrib/cube/cube.c
@@ -634,11 +634,9 @@ g_cube_leaf_consistent(NDBOX *key,
retval = (cube_cmp_v0(key, query) == 0);
break;
case RTContainsStrategyNumber:
- case RTOldContainsStrategyNumber:
retval = cube_contains_v0(key, query);
break;
case RTContainedByStrategyNumber:
- case RTOldContainedByStrategyNumber:
retval = cube_contains_v0(query, key);
break;
default:
@@ -661,11 +659,9 @@ g_cube_internal_consistent(NDBOX *key,
break;
case RTSameStrategyNumber:
case RTContainsStrategyNumber:
- case RTOldContainsStrategyNumber:
retval = (bool) cube_contains_v0(key, query);
break;
case RTContainedByStrategyNumber:
- case RTOldContainedByStrategyNumber:
retval = (bool) cube_overlap_v0(key, query);
break;
default:
diff --git a/contrib/hstore/hstore.h b/contrib/hstore/hstore.h
index bf4a565ed9..8713a22dcc 100644
--- a/contrib/hstore/hstore.h
+++ b/contrib/hstore/hstore.h
@@ -181,7 +181,6 @@ extern Pairs *hstoreArrayToPairs(ArrayType *a, int *npairs);
#define HStoreExistsStrategyNumber 9
#define HStoreExistsAnyStrategyNumber 10
#define HStoreExistsAllStrategyNumber 11
-#define HStoreOldContainsStrategyNumber 13 /* backwards compatibility */
/*
* defining HSTORE_POLLUTE_NAMESPACE=0 will prevent use of old function names;
diff --git a/contrib/hstore/hstore_gist.c b/contrib/hstore/hstore_gist.c
index 102c9cea72..10c9906fa5 100644
--- a/contrib/hstore/hstore_gist.c
+++ b/contrib/hstore/hstore_gist.c
@@ -517,8 +517,7 @@ ghstore_consistent(PG_FUNCTION_ARGS)
sign = GETSIGN(entry);
- if (strategy == HStoreContainsStrategyNumber ||
- strategy == HStoreOldContainsStrategyNumber)
+ if (strategy == HStoreContainsStrategyNumber)
{
HStore *query = PG_GETARG_HSTORE_P(1);
HEntry *qe = ARRPTR(query);
diff --git a/contrib/intarray/_int_gin.c b/contrib/intarray/_int_gin.c
index b7958d8eca..72cfbc2fd7 100644
--- a/contrib/intarray/_int_gin.c
+++ b/contrib/intarray/_int_gin.c
@@ -78,7 +78,6 @@ ginint4_queryextract(PG_FUNCTION_ARGS)
*searchMode = GIN_SEARCH_MODE_DEFAULT;
break;
case RTContainedByStrategyNumber:
- case RTOldContainedByStrategyNumber:
/* empty set is contained in everything */
*searchMode = GIN_SEARCH_MODE_INCLUDE_EMPTY;
break;
@@ -89,7 +88,6 @@ ginint4_queryextract(PG_FUNCTION_ARGS)
*searchMode = GIN_SEARCH_MODE_INCLUDE_EMPTY;
break;
case RTContainsStrategyNumber:
- case RTOldContainsStrategyNumber:
if (*nentries > 0)
*searchMode = GIN_SEARCH_MODE_DEFAULT;
else /* everything contains the empty set */
@@ -127,7 +125,6 @@ ginint4_consistent(PG_FUNCTION_ARGS)
res = true;
break;
case RTContainedByStrategyNumber:
- case RTOldContainedByStrategyNumber:
/* we will need recheck */
*recheck = true;
/* at least one element in check[] is true, so result = true */
@@ -148,7 +145,6 @@ ginint4_consistent(PG_FUNCTION_ARGS)
}
break;
case RTContainsStrategyNumber:
- case RTOldContainsStrategyNumber:
/* result is not lossy */
*recheck = false;
/* Must have all elements in check[] true */
diff --git a/contrib/intarray/_int_gist.c b/contrib/intarray/_int_gist.c
index f1817a6cce..e0535d9934 100644
--- a/contrib/intarray/_int_gist.c
+++ b/contrib/intarray/_int_gist.c
@@ -87,12 +87,10 @@ g_int_consistent(PG_FUNCTION_ARGS)
query);
break;
case RTContainsStrategyNumber:
- case RTOldContainsStrategyNumber:
retval = inner_int_contains((ArrayType *) DatumGetPointer(entry->key),
query);
break;
case RTContainedByStrategyNumber:
- case RTOldContainedByStrategyNumber:
/*
* This code is unreachable as of intarray 1.4, because the <@
diff --git a/contrib/intarray/_intbig_gist.c b/contrib/intarray/_intbig_gist.c
index 18ecd8cda6..56a77d8053 100644
--- a/contrib/intarray/_intbig_gist.c
+++ b/contrib/intarray/_intbig_gist.c
@@ -527,12 +527,10 @@ g_intbig_consistent(PG_FUNCTION_ARGS)
query, siglen);
break;
case RTContainsStrategyNumber:
- case RTOldContainsStrategyNumber:
retval = _intbig_contains((GISTTYPE *) DatumGetPointer(entry->key),
query, siglen);
break;
case RTContainedByStrategyNumber:
- case RTOldContainedByStrategyNumber:
/*
* This code is unreachable as of intarray 1.4, because the <@
diff --git a/contrib/intarray/intarray--1.2.sql b/contrib/intarray/intarray--1.2.sql
index f10b53db1c..4d2c86b818 100644
--- a/contrib/intarray/intarray--1.2.sql
+++ b/contrib/intarray/intarray--1.2.sql
@@ -402,8 +402,6 @@ DEFAULT FOR TYPE _int4 USING gist AS
OPERATOR 6 = (anyarray, anyarray),
OPERATOR 7 @>,
OPERATOR 8 <@,
- OPERATOR 13 @,
- OPERATOR 14 ~,
OPERATOR 20 @@ (_int4, query_int),
FUNCTION 1 g_int_consistent (internal, _int4, smallint, oid, internal),
FUNCTION 2 g_int_union (internal, internal),
@@ -479,8 +477,6 @@ AS
OPERATOR 6 = (anyarray, anyarray),
OPERATOR 7 @>,
OPERATOR 8 <@,
- OPERATOR 13 @,
- OPERATOR 14 ~,
OPERATOR 20 @@ (_int4, query_int),
FUNCTION 1 g_intbig_consistent (internal, _int4, smallint, oid, internal),
FUNCTION 2 g_intbig_union (internal, internal),
@@ -510,8 +506,6 @@ AS
OPERATOR 6 = (anyarray, anyarray),
OPERATOR 7 @>,
OPERATOR 8 <@,
- OPERATOR 13 @,
- OPERATOR 14 ~,
OPERATOR 20 @@ (_int4, query_int),
FUNCTION 1 btint4cmp (int4, int4),
FUNCTION 2 ginarrayextract (anyarray, internal, internal),
diff --git a/contrib/intarray/intarray--1.3--1.4.sql b/contrib/intarray/intarray--1.3--1.4.sql
index 3fbebb5417..7669529e8a 100644
--- a/contrib/intarray/intarray--1.3--1.4.sql
+++ b/contrib/intarray/intarray--1.3--1.4.sql
@@ -12,10 +12,3 @@ DROP OPERATOR 8 (_int4, _int4);
ALTER OPERATOR FAMILY gist__intbig_ops USING gist
DROP OPERATOR 8 (_int4, _int4);
--- Likewise for the old spelling ~.
-
-ALTER OPERATOR FAMILY gist__int_ops USING gist
-DROP OPERATOR 14 (_int4, _int4);
-
-ALTER OPERATOR FAMILY gist__intbig_ops USING gist
-DROP OPERATOR 14 (_int4, _int4);
diff --git a/contrib/seg/seg.c b/contrib/seg/seg.c
index 4a8e2be329..91c7231779 100644
--- a/contrib/seg/seg.c
+++ b/contrib/seg/seg.c
@@ -457,11 +457,9 @@ gseg_leaf_consistent(Datum key, Datum query, StrategyNumber strategy)
retval = DirectFunctionCall2(seg_same, key, query);
break;
case RTContainsStrategyNumber:
- case RTOldContainsStrategyNumber:
retval = DirectFunctionCall2(seg_contains, key, query);
break;
case RTContainedByStrategyNumber:
- case RTOldContainedByStrategyNumber:
retval = DirectFunctionCall2(seg_contained, key, query);
break;
default:
@@ -504,12 +502,10 @@ gseg_internal_consistent(Datum key, Datum query, StrategyNumber strategy)
break;
case RTSameStrategyNumber:
case RTContainsStrategyNumber:
- case RTOldContainsStrategyNumber:
retval =
DatumGetBool(DirectFunctionCall2(seg_contains, key, query));
break;
case RTContainedByStrategyNumber:
- case RTOldContainedByStrategyNumber:
retval =
DatumGetBool(DirectFunctionCall2(seg_overlap, key, query));
break;
diff --git a/doc/src/sgml/cube.sgml b/doc/src/sgml/cube.sgml
index 3b39147d14..1053f45437 100644
--- a/doc/src/sgml/cube.sgml
+++ b/doc/src/sgml/cube.sgml
@@ -222,14 +222,6 @@
</tgroup>
</table>
- <para>
- (Before PostgreSQL 8.2, the containment operators <literal>@></literal> and <literal><@</literal> were
- respectively called <literal>@</literal> and <literal>~</literal>. These names are still available, but are
- deprecated and will eventually be retired. Notice that the old names
- are reversed from the convention formerly followed by the core geometric
- data types!)
- </para>
-
<para>
In addition to the above operators, the usual comparison
operators shown in <xref linkend="functions-comparison-op-table"/> are
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 54d7e51083..4cff809bdc 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -10886,15 +10886,6 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple
</para>
</caution>
- <note>
- <para>
- Before <productname>PostgreSQL</productname> 8.2, the containment
- operators <literal>@></literal> and <literal><@</literal> were respectively
- called <literal>~</literal> and <literal>@</literal>. These names are still
- available, but are deprecated and will eventually be removed.
- </para>
- </note>
-
<table id="functions-geometry-func-table">
<title>Geometric Functions</title>
<tgroup cols="1">
diff --git a/doc/src/sgml/hstore.sgml b/doc/src/sgml/hstore.sgml
index 14a36ade00..5fa012a6b5 100644
--- a/doc/src/sgml/hstore.sgml
+++ b/doc/src/sgml/hstore.sgml
@@ -318,16 +318,6 @@ key => NULL
</tgroup>
</table>
- <note>
- <para>
- Prior to PostgreSQL 8.2, the containment operators <literal>@></literal>
- and <literal><@</literal> were called <literal>@</literal> and <literal>~</literal>,
- respectively. These names are still available, but are deprecated and will
- eventually be removed. Notice that the old names are reversed from the
- convention formerly followed by the core geometric data types!
- </para>
- </note>
-
<table id="hstore-func-table">
<title><type>hstore</type> Functions</title>
<tgroup cols="1">
diff --git a/doc/src/sgml/intarray.sgml b/doc/src/sgml/intarray.sgml
index af44c7b214..dfe98279c0 100644
--- a/doc/src/sgml/intarray.sgml
+++ b/doc/src/sgml/intarray.sgml
@@ -364,14 +364,6 @@
</tgroup>
</table>
- <para>
- (Before PostgreSQL 8.2, the containment operators <literal>@></literal> and
- <literal><@</literal> were respectively called <literal>@</literal> and <literal>~</literal>.
- These names are still available, but are deprecated and will eventually be
- retired. Notice that the old names are reversed from the convention
- formerly followed by the core geometric data types!)
- </para>
-
<para>
The operators <literal>&&</literal>, <literal>@></literal> and
<literal><@</literal> are equivalent to <productname>PostgreSQL</productname>'s built-in
diff --git a/doc/src/sgml/seg.sgml b/doc/src/sgml/seg.sgml
index e0dfbc76cf..9be69e3609 100644
--- a/doc/src/sgml/seg.sgml
+++ b/doc/src/sgml/seg.sgml
@@ -352,14 +352,6 @@ test=> select '6.25 .. 6.50'::seg as "pH";
</tgroup>
</table>
- <para>
- (Before PostgreSQL 8.2, the containment operators <literal>@></literal> and <literal><@</literal> were
- respectively called <literal>@</literal> and <literal>~</literal>. These names are still available, but are
- deprecated and will eventually be retired. Notice that the old names
- are reversed from the convention formerly followed by the core geometric
- data types!)
- </para>
-
<para>
In addition to the above operators, the usual comparison
operators shown in <xref linkend="functions-comparison-op-table"/> are
diff --git a/src/backend/access/brin/brin_inclusion.c b/src/backend/access/brin/brin_inclusion.c
index 7e380d66ed..986f76bd9b 100644
--- a/src/backend/access/brin/brin_inclusion.c
+++ b/src/backend/access/brin/brin_inclusion.c
@@ -378,7 +378,6 @@ brin_inclusion_consistent(PG_FUNCTION_ARGS)
case RTOverlapStrategyNumber:
case RTContainsStrategyNumber:
- case RTOldContainsStrategyNumber:
case RTContainsElemStrategyNumber:
case RTSubStrategyNumber:
case RTSubEqualStrategyNumber:
@@ -399,7 +398,6 @@ brin_inclusion_consistent(PG_FUNCTION_ARGS)
*/
case RTContainedByStrategyNumber:
- case RTOldContainedByStrategyNumber:
case RTSuperStrategyNumber:
case RTSuperEqualStrategyNumber:
finfo = inclusion_get_strategy_procinfo(bdesc, attno, subtype,
diff --git a/src/backend/access/gist/gistproc.c b/src/backend/access/gist/gistproc.c
index 27d9c0f77c..b03c4b55a0 100644
--- a/src/backend/access/gist/gistproc.c
+++ b/src/backend/access/gist/gistproc.c
@@ -907,13 +907,11 @@ gist_box_leaf_consistent(BOX *key, BOX *query, StrategyNumber strategy)
PointerGetDatum(query)));
break;
case RTContainsStrategyNumber:
- case RTOldContainsStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_contain,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTContainedByStrategyNumber:
- case RTOldContainedByStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_contained,
PointerGetDatum(key),
PointerGetDatum(query)));
@@ -990,13 +988,11 @@ rtree_internal_consistent(BOX *key, BOX *query, StrategyNumber strategy)
break;
case RTSameStrategyNumber:
case RTContainsStrategyNumber:
- case RTOldContainsStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_contain,
PointerGetDatum(key),
PointerGetDatum(query)));
break;
case RTContainedByStrategyNumber:
- case RTOldContainedByStrategyNumber:
retval = DatumGetBool(DirectFunctionCall2(box_overlap,
PointerGetDatum(key),
PointerGetDatum(query)));
diff --git a/src/include/access/stratnum.h b/src/include/access/stratnum.h
index d280f7e4fc..1929942bea 100644
--- a/src/include/access/stratnum.h
+++ b/src/include/access/stratnum.h
@@ -60,8 +60,6 @@ typedef uint16 StrategyNumber;
#define RTBelowStrategyNumber 10 /* for <<| */
#define RTAboveStrategyNumber 11 /* for |>> */
#define RTOverAboveStrategyNumber 12 /* for |&> */
-#define RTOldContainsStrategyNumber 13 /* for old spelling of @> */
-#define RTOldContainedByStrategyNumber 14 /* for old spelling of <@ */
#define RTKNNSearchStrategyNumber 15 /* for <-> (distance) */
#define RTContainsElemStrategyNumber 16 /* for range types @> elem */
#define RTAdjacentStrategyNumber 17 /* for -|- */
diff --git a/src/include/catalog/pg_amop.dat b/src/include/catalog/pg_amop.dat
index 1dfb6fd373..ad02cfda76 100644
--- a/src/include/catalog/pg_amop.dat
+++ b/src/include/catalog/pg_amop.dat
@@ -1100,10 +1100,6 @@
amopstrategy => '11', amopopr => '|>>(box,box)', amopmethod => 'gist' },
{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
amopstrategy => '12', amopopr => '|&>(box,box)', amopmethod => 'gist' },
-{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
- amopstrategy => '13', amopopr => '~(box,box)', amopmethod => 'gist' },
-{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
- amopstrategy => '14', amopopr => '@(box,box)', amopmethod => 'gist' },
{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'point',
amopstrategy => '15', amoppurpose => 'o', amopopr => '<->(box,point)',
amopmethod => 'gist', amopsortfamily => 'btree/float_ops' },
@@ -1175,12 +1171,6 @@
{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
amoprighttype => 'polygon', amopstrategy => '12',
amopopr => '|&>(polygon,polygon)', amopmethod => 'gist' },
-{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
- amoprighttype => 'polygon', amopstrategy => '13',
- amopopr => '~(polygon,polygon)', amopmethod => 'gist' },
-{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
- amoprighttype => 'polygon', amopstrategy => '14',
- amopopr => '@(polygon,polygon)', amopmethod => 'gist' },
{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
amoprighttype => 'point', amopstrategy => '15', amoppurpose => 'o',
amopopr => '<->(polygon,point)', amopmethod => 'gist',
@@ -1223,12 +1213,6 @@
{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
amoprighttype => 'circle', amopstrategy => '12',
amopopr => '|&>(circle,circle)', amopmethod => 'gist' },
-{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
- amoprighttype => 'circle', amopstrategy => '13',
- amopopr => '~(circle,circle)', amopmethod => 'gist' },
-{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
- amoprighttype => 'circle', amopstrategy => '14',
- amopopr => '@(circle,circle)', amopmethod => 'gist' },
{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
amoprighttype => 'point', amopstrategy => '15', amoppurpose => 'o',
amopopr => '<->(circle,point)', amopmethod => 'gist',
diff --git a/src/include/catalog/pg_operator.dat b/src/include/catalog/pg_operator.dat
index 7cc812adda..feb8edece5 100644
--- a/src/include/catalog/pg_operator.dat
+++ b/src/include/catalog/pg_operator.dat
@@ -2777,71 +2777,6 @@
oprname => '||', oprleft => 'anynonarray', oprright => 'text',
oprresult => 'text', oprcode => 'anytextcat' },
-# obsolete names for contains/contained-by operators; remove these someday
-{ oid => '2860', descr => 'deprecated, use <@ instead',
- oprname => '@', oprleft => 'polygon', oprright => 'polygon',
- oprresult => 'bool', oprcom => '~(polygon,polygon)',
- oprcode => 'poly_contained', oprrest => 'contsel', oprjoin => 'contjoinsel' },
-{ oid => '2861', descr => 'deprecated, use @> instead',
- oprname => '~', oprleft => 'polygon', oprright => 'polygon',
- oprresult => 'bool', oprcom => '@(polygon,polygon)',
- oprcode => 'poly_contain', oprrest => 'contsel', oprjoin => 'contjoinsel' },
-{ oid => '2862', descr => 'deprecated, use <@ instead',
- oprname => '@', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcom => '~(box,box)', oprcode => 'box_contained', oprrest => 'contsel',
- oprjoin => 'contjoinsel' },
-{ oid => '2863', descr => 'deprecated, use @> instead',
- oprname => '~', oprleft => 'box', oprright => 'box', oprresult => 'bool',
- oprcom => '@(box,box)', oprcode => 'box_contain', oprrest => 'contsel',
- oprjoin => 'contjoinsel' },
-{ oid => '2864', descr => 'deprecated, use <@ instead',
- oprname => '@', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcom => '~(circle,circle)',
- oprcode => 'circle_contained', oprrest => 'contsel',
- oprjoin => 'contjoinsel' },
-{ oid => '2865', descr => 'deprecated, use @> instead',
- oprname => '~', oprleft => 'circle', oprright => 'circle',
- oprresult => 'bool', oprcom => '@(circle,circle)',
- oprcode => 'circle_contain', oprrest => 'contsel', oprjoin => 'contjoinsel' },
-{ oid => '2866', descr => 'deprecated, use <@ instead',
- oprname => '@', oprleft => 'point', oprright => 'box', oprresult => 'bool',
- oprcode => 'on_pb' },
-{ oid => '2867', descr => 'deprecated, use <@ instead',
- oprname => '@', oprleft => 'point', oprright => 'path', oprresult => 'bool',
- oprcom => '~(path,point)', oprcode => 'on_ppath' },
-{ oid => '2868', descr => 'deprecated, use @> instead',
- oprname => '~', oprleft => 'path', oprright => 'point', oprresult => 'bool',
- oprcom => '@(point,path)', oprcode => 'path_contain_pt' },
-{ oid => '2869', descr => 'deprecated, use <@ instead',
- oprname => '@', oprleft => 'point', oprright => 'polygon',
- oprresult => 'bool', oprcom => '~(polygon,point)',
- oprcode => 'pt_contained_poly' },
-{ oid => '2870', descr => 'deprecated, use @> instead',
- oprname => '~', oprleft => 'polygon', oprright => 'point',
- oprresult => 'bool', oprcom => '@(point,polygon)',
- oprcode => 'poly_contain_pt' },
-{ oid => '2871', descr => 'deprecated, use <@ instead',
- oprname => '@', oprleft => 'point', oprright => 'circle', oprresult => 'bool',
- oprcom => '~(circle,point)', oprcode => 'pt_contained_circle' },
-{ oid => '2872', descr => 'deprecated, use @> instead',
- oprname => '~', oprleft => 'circle', oprright => 'point', oprresult => 'bool',
- oprcom => '@(point,circle)', oprcode => 'circle_contain_pt' },
-{ oid => '2873', descr => 'deprecated, use <@ instead',
- oprname => '@', oprleft => 'point', oprright => 'line', oprresult => 'bool',
- oprcode => 'on_pl' },
-{ oid => '2874', descr => 'deprecated, use <@ instead',
- oprname => '@', oprleft => 'point', oprright => 'lseg', oprresult => 'bool',
- oprcode => 'on_ps' },
-{ oid => '2875', descr => 'deprecated, use <@ instead',
- oprname => '@', oprleft => 'lseg', oprright => 'line', oprresult => 'bool',
- oprcode => 'on_sl' },
-{ oid => '2876', descr => 'deprecated, use <@ instead',
- oprname => '@', oprleft => 'lseg', oprright => 'box', oprresult => 'bool',
- oprcode => 'on_sb' },
-{ oid => '2877', descr => 'deprecated, use @> instead',
- oprname => '~', oprleft => '_aclitem', oprright => 'aclitem',
- oprresult => 'bool', oprcode => 'aclcontains' },
-
# uuid operators
{ oid => '2972', descr => 'equal',
oprname => '=', oprcanmerge => 't', oprcanhash => 't', oprleft => 'uuid',
diff --git a/src/test/regress/expected/create_am.out b/src/test/regress/expected/create_am.out
index b9dc82dd3c..0dfb26c301 100644
--- a/src/test/regress/expected/create_am.out
+++ b/src/test/regress/expected/create_am.out
@@ -27,8 +27,6 @@ CREATE OPERATOR CLASS box_ops DEFAULT
OPERATOR 10 <<|,
OPERATOR 11 |>>,
OPERATOR 12 |&>,
- OPERATOR 13 ~,
- OPERATOR 14 @,
FUNCTION 1 gist_box_consistent(internal, box, smallint, oid, internal),
FUNCTION 2 gist_box_union(internal, internal),
-- don't need compress, decompress, or fetch functions
@@ -46,18 +44,18 @@ SET enable_indexscan = ON;
SET enable_bitmapscan = OFF;
EXPLAIN (COSTS OFF)
SELECT * FROM fast_emp4000
- WHERE home_base @ '(200,200),(2000,1000)'::box
+ WHERE home_base <@ '(200,200),(2000,1000)'::box
ORDER BY (home_base[0])[0];
- QUERY PLAN
-----------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------
Sort
Sort Key: ((home_base[0])[0])
-> Index Only Scan using grect2ind2 on fast_emp4000
- Index Cond: (home_base @ '(2000,1000),(200,200)'::box)
+ Index Cond: (home_base <@ '(2000,1000),(200,200)'::box)
(4 rows)
SELECT * FROM fast_emp4000
- WHERE home_base @ '(200,200),(2000,1000)'::box
+ WHERE home_base <@ '(200,200),(2000,1000)'::box
ORDER BY (home_base[0])[0];
home_base
-----------------------
diff --git a/src/test/regress/expected/create_index.out b/src/test/regress/expected/create_index.out
index 6ace7662ee..3686006212 100644
--- a/src/test/regress/expected/create_index.out
+++ b/src/test/regress/expected/create_index.out
@@ -75,7 +75,7 @@ SET enable_seqscan = ON;
SET enable_indexscan = OFF;
SET enable_bitmapscan = OFF;
SELECT * FROM fast_emp4000
- WHERE home_base @ '(200,200),(2000,1000)'::box
+ WHERE home_base <@ '(200,200),(2000,1000)'::box
ORDER BY (home_base[0])[0];
home_base
-----------------------
@@ -95,7 +95,7 @@ SELECT count(*) FROM fast_emp4000 WHERE home_base IS NULL;
278
(1 row)
-SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon
+SELECT * FROM polygon_tbl WHERE f1 @> '((1,1),(2,2),(2,1))'::polygon
ORDER BY (poly_center(f1))[0];
f1
---------------------
@@ -259,18 +259,18 @@ SET enable_indexscan = ON;
SET enable_bitmapscan = OFF;
EXPLAIN (COSTS OFF)
SELECT * FROM fast_emp4000
- WHERE home_base @ '(200,200),(2000,1000)'::box
+ WHERE home_base <@ '(200,200),(2000,1000)'::box
ORDER BY (home_base[0])[0];
- QUERY PLAN
-----------------------------------------------------------------
+ QUERY PLAN
+-----------------------------------------------------------------
Sort
Sort Key: ((home_base[0])[0])
-> Index Only Scan using grect2ind on fast_emp4000
- Index Cond: (home_base @ '(2000,1000),(200,200)'::box)
+ Index Cond: (home_base <@ '(2000,1000),(200,200)'::box)
(4 rows)
SELECT * FROM fast_emp4000
- WHERE home_base @ '(200,200),(2000,1000)'::box
+ WHERE home_base <@ '(200,200),(2000,1000)'::box
ORDER BY (home_base[0])[0];
home_base
-----------------------
@@ -309,17 +309,17 @@ SELECT count(*) FROM fast_emp4000 WHERE home_base IS NULL;
(1 row)
EXPLAIN (COSTS OFF)
-SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon
+SELECT * FROM polygon_tbl WHERE f1 @> '((1,1),(2,2),(2,1))'::polygon
ORDER BY (poly_center(f1))[0];
- QUERY PLAN
------------------------------------------------------------
+ QUERY PLAN
+------------------------------------------------------------
Sort
Sort Key: ((poly_center(f1))[0])
-> Index Scan using gpolygonind on polygon_tbl
- Index Cond: (f1 ~ '((1,1),(2,2),(2,1))'::polygon)
+ Index Cond: (f1 @> '((1,1),(2,2),(2,1))'::polygon)
(4 rows)
-SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon
+SELECT * FROM polygon_tbl WHERE f1 @> '((1,1),(2,2),(2,1))'::polygon
ORDER BY (poly_center(f1))[0];
f1
---------------------
diff --git a/src/test/regress/expected/opr_sanity.out b/src/test/regress/expected/opr_sanity.out
index 7825a765cd..7ed29b4961 100644
--- a/src/test/regress/expected/opr_sanity.out
+++ b/src/test/regress/expected/opr_sanity.out
@@ -1163,14 +1163,13 @@ ORDER BY 1, 2;
?-| | ?-|
?| | ?|
?|| | ?||
- @ | ~
@@ | @@
@@@ | @@@
| | |
~<=~ | ~>=~
~<~ | ~>~
~= | ~=
-(30 rows)
+(29 rows)
-- Likewise for negator pairs.
SELECT DISTINCT o1.oprname AS op1, o2.oprname AS op2
@@ -1990,8 +1989,6 @@ ORDER BY 1, 2, 3;
783 | 11 | >^
783 | 11 | |>>
783 | 12 | |&>
- 783 | 13 | ~
- 783 | 14 | @
783 | 15 | <->
783 | 16 | @>
783 | 18 | =
@@ -2084,7 +2081,7 @@ ORDER BY 1, 2, 3;
4000 | 26 | >>
4000 | 27 | >>=
4000 | 28 | ^@
-(125 rows)
+(123 rows)
-- Check that all opclass search operators have selectivity estimators.
-- This is not absolutely required, but it seems a reasonable thing
diff --git a/src/test/regress/sql/create_am.sql b/src/test/regress/sql/create_am.sql
index 97df244d17..9a359466ce 100644
--- a/src/test/regress/sql/create_am.sql
+++ b/src/test/regress/sql/create_am.sql
@@ -28,8 +28,6 @@ CREATE OPERATOR CLASS box_ops DEFAULT
OPERATOR 10 <<|,
OPERATOR 11 |>>,
OPERATOR 12 |&>,
- OPERATOR 13 ~,
- OPERATOR 14 @,
FUNCTION 1 gist_box_consistent(internal, box, smallint, oid, internal),
FUNCTION 2 gist_box_union(internal, internal),
-- don't need compress, decompress, or fetch functions
@@ -50,10 +48,10 @@ SET enable_bitmapscan = OFF;
EXPLAIN (COSTS OFF)
SELECT * FROM fast_emp4000
- WHERE home_base @ '(200,200),(2000,1000)'::box
+ WHERE home_base <@ '(200,200),(2000,1000)'::box
ORDER BY (home_base[0])[0];
SELECT * FROM fast_emp4000
- WHERE home_base @ '(200,200),(2000,1000)'::box
+ WHERE home_base <@ '(200,200),(2000,1000)'::box
ORDER BY (home_base[0])[0];
EXPLAIN (COSTS OFF)
diff --git a/src/test/regress/sql/create_index.sql b/src/test/regress/sql/create_index.sql
index 37f7259da9..1bb8347ee6 100644
--- a/src/test/regress/sql/create_index.sql
+++ b/src/test/regress/sql/create_index.sql
@@ -107,14 +107,14 @@ SET enable_indexscan = OFF;
SET enable_bitmapscan = OFF;
SELECT * FROM fast_emp4000
- WHERE home_base @ '(200,200),(2000,1000)'::box
+ WHERE home_base <@ '(200,200),(2000,1000)'::box
ORDER BY (home_base[0])[0];
SELECT count(*) FROM fast_emp4000 WHERE home_base && '(1000,1000,0,0)'::box;
SELECT count(*) FROM fast_emp4000 WHERE home_base IS NULL;
-SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon
+SELECT * FROM polygon_tbl WHERE f1 @> '((1,1),(2,2),(2,1))'::polygon
ORDER BY (poly_center(f1))[0];
SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1)
@@ -161,10 +161,10 @@ SET enable_bitmapscan = OFF;
EXPLAIN (COSTS OFF)
SELECT * FROM fast_emp4000
- WHERE home_base @ '(200,200),(2000,1000)'::box
+ WHERE home_base <@ '(200,200),(2000,1000)'::box
ORDER BY (home_base[0])[0];
SELECT * FROM fast_emp4000
- WHERE home_base @ '(200,200),(2000,1000)'::box
+ WHERE home_base <@ '(200,200),(2000,1000)'::box
ORDER BY (home_base[0])[0];
EXPLAIN (COSTS OFF)
@@ -176,9 +176,9 @@ SELECT count(*) FROM fast_emp4000 WHERE home_base IS NULL;
SELECT count(*) FROM fast_emp4000 WHERE home_base IS NULL;
EXPLAIN (COSTS OFF)
-SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon
+SELECT * FROM polygon_tbl WHERE f1 @> '((1,1),(2,2),(2,1))'::polygon
ORDER BY (poly_center(f1))[0];
-SELECT * FROM polygon_tbl WHERE f1 ~ '((1,1),(2,2),(2,1))'::polygon
+SELECT * FROM polygon_tbl WHERE f1 @> '((1,1),(2,2),(2,1))'::polygon
ORDER BY (poly_center(f1))[0];
EXPLAIN (COSTS OFF)
--
2.17.0
On 2020-10-27 04:25, Justin Pryzby wrote:
Forking this thread:
/messages/by-id/fd93f1c5-7818-a02c-01e5-1075ac0d4def@iki.fiThey have been deprecated for a Long Time, so finally remove them for v14.
Four fewer exclamation marks makes the documentation less exciting, which is a
good thing.
I don't know the reason or context why they were deprecated, but I agree
that the timeline for removing them now is good.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
On Tue, Oct 27, 2020 at 9:38 AM Peter Eisentraut <
peter.eisentraut@2ndquadrant.com> wrote:
On 2020-10-27 04:25, Justin Pryzby wrote:
Forking this thread:
/messages/by-id/fd93f1c5-7818-a02c-01e5-1075ac0d4def@iki.fi
They have been deprecated for a Long Time, so finally remove them for
v14.
Four fewer exclamation marks makes the documentation less exciting,
which is a
good thing.
I don't know the reason or context why they were deprecated, but I agree
that the timeline for removing them now is good.
IIRC it was to align things so that "containment" had the same operator for
all different kinds of datatypes?
But whether that memory is right nor not it was indeed a long time ago,
so +1 that it's definitely time to get rid of them.
--
Magnus Hagander
Me: https://www.hagander.net/ <http://www.hagander.net/>
Work: https://www.redpill-linpro.com/ <http://www.redpill-linpro.com/>
On 2020-10-27 04:25, Justin Pryzby wrote:
Forking this thread:
/messages/by-id/fd93f1c5-7818-a02c-01e5-1075ac0d4def@iki.fiThey have been deprecated for a Long Time, so finally remove them for v14.
Four fewer exclamation marks makes the documentation less exciting, which is a
good thing.
I have committed the parts that remove the built-in geometry operators
and the related regression test changes.
The changes to the contrib modules appear to be incomplete in some ways.
In cube, hstore, and seg, there are no changes to the extension
scripts to remove the operators. All you're doing is changing the C
code to no longer recognize the strategy, but that doesn't explain what
will happen if the operator is still used. In intarray, by contrast,
you're editing an existing extension script, but that should be done by
an upgrade script instead.
Peter Eisentraut <peter.eisentraut@enterprisedb.com> writes:
On 2020-10-27 04:25, Justin Pryzby wrote:
They have been deprecated for a Long Time, so finally remove them for v14.
Four fewer exclamation marks makes the documentation less exciting, which is a
good thing.
I have committed the parts that remove the built-in geometry operators
and the related regression test changes.
I'm on board with pulling these now --- 8.2 to v14 is plenty of
deprecation notice. However, the patch seems incomplete in that
the code support for these is still there -- look for
RTOldContainedByStrategyNumber and RTOldContainsStrategyNumber.
Admittedly, there's not much to be removed except some case labels,
but it still seems like we oughta do that to avoid future confusion.
The changes to the contrib modules appear to be incomplete in some ways.
In cube, hstore, and seg, there are no changes to the extension
scripts to remove the operators. All you're doing is changing the C
code to no longer recognize the strategy, but that doesn't explain what
will happen if the operator is still used. In intarray, by contrast,
you're editing an existing extension script, but that should be done by
an upgrade script instead.
In the contrib modules, I'm afraid what you gotta do is remove the
SQL operator definitions but leave the opclass code support in place.
That's because there's no guarantee that users will update the extension's
SQL version immediately, so a v14 build of the .so might still be used
with the old SQL definitions. It's not clear how much window we need
give for people to do that update, but I don't think "zero" is an
acceptable answer.
(The core code doesn't have to concern itself with such scenarios,
since we require the initial catalog contents to match the backend
major version. Hence it is okay to remove the code support now in
the in-core opclasses.)
regards, tom lane
On 2020-11-12 23:28, Tom Lane wrote:
I'm on board with pulling these now --- 8.2 to v14 is plenty of
deprecation notice. However, the patch seems incomplete in that
the code support for these is still there -- look for
RTOldContainedByStrategyNumber and RTOldContainsStrategyNumber.
Admittedly, there's not much to be removed except some case labels,
but it still seems like we oughta do that to avoid future confusion.
Yeah, the stuff in gistproc.c should be removed now. But I wonder what
the mentions in brin_inclusion.c are and whether or how they should be
removed.
On Thu, Nov 12, 2020 at 11:28 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
The changes to the contrib modules appear to be incomplete in some ways.
In cube, hstore, and seg, there are no changes to the extension
scripts to remove the operators. All you're doing is changing the C
code to no longer recognize the strategy, but that doesn't explain what
will happen if the operator is still used. In intarray, by contrast,
you're editing an existing extension script, but that should be done by
an upgrade script instead.In the contrib modules, I'm afraid what you gotta do is remove the
SQL operator definitions but leave the opclass code support in place.
That's because there's no guarantee that users will update the extension's
SQL version immediately, so a v14 build of the .so might still be used
with the old SQL definitions. It's not clear how much window we need
give for people to do that update, but I don't think "zero" is an
acceptable answer.
Based on my experience from the field, the answer is "never".
As in, most people have no idea they are even *supposed* to do such an
upgrade, so they don't do it. Until we solve that problem, I think
we're basically stuck with keeping them "forever". (and even if/when
we do, "zero" is probably not going to cut it, no)
--
Magnus Hagander
Me: https://www.hagander.net/
Work: https://www.redpill-linpro.com/
Greetings,
* Magnus Hagander (magnus@hagander.net) wrote:
On Thu, Nov 12, 2020 at 11:28 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
The changes to the contrib modules appear to be incomplete in some ways.
In cube, hstore, and seg, there are no changes to the extension
scripts to remove the operators. All you're doing is changing the C
code to no longer recognize the strategy, but that doesn't explain what
will happen if the operator is still used. In intarray, by contrast,
you're editing an existing extension script, but that should be done by
an upgrade script instead.In the contrib modules, I'm afraid what you gotta do is remove the
SQL operator definitions but leave the opclass code support in place.
That's because there's no guarantee that users will update the extension's
SQL version immediately, so a v14 build of the .so might still be used
with the old SQL definitions. It's not clear how much window we need
give for people to do that update, but I don't think "zero" is an
acceptable answer.Based on my experience from the field, the answer is "never".
As in, most people have no idea they are even *supposed* to do such an
upgrade, so they don't do it. Until we solve that problem, I think
we're basically stuck with keeping them "forever". (and even if/when
we do, "zero" is probably not going to cut it, no)
Yeah, this is a serious problem and one that we should figure out a way
to fix or at least improve on- maybe by having pg_upgrade say something
about extensions that could/should be upgraded..?
Thanks,
Stephen
Peter Eisentraut <peter.eisentraut@enterprisedb.com> writes:
On 2020-11-12 23:28, Tom Lane wrote:
I'm on board with pulling these now --- 8.2 to v14 is plenty of
deprecation notice. However, the patch seems incomplete in that
the code support for these is still there -- look for
RTOldContainedByStrategyNumber and RTOldContainsStrategyNumber.
Admittedly, there's not much to be removed except some case labels,
but it still seems like we oughta do that to avoid future confusion.
Yeah, the stuff in gistproc.c should be removed now. But I wonder what
the mentions in brin_inclusion.c are and whether or how they should be
removed.
I think those probably got cargo-culted in there at some point.
They're visibly dead code, because there are no pg_amop entries
for BRIN opclasses with amopstrategy 13 or 14.
This comment that you removed in 2f70fdb06 is suspicious:
# we could, but choose not to, supply entries for strategies 13 and 14
I'm guessing that somebody was vacillating about whether it'd be
a feature to support these old operator names in BRIN, and
eventually didn't, but forgot to remove the code support.
regards, tom lane
On 2020-11-13 16:57, Tom Lane wrote:
Peter Eisentraut <peter.eisentraut@enterprisedb.com> writes:
On 2020-11-12 23:28, Tom Lane wrote:
I'm on board with pulling these now --- 8.2 to v14 is plenty of
deprecation notice. However, the patch seems incomplete in that
the code support for these is still there -- look for
RTOldContainedByStrategyNumber and RTOldContainsStrategyNumber.
Admittedly, there's not much to be removed except some case labels,
but it still seems like we oughta do that to avoid future confusion.Yeah, the stuff in gistproc.c should be removed now. But I wonder what
the mentions in brin_inclusion.c are and whether or how they should be
removed.I think those probably got cargo-culted in there at some point.
They're visibly dead code, because there are no pg_amop entries
for BRIN opclasses with amopstrategy 13 or 14.
I have committed fixes that remove the unused strategy numbers from both
of these code areas.
On Fri, Nov 13, 2020 at 10:03:43AM -0500, Stephen Frost wrote:
* Magnus Hagander (magnus@hagander.net) wrote:
On Thu, Nov 12, 2020 at 11:28 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
The changes to the contrib modules appear to be incomplete in some ways.
In cube, hstore, and seg, there are no changes to the extension
scripts to remove the operators. All you're doing is changing the C
code to no longer recognize the strategy, but that doesn't explain what
will happen if the operator is still used. In intarray, by contrast,
you're editing an existing extension script, but that should be done by
an upgrade script instead.In the contrib modules, I'm afraid what you gotta do is remove the
SQL operator definitions but leave the opclass code support in place.
That's because there's no guarantee that users will update the extension's
SQL version immediately, so a v14 build of the .so might still be used
with the old SQL definitions. It's not clear how much window we need
give for people to do that update, but I don't think "zero" is an
acceptable answer.Based on my experience from the field, the answer is "never".
As in, most people have no idea they are even *supposed* to do such an
upgrade, so they don't do it. Until we solve that problem, I think
we're basically stuck with keeping them "forever". (and even if/when
we do, "zero" is probably not going to cut it, no)Yeah, this is a serious problem and one that we should figure out a way
to fix or at least improve on- maybe by having pg_upgrade say something
about extensions that could/should be upgraded..?
I think what's needed are:
1) a way to *warn* users about deprecation. CREATE EXTENSION might give an
elog(WARNING), but it's probably not enough. It only happens once, and if it's
in pg_restore/pg_upgrade, it be wrapped by vendor upgrade scripts. It needs to
be more like first function call in every session. Or more likely, put it in
documentation for 10 years.
2) a way to *enforce* it, like making CREATE EXTENSION fail when run against an
excessively old server, including by pg_restore/pg_upgrade (which ought to also
handle it in --check).
Are there any contrib for which (1) is done and we're anywhere near doing (2) ?
--
Justin
On 16.11.2020 23:55, Justin Pryzby wrote:
On Fri, Nov 13, 2020 at 10:03:43AM -0500, Stephen Frost wrote:
* Magnus Hagander (magnus@hagander.net) wrote:
On Thu, Nov 12, 2020 at 11:28 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
The changes to the contrib modules appear to be incomplete in some ways.
In cube, hstore, and seg, there are no changes to the extension
scripts to remove the operators. All you're doing is changing the C
code to no longer recognize the strategy, but that doesn't explain what
will happen if the operator is still used. In intarray, by contrast,
you're editing an existing extension script, but that should be done by
an upgrade script instead.In the contrib modules, I'm afraid what you gotta do is remove the
SQL operator definitions but leave the opclass code support in place.
That's because there's no guarantee that users will update the extension's
SQL version immediately, so a v14 build of the .so might still be used
with the old SQL definitions. It's not clear how much window we need
give for people to do that update, but I don't think "zero" is an
acceptable answer.Based on my experience from the field, the answer is "never".
As in, most people have no idea they are even *supposed* to do such an
upgrade, so they don't do it. Until we solve that problem, I think
we're basically stuck with keeping them "forever". (and even if/when
we do, "zero" is probably not going to cut it, no)Yeah, this is a serious problem and one that we should figure out a way
to fix or at least improve on- maybe by having pg_upgrade say something
about extensions that could/should be upgraded..?I think what's needed are:
1) a way to *warn* users about deprecation. CREATE EXTENSION might give an
elog(WARNING), but it's probably not enough. It only happens once, and if it's
in pg_restore/pg_upgrade, it be wrapped by vendor upgrade scripts. It needs to
be more like first function call in every session. Or more likely, put it in
documentation for 10 years.2) a way to *enforce* it, like making CREATE EXTENSION fail when run against an
excessively old server, including by pg_restore/pg_upgrade (which ought to also
handle it in --check).Are there any contrib for which (1) is done and we're anywhere near doing (2) ?
Status update for a commitfest entry.
The commitfest is nearing the end and this thread is "Waiting on
Author". As far as I see we don't have a patch here and discussion is a
bit stuck.
So, I am planning to return it with feedback. Any objections?
--
Anastasia Lubennikova
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
Anastasia Lubennikova <a.lubennikova@postgrespro.ru> writes:
Status update for a commitfest entry.
The commitfest is nearing the end and this thread is "Waiting on
Author". As far as I see we don't have a patch here and discussion is a
bit stuck.
So, I am planning to return it with feedback. Any objections?
AFAICS, the status is
(1) core-code changes are committed;
(2) proposed edits to contrib modules need significant rework;
(3) there was also a bit of discussion about inventing a mechanism
to prod users to update out-of-date extensions.
Now, (3) is far outside the scope of this patch, and I do not
think it should block finishing (2). We need a new patch for (2),
but there's no real doubt as to what it should contain -- Justin
just needs to turn the crank.
You could either move this to the next CF in state WoA, or
close it RWF. But the patch did make progress in this CF,
so I'd tend to lean to the former.
regards, tom lane
On Mon, Nov 30, 2020 at 09:51:12PM +0300, Anastasia Lubennikova wrote:
On 16.11.2020 23:55, Justin Pryzby wrote:
On Fri, Nov 13, 2020 at 10:03:43AM -0500, Stephen Frost wrote:
* Magnus Hagander (magnus@hagander.net) wrote:
On Thu, Nov 12, 2020 at 11:28 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
The changes to the contrib modules appear to be incomplete in some ways.
In cube, hstore, and seg, there are no changes to the extension
scripts to remove the operators. All you're doing is changing the C
code to no longer recognize the strategy, but that doesn't explain what
will happen if the operator is still used. In intarray, by contrast,
you're editing an existing extension script, but that should be done by
an upgrade script instead.In the contrib modules, I'm afraid what you gotta do is remove the
SQL operator definitions but leave the opclass code support in place.
That's because there's no guarantee that users will update the extension's
SQL version immediately, so a v14 build of the .so might still be used
with the old SQL definitions. It's not clear how much window we need
give for people to do that update, but I don't think "zero" is an
acceptable answer.Based on my experience from the field, the answer is "never".
As in, most people have no idea they are even *supposed* to do such an
upgrade, so they don't do it. Until we solve that problem, I think
we're basically stuck with keeping them "forever". (and even if/when
we do, "zero" is probably not going to cut it, no)Yeah, this is a serious problem and one that we should figure out a way
to fix or at least improve on- maybe by having pg_upgrade say something
about extensions that could/should be upgraded..?I think what's needed are:
1) a way to *warn* users about deprecation. CREATE EXTENSION might give an
elog(WARNING), but it's probably not enough. It only happens once, and if it's
in pg_restore/pg_upgrade, it be wrapped by vendor upgrade scripts. It needs to
be more like first function call in every session. Or more likely, put it in
documentation for 10 years.2) a way to *enforce* it, like making CREATE EXTENSION fail when run against an
excessively old server, including by pg_restore/pg_upgrade (which ought to also
handle it in --check).Are there any contrib for which (1) is done and we're anywhere near doing (2) ?
Status update for a commitfest entry.
The commitfest is nearing the end and this thread is "Waiting on Author". As
I think this is waiting on me to provide a patch for the contrib/ modules with
update script removing the SQL operators, and documentating their deprecation.
Is that right ?
--
Justin
Justin Pryzby <pryzby@telsasoft.com> writes:
I think this is waiting on me to provide a patch for the contrib/ modules with
update script removing the SQL operators, and documentating their deprecation.
Right. We can remove the SQL operators, but not (yet) the C code support.
I'm not sure that the docs change would do more than remove any existing
mentions of the operators.
regards, tom lane
On Tue, Dec 1, 2020 at 4:09 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Justin Pryzby <pryzby@telsasoft.com> writes:
I think this is waiting on me to provide a patch for the contrib/ modules with
update script removing the SQL operators, and documentating their deprecation.Right. We can remove the SQL operators, but not (yet) the C code support.
I'm not sure that the docs change would do more than remove any existing
mentions of the operators.
Status update for a commitfest entry.
Almost 2 months passed since the last update. Are you planning to work
on this, Justin? If not, I'm planning to set it "Returned with
Feedback" barring objectinos.
Regards,
--
Masahiko Sawada
EDB: https://www.enterprisedb.com/
On Thu, Jan 28, 2021 at 9:50 PM Masahiko Sawada <sawada.mshk@gmail.com> wrote:
On Tue, Dec 1, 2020 at 4:09 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Justin Pryzby <pryzby@telsasoft.com> writes:
I think this is waiting on me to provide a patch for the contrib/ modules with
update script removing the SQL operators, and documentating their deprecation.Right. We can remove the SQL operators, but not (yet) the C code support.
I'm not sure that the docs change would do more than remove any existing
mentions of the operators.Status update for a commitfest entry.
Almost 2 months passed since the last update. Are you planning to work
on this, Justin? If not, I'm planning to set it "Returned with
Feedback" barring objectinos.
This patch has been awaiting updates for more than one month. As such,
we have moved it to "Returned with Feedback" and removed it from the
reviewing queue. Depending on timing, this may be reversable, so let
us know if there are extenuating circumstances. In any case, you are
welcome to address the feedback you have received, and resubmit the
patch to the next CommitFest.
Thank you for contributing to PostgreSQL.
Regards,
--
Masahiko Sawada
EDB: https://www.enterprisedb.com/
On Mon, Nov 30, 2020 at 02:09:10PM -0500, Tom Lane wrote:
Justin Pryzby <pryzby@telsasoft.com> writes:
I think this is waiting on me to provide a patch for the contrib/ modules with
update script removing the SQL operators, and documentating their deprecation.Right. We can remove the SQL operators, but not (yet) the C code support.
I'm not sure that the docs change would do more than remove any existing
mentions of the operators.
I've finally returned to this. RFC.
--
Justin
Attachments:
0001-remove-deprecated-v8.2-containment-operators.patchtext/x-diff; charset=us-asciiDownload
From 98a870449bdf3670e2e190d8bdfccd59dae42452 Mon Sep 17 00:00:00 2001
From: Justin Pryzby <pryzbyj@telsasoft.com>
Date: Sat, 11 Apr 2020 22:57:06 -0500
Subject: [PATCH] remove deprecated v8.2 containment operators
See also:
ba920e1c9182eac55d5f1327ab0d29b721154277 684ad6a92fcc33adebdab65c4e7d72a68ba05408
3165426e54df02a6199c0a216546e5095e875a0a 2f70fdb0644c32c4154236c2b5c241bec92eac5e 591d282e8d3e0448ec1339c6b066e10953f040a2
---
contrib/cube/Makefile | 2 +-
contrib/cube/cube--1.4--1.5.sql | 10 ++++++++++
contrib/cube/cube.control | 2 +-
contrib/hstore/Makefile | 1 +
contrib/hstore/hstore--1.0--1.1.sql | 7 +++++++
contrib/hstore/hstore--1.8--1.9.sql | 8 ++++++++
contrib/hstore/hstore.control | 2 +-
contrib/intarray/Makefile | 2 +-
contrib/intarray/intarray--1.4--1.5.sql | 18 ++++++++++++++++++
contrib/intarray/intarray.control | 2 +-
contrib/seg/Makefile | 2 +-
contrib/seg/seg--1.3--1.4.sql | 11 +++++++++++
contrib/seg/seg.control | 2 +-
doc/src/sgml/cube.sgml | 8 --------
doc/src/sgml/hstore.sgml | 10 ----------
doc/src/sgml/intarray.sgml | 8 --------
doc/src/sgml/seg.sgml | 8 --------
17 files changed, 62 insertions(+), 41 deletions(-)
create mode 100644 contrib/cube/cube--1.4--1.5.sql
create mode 100644 contrib/hstore/hstore--1.0--1.1.sql
create mode 100644 contrib/hstore/hstore--1.8--1.9.sql
create mode 100644 contrib/intarray/intarray--1.4--1.5.sql
create mode 100644 contrib/seg/seg--1.3--1.4.sql
diff --git a/contrib/cube/Makefile b/contrib/cube/Makefile
index 54f609db17..cf195506c7 100644
--- a/contrib/cube/Makefile
+++ b/contrib/cube/Makefile
@@ -7,7 +7,7 @@ OBJS = \
cubeparse.o
EXTENSION = cube
-DATA = cube--1.2.sql cube--1.2--1.3.sql cube--1.3--1.4.sql \
+DATA = cube--1.2.sql cube--1.2--1.3.sql cube--1.3--1.4.sql cube--1.4--1.5.sql \
cube--1.1--1.2.sql cube--1.0--1.1.sql
PGFILEDESC = "cube - multidimensional cube data type"
diff --git a/contrib/cube/cube--1.4--1.5.sql b/contrib/cube/cube--1.4--1.5.sql
new file mode 100644
index 0000000000..07a5f0755d
--- /dev/null
+++ b/contrib/cube/cube--1.4--1.5.sql
@@ -0,0 +1,10 @@
+/* contrib/cube/cube--1.4--1.5.sql */
+
+-- complain if script is sourced in psql, rather than via ALTER EXTENSION
+\echo Use "ALTER EXTENSION cube UPDATE TO '1.5'" to load this file. \quit
+
+-- Remove @ and ~
+ALTER OPERATOR FAMILY gist_cube_ops USING gist
+DROP OPERATOR 13 (cube, cube);
+ALTER OPERATOR FAMILY gist_cube_ops USING gist
+DROP OPERATOR 14 (cube, cube);
diff --git a/contrib/cube/cube.control b/contrib/cube/cube.control
index 3e238fc937..50427ec117 100644
--- a/contrib/cube/cube.control
+++ b/contrib/cube/cube.control
@@ -1,6 +1,6 @@
# cube extension
comment = 'data type for multidimensional cubes'
-default_version = '1.4'
+default_version = '1.5'
module_pathname = '$libdir/cube'
relocatable = true
trusted = true
diff --git a/contrib/hstore/Makefile b/contrib/hstore/Makefile
index c4e339b57c..97b228b65f 100644
--- a/contrib/hstore/Makefile
+++ b/contrib/hstore/Makefile
@@ -12,6 +12,7 @@ OBJS = \
EXTENSION = hstore
DATA = hstore--1.4.sql \
+ hstore--1.8--1.9.sql \
hstore--1.7--1.8.sql \
hstore--1.6--1.7.sql \
hstore--1.5--1.6.sql \
diff --git a/contrib/hstore/hstore--1.0--1.1.sql b/contrib/hstore/hstore--1.0--1.1.sql
new file mode 100644
index 0000000000..4e32a575c5
--- /dev/null
+++ b/contrib/hstore/hstore--1.0--1.1.sql
@@ -0,0 +1,7 @@
+/* contrib/hstore/hstore--1.0--1.1.sql */
+
+-- complain if script is sourced in psql, rather than via ALTER EXTENSION
+\echo Use "ALTER EXTENSION hstore UPDATE TO '1.1'" to load this file. \quit
+
+ALTER EXTENSION hstore DROP OPERATOR => (text, text);
+DROP OPERATOR => (text, text);
diff --git a/contrib/hstore/hstore--1.8--1.9.sql b/contrib/hstore/hstore--1.8--1.9.sql
new file mode 100644
index 0000000000..2220fee444
--- /dev/null
+++ b/contrib/hstore/hstore--1.8--1.9.sql
@@ -0,0 +1,8 @@
+/* contrib/hstore/hstore--1.8--1.9.sql */
+
+-- complain if script is sourced in psql, rather than via ALTER EXTENSION
+\echo Use "ALTER EXTENSION hstore UPDATE TO '1.9'" to load this file. \quit
+
+-- Remove @
+ALTER OPERATOR FAMILY gist_hstore_ops USING gist
+DROP OPERATOR 13 (hstore, hstore);
diff --git a/contrib/hstore/hstore.control b/contrib/hstore/hstore.control
index 89e3c746c4..b73c28aa4d 100644
--- a/contrib/hstore/hstore.control
+++ b/contrib/hstore/hstore.control
@@ -1,6 +1,6 @@
# hstore extension
comment = 'data type for storing sets of (key, value) pairs'
-default_version = '1.8'
+default_version = '1.9'
module_pathname = '$libdir/hstore'
relocatable = true
trusted = true
diff --git a/contrib/intarray/Makefile b/contrib/intarray/Makefile
index 01faa36b10..3817c1669a 100644
--- a/contrib/intarray/Makefile
+++ b/contrib/intarray/Makefile
@@ -12,7 +12,7 @@ OBJS = \
_intbig_gist.o
EXTENSION = intarray
-DATA = intarray--1.3--1.4.sql intarray--1.2--1.3.sql \
+DATA = intarray--1.4--1.5.sql intarray--1.3--1.4.sql intarray--1.2--1.3.sql \
intarray--1.2.sql intarray--1.1--1.2.sql \
intarray--1.0--1.1.sql
PGFILEDESC = "intarray - functions and operators for arrays of integers"
diff --git a/contrib/intarray/intarray--1.4--1.5.sql b/contrib/intarray/intarray--1.4--1.5.sql
new file mode 100644
index 0000000000..adb6ce136c
--- /dev/null
+++ b/contrib/intarray/intarray--1.4--1.5.sql
@@ -0,0 +1,18 @@
+/* contrib/intarray/intarray--1.4--1.5.sql */
+
+-- complain if script is sourced in psql, rather than via ALTER EXTENSION
+\echo Use "ALTER EXTENSION intarray UPDATE TO '1.5'" to load this file. \quit
+
+-- Remove @
+ALTER OPERATOR FAMILY gist__int_ops USING gist
+DROP OPERATOR 13 (_int4, _int4);
+
+ALTER OPERATOR FAMILY gist__intbig_ops USING gist
+DROP OPERATOR 13 (_int4, _int4);
+
+ALTER OPERATOR FAMILY gin__int_ops USING gin
+DROP OPERATOR 13 (_int4, _int4);
+
+-- Remove ~ from GIN - it was removed from gist in 1.4
+ALTER OPERATOR FAMILY gin__int_ops USING gin
+DROP OPERATOR 14 (_int4, _int4);
diff --git a/contrib/intarray/intarray.control b/contrib/intarray/intarray.control
index bbc837c573..c3ff753e2c 100644
--- a/contrib/intarray/intarray.control
+++ b/contrib/intarray/intarray.control
@@ -1,6 +1,6 @@
# intarray extension
comment = 'functions, operators, and index support for 1-D arrays of integers'
-default_version = '1.4'
+default_version = '1.5'
module_pathname = '$libdir/_int'
relocatable = true
trusted = true
diff --git a/contrib/seg/Makefile b/contrib/seg/Makefile
index f3578a8634..bb63e83506 100644
--- a/contrib/seg/Makefile
+++ b/contrib/seg/Makefile
@@ -7,7 +7,7 @@ OBJS = \
segparse.o
EXTENSION = seg
-DATA = seg--1.1.sql seg--1.1--1.2.sql seg--1.2--1.3.sql \
+DATA = seg--1.1.sql seg--1.1--1.2.sql seg--1.2--1.3.sql seg--1.3--1.4.sql \
seg--1.0--1.1.sql
PGFILEDESC = "seg - line segment data type"
diff --git a/contrib/seg/seg--1.3--1.4.sql b/contrib/seg/seg--1.3--1.4.sql
new file mode 100644
index 0000000000..8bdf1dd99b
--- /dev/null
+++ b/contrib/seg/seg--1.3--1.4.sql
@@ -0,0 +1,11 @@
+/* contrib/seg/seg--1.3--1.4.sql */
+
+-- complain if script is sourced in psql, rather than via ALTER EXTENSION
+\echo Use "ALTER EXTENSION seg UPDATE TO '1.4'" to load this file. \quit
+
+-- Remove @ and ~
+ALTER OPERATOR FAMILY gist_seg_ops USING gist
+DROP OPERATOR 13 (seg, seg);
+
+ALTER OPERATOR FAMILY gist_seg_ops USING gist
+DROP OPERATOR 14 (seg, seg);
diff --git a/contrib/seg/seg.control b/contrib/seg/seg.control
index 9ac3080848..e2c6a4750f 100644
--- a/contrib/seg/seg.control
+++ b/contrib/seg/seg.control
@@ -1,6 +1,6 @@
# seg extension
comment = 'data type for representing line segments or floating-point intervals'
-default_version = '1.3'
+default_version = '1.4'
module_pathname = '$libdir/seg'
relocatable = true
trusted = true
diff --git a/doc/src/sgml/cube.sgml b/doc/src/sgml/cube.sgml
index 3dd89bb14d..adf8dbaa91 100644
--- a/doc/src/sgml/cube.sgml
+++ b/doc/src/sgml/cube.sgml
@@ -222,14 +222,6 @@
</tgroup>
</table>
- <para>
- (Before PostgreSQL 8.2, the containment operators <literal>@></literal> and <literal><@</literal> were
- respectively called <literal>@</literal> and <literal>~</literal>. These names are still available, but are
- deprecated and will eventually be retired. Notice that the old names
- are reversed from the convention formerly followed by the core geometric
- data types!)
- </para>
-
<para>
In addition to the above operators, the usual comparison
operators shown in <xref linkend="functions-comparison-op-table"/> are
diff --git a/doc/src/sgml/hstore.sgml b/doc/src/sgml/hstore.sgml
index e867fcc5ae..db5779052a 100644
--- a/doc/src/sgml/hstore.sgml
+++ b/doc/src/sgml/hstore.sgml
@@ -318,16 +318,6 @@ key => NULL
</tgroup>
</table>
- <note>
- <para>
- Prior to PostgreSQL 8.2, the containment operators <literal>@></literal>
- and <literal><@</literal> were called <literal>@</literal> and <literal>~</literal>,
- respectively. These names are still available, but are deprecated and will
- eventually be removed. Notice that the old names are reversed from the
- convention formerly followed by the core geometric data types!
- </para>
- </note>
-
<table id="hstore-func-table">
<title><type>hstore</type> Functions</title>
<tgroup cols="1">
diff --git a/doc/src/sgml/intarray.sgml b/doc/src/sgml/intarray.sgml
index af44c7b214..dfe98279c0 100644
--- a/doc/src/sgml/intarray.sgml
+++ b/doc/src/sgml/intarray.sgml
@@ -364,14 +364,6 @@
</tgroup>
</table>
- <para>
- (Before PostgreSQL 8.2, the containment operators <literal>@></literal> and
- <literal><@</literal> were respectively called <literal>@</literal> and <literal>~</literal>.
- These names are still available, but are deprecated and will eventually be
- retired. Notice that the old names are reversed from the convention
- formerly followed by the core geometric data types!)
- </para>
-
<para>
The operators <literal>&&</literal>, <literal>@></literal> and
<literal><@</literal> are equivalent to <productname>PostgreSQL</productname>'s built-in
diff --git a/doc/src/sgml/seg.sgml b/doc/src/sgml/seg.sgml
index e0dfbc76cf..9be69e3609 100644
--- a/doc/src/sgml/seg.sgml
+++ b/doc/src/sgml/seg.sgml
@@ -352,14 +352,6 @@ test=> select '6.25 .. 6.50'::seg as "pH";
</tgroup>
</table>
- <para>
- (Before PostgreSQL 8.2, the containment operators <literal>@></literal> and <literal><@</literal> were
- respectively called <literal>@</literal> and <literal>~</literal>. These names are still available, but are
- deprecated and will eventually be retired. Notice that the old names
- are reversed from the convention formerly followed by the core geometric
- data types!)
- </para>
-
<para>
In addition to the above operators, the usual comparison
operators shown in <xref linkend="functions-comparison-op-table"/> are
--
2.17.0
Justin Pryzby <pryzby@telsasoft.com> writes:
[ 0001-remove-deprecated-v8.2-containment-operators.patch ]
I'm confused by why this patch is only dropping the operators'
opclass-membership links. Don't we want to actually DROP OPERATOR
too?
Also, the patch seems to be trying to resurrect hstore--1.0--1.1.sql,
which I do not see the point of. It was removed because no modern
server will even think it's valid syntax, and that situation has
not changed.
regards, tom lane
On Thu, Mar 04, 2021 at 08:58:39PM -0500, Tom Lane wrote:
Justin Pryzby <pryzby@telsasoft.com> writes:
[ 0001-remove-deprecated-v8.2-containment-operators.patch ]
I'm confused by why this patch is only dropping the operators'
opclass-membership links. Don't we want to actually DROP OPERATOR
too?
Okay
Also , I think it's unrelated to this patch, but shouldn't these be removed ?
See: b0b7be613, c15898c1d
+++ b/doc/src/sgml/brin.sgml
- <entry>Operator Strategy 7, 13, 16, 24, 25</entry>
+ <entry>Operator Strategy 7, 16, 24, 25</entry>
- <entry>Operator Strategy 8, 14, 26, 27</entry>
+ <entry>Operator Strategy 8, 26, 27</entry>
Also, the patch seems to be trying to resurrect hstore--1.0--1.1.sql,
Not sure why or how I had that.
--
Justin
Attachments:
0001-remove-deprecated-v8.2-containment-operators.patchtext/x-diff; charset=us-asciiDownload
From d9cfb33c1a87a8404fa949613500acd1021254cd Mon Sep 17 00:00:00 2001
From: Justin Pryzby <pryzbyj@telsasoft.com>
Date: Sat, 11 Apr 2020 22:57:06 -0500
Subject: [PATCH] remove deprecated v8.2 containment operators
See also:
ba920e1c9182eac55d5f1327ab0d29b721154277 684ad6a92fcc33adebdab65c4e7d72a68ba05408
3165426e54df02a6199c0a216546e5095e875a0a 2f70fdb0644c32c4154236c2b5c241bec92eac5e 591d282e8d3e0448ec1339c6b066e10953f040a2
---
contrib/cube/Makefile | 2 +-
contrib/cube/cube--1.4--1.5.sql | 8 ++++++++
contrib/cube/cube.control | 2 +-
contrib/hstore/Makefile | 1 +
contrib/hstore/hstore--1.8--1.9.sql | 7 +++++++
contrib/hstore/hstore.control | 2 +-
contrib/intarray/Makefile | 2 +-
contrib/intarray/intarray--1.4--1.5.sql | 10 ++++++++++
contrib/intarray/intarray.control | 2 +-
contrib/seg/Makefile | 2 +-
contrib/seg/seg--1.3--1.4.sql | 8 ++++++++
contrib/seg/seg.control | 2 +-
doc/src/sgml/cube.sgml | 8 --------
doc/src/sgml/hstore.sgml | 10 ----------
doc/src/sgml/intarray.sgml | 8 --------
doc/src/sgml/seg.sgml | 8 --------
16 files changed, 41 insertions(+), 41 deletions(-)
create mode 100644 contrib/cube/cube--1.4--1.5.sql
create mode 100644 contrib/hstore/hstore--1.8--1.9.sql
create mode 100644 contrib/intarray/intarray--1.4--1.5.sql
create mode 100644 contrib/seg/seg--1.3--1.4.sql
diff --git a/contrib/cube/Makefile b/contrib/cube/Makefile
index 54f609db17..cf195506c7 100644
--- a/contrib/cube/Makefile
+++ b/contrib/cube/Makefile
@@ -7,7 +7,7 @@ OBJS = \
cubeparse.o
EXTENSION = cube
-DATA = cube--1.2.sql cube--1.2--1.3.sql cube--1.3--1.4.sql \
+DATA = cube--1.2.sql cube--1.2--1.3.sql cube--1.3--1.4.sql cube--1.4--1.5.sql \
cube--1.1--1.2.sql cube--1.0--1.1.sql
PGFILEDESC = "cube - multidimensional cube data type"
diff --git a/contrib/cube/cube--1.4--1.5.sql b/contrib/cube/cube--1.4--1.5.sql
new file mode 100644
index 0000000000..54492e5d18
--- /dev/null
+++ b/contrib/cube/cube--1.4--1.5.sql
@@ -0,0 +1,8 @@
+/* contrib/cube/cube--1.4--1.5.sql */
+
+-- complain if script is sourced in psql, rather than via ALTER EXTENSION
+\echo Use "ALTER EXTENSION cube UPDATE TO '1.5'" to load this file. \quit
+
+-- Remove @ and ~
+DROP OPERATOR @ (cube, cube);
+DROP OPERATOR ~ (cube, cube);
diff --git a/contrib/cube/cube.control b/contrib/cube/cube.control
index 3e238fc937..50427ec117 100644
--- a/contrib/cube/cube.control
+++ b/contrib/cube/cube.control
@@ -1,6 +1,6 @@
# cube extension
comment = 'data type for multidimensional cubes'
-default_version = '1.4'
+default_version = '1.5'
module_pathname = '$libdir/cube'
relocatable = true
trusted = true
diff --git a/contrib/hstore/Makefile b/contrib/hstore/Makefile
index c4e339b57c..97b228b65f 100644
--- a/contrib/hstore/Makefile
+++ b/contrib/hstore/Makefile
@@ -12,6 +12,7 @@ OBJS = \
EXTENSION = hstore
DATA = hstore--1.4.sql \
+ hstore--1.8--1.9.sql \
hstore--1.7--1.8.sql \
hstore--1.6--1.7.sql \
hstore--1.5--1.6.sql \
diff --git a/contrib/hstore/hstore--1.8--1.9.sql b/contrib/hstore/hstore--1.8--1.9.sql
new file mode 100644
index 0000000000..7cd3467c55
--- /dev/null
+++ b/contrib/hstore/hstore--1.8--1.9.sql
@@ -0,0 +1,7 @@
+/* contrib/hstore/hstore--1.8--1.9.sql */
+
+-- complain if script is sourced in psql, rather than via ALTER EXTENSION
+\echo Use "ALTER EXTENSION hstore UPDATE TO '1.9'" to load this file. \quit
+
+-- Remove @
+DROP OPERATOR @ (hstore, hstore);
diff --git a/contrib/hstore/hstore.control b/contrib/hstore/hstore.control
index 89e3c746c4..b73c28aa4d 100644
--- a/contrib/hstore/hstore.control
+++ b/contrib/hstore/hstore.control
@@ -1,6 +1,6 @@
# hstore extension
comment = 'data type for storing sets of (key, value) pairs'
-default_version = '1.8'
+default_version = '1.9'
module_pathname = '$libdir/hstore'
relocatable = true
trusted = true
diff --git a/contrib/intarray/Makefile b/contrib/intarray/Makefile
index 01faa36b10..3817c1669a 100644
--- a/contrib/intarray/Makefile
+++ b/contrib/intarray/Makefile
@@ -12,7 +12,7 @@ OBJS = \
_intbig_gist.o
EXTENSION = intarray
-DATA = intarray--1.3--1.4.sql intarray--1.2--1.3.sql \
+DATA = intarray--1.4--1.5.sql intarray--1.3--1.4.sql intarray--1.2--1.3.sql \
intarray--1.2.sql intarray--1.1--1.2.sql \
intarray--1.0--1.1.sql
PGFILEDESC = "intarray - functions and operators for arrays of integers"
diff --git a/contrib/intarray/intarray--1.4--1.5.sql b/contrib/intarray/intarray--1.4--1.5.sql
new file mode 100644
index 0000000000..d0ac11545c
--- /dev/null
+++ b/contrib/intarray/intarray--1.4--1.5.sql
@@ -0,0 +1,10 @@
+/* contrib/intarray/intarray--1.4--1.5.sql */
+
+-- complain if script is sourced in psql, rather than via ALTER EXTENSION
+\echo Use "ALTER EXTENSION intarray UPDATE TO '1.5'" to load this file. \quit
+
+-- Remove @
+DROP OPERATOR @ (_int4, _int4);
+
+-- Remove ~ from GIN - it was removed from gist in 1.4
+DROP OPERATOR ~ (_int4, _int4);
diff --git a/contrib/intarray/intarray.control b/contrib/intarray/intarray.control
index bbc837c573..c3ff753e2c 100644
--- a/contrib/intarray/intarray.control
+++ b/contrib/intarray/intarray.control
@@ -1,6 +1,6 @@
# intarray extension
comment = 'functions, operators, and index support for 1-D arrays of integers'
-default_version = '1.4'
+default_version = '1.5'
module_pathname = '$libdir/_int'
relocatable = true
trusted = true
diff --git a/contrib/seg/Makefile b/contrib/seg/Makefile
index f3578a8634..bb63e83506 100644
--- a/contrib/seg/Makefile
+++ b/contrib/seg/Makefile
@@ -7,7 +7,7 @@ OBJS = \
segparse.o
EXTENSION = seg
-DATA = seg--1.1.sql seg--1.1--1.2.sql seg--1.2--1.3.sql \
+DATA = seg--1.1.sql seg--1.1--1.2.sql seg--1.2--1.3.sql seg--1.3--1.4.sql \
seg--1.0--1.1.sql
PGFILEDESC = "seg - line segment data type"
diff --git a/contrib/seg/seg--1.3--1.4.sql b/contrib/seg/seg--1.3--1.4.sql
new file mode 100644
index 0000000000..13babddba4
--- /dev/null
+++ b/contrib/seg/seg--1.3--1.4.sql
@@ -0,0 +1,8 @@
+/* contrib/seg/seg--1.3--1.4.sql */
+
+-- complain if script is sourced in psql, rather than via ALTER EXTENSION
+\echo Use "ALTER EXTENSION seg UPDATE TO '1.4'" to load this file. \quit
+
+-- Remove @ and ~
+DROP OPERATOR @ (seg, seg);
+DROP OPERATOR ~ (seg, seg);
diff --git a/contrib/seg/seg.control b/contrib/seg/seg.control
index 9ac3080848..e2c6a4750f 100644
--- a/contrib/seg/seg.control
+++ b/contrib/seg/seg.control
@@ -1,6 +1,6 @@
# seg extension
comment = 'data type for representing line segments or floating-point intervals'
-default_version = '1.3'
+default_version = '1.4'
module_pathname = '$libdir/seg'
relocatable = true
trusted = true
diff --git a/doc/src/sgml/cube.sgml b/doc/src/sgml/cube.sgml
index 3dd89bb14d..adf8dbaa91 100644
--- a/doc/src/sgml/cube.sgml
+++ b/doc/src/sgml/cube.sgml
@@ -222,14 +222,6 @@
</tgroup>
</table>
- <para>
- (Before PostgreSQL 8.2, the containment operators <literal>@></literal> and <literal><@</literal> were
- respectively called <literal>@</literal> and <literal>~</literal>. These names are still available, but are
- deprecated and will eventually be retired. Notice that the old names
- are reversed from the convention formerly followed by the core geometric
- data types!)
- </para>
-
<para>
In addition to the above operators, the usual comparison
operators shown in <xref linkend="functions-comparison-op-table"/> are
diff --git a/doc/src/sgml/hstore.sgml b/doc/src/sgml/hstore.sgml
index e867fcc5ae..db5779052a 100644
--- a/doc/src/sgml/hstore.sgml
+++ b/doc/src/sgml/hstore.sgml
@@ -318,16 +318,6 @@ key => NULL
</tgroup>
</table>
- <note>
- <para>
- Prior to PostgreSQL 8.2, the containment operators <literal>@></literal>
- and <literal><@</literal> were called <literal>@</literal> and <literal>~</literal>,
- respectively. These names are still available, but are deprecated and will
- eventually be removed. Notice that the old names are reversed from the
- convention formerly followed by the core geometric data types!
- </para>
- </note>
-
<table id="hstore-func-table">
<title><type>hstore</type> Functions</title>
<tgroup cols="1">
diff --git a/doc/src/sgml/intarray.sgml b/doc/src/sgml/intarray.sgml
index af44c7b214..dfe98279c0 100644
--- a/doc/src/sgml/intarray.sgml
+++ b/doc/src/sgml/intarray.sgml
@@ -364,14 +364,6 @@
</tgroup>
</table>
- <para>
- (Before PostgreSQL 8.2, the containment operators <literal>@></literal> and
- <literal><@</literal> were respectively called <literal>@</literal> and <literal>~</literal>.
- These names are still available, but are deprecated and will eventually be
- retired. Notice that the old names are reversed from the convention
- formerly followed by the core geometric data types!)
- </para>
-
<para>
The operators <literal>&&</literal>, <literal>@></literal> and
<literal><@</literal> are equivalent to <productname>PostgreSQL</productname>'s built-in
diff --git a/doc/src/sgml/seg.sgml b/doc/src/sgml/seg.sgml
index e0dfbc76cf..9be69e3609 100644
--- a/doc/src/sgml/seg.sgml
+++ b/doc/src/sgml/seg.sgml
@@ -352,14 +352,6 @@ test=> select '6.25 .. 6.50'::seg as "pH";
</tgroup>
</table>
- <para>
- (Before PostgreSQL 8.2, the containment operators <literal>@></literal> and <literal><@</literal> were
- respectively called <literal>@</literal> and <literal>~</literal>. These names are still available, but are
- deprecated and will eventually be retired. Notice that the old names
- are reversed from the convention formerly followed by the core geometric
- data types!)
- </para>
-
<para>
In addition to the above operators, the usual comparison
operators shown in <xref linkend="functions-comparison-op-table"/> are
--
2.17.0
Justin Pryzby <pryzby@telsasoft.com> writes:
On Thu, Mar 04, 2021 at 08:58:39PM -0500, Tom Lane wrote:
I'm confused by why this patch is only dropping the operators'
opclass-membership links. Don't we want to actually DROP OPERATOR
too?
Okay
Pushed. Since hstore already had a new-in-v14 edition, I just added
the commands to hstore--1.7--1.8.sql rather than make another update
script. (Also, you forgot to drop ~ in that one?)
Also , I think it's unrelated to this patch, but shouldn't these be removed ?
Right, done.
regards, tom lane