From f1f221312ccc282e644dd2ce93cc3b1e6ace6a40 Mon Sep 17 00:00:00 2001 From: Mark Dilger Date: Thu, 27 Aug 2020 08:38:56 -0700 Subject: [PATCH v2] Adding deprecation notices. This deprecates all three of: Postfix factorial operator (!) Prefix factorial operator (!!) Unary right (postfix) operators --- doc/src/sgml/func.sgml | 7 +++---- doc/src/sgml/ref/alter_opfamily.sgml | 7 +++++++ doc/src/sgml/ref/create_opclass.sgml | 7 +++++++ doc/src/sgml/ref/create_operator.sgml | 17 ++++++++++++++- doc/src/sgml/ref/drop_operator.sgml | 2 +- doc/src/sgml/typeconv.sgml | 2 +- doc/src/sgml/xoper.sgml | 30 +++++++++++++++++++++------ src/include/catalog/pg_operator.dat | 4 ++-- src/include/catalog/pg_proc.dat | 2 +- 9 files changed, 62 insertions(+), 16 deletions(-) diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index bbbffd9d5b..b1bb6ff8f4 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -1054,7 +1054,7 @@ repeat('Pg', 4) PgPgPgPg numeric - Factorial + Factorial (as a postfix operator, deprecated, use factorial() instead) 5 ! @@ -1068,14 +1068,13 @@ repeat('Pg', 4) PgPgPgPg numeric - Factorial (as a prefix operator) + Factorial (as a prefix operator, deprecated, use factorial() instead) !! 5 120 - @ numeric_type @@ -1348,7 +1347,7 @@ repeat('Pg', 4) PgPgPgPg - + factorial diff --git a/doc/src/sgml/ref/alter_opfamily.sgml b/doc/src/sgml/ref/alter_opfamily.sgml index 4ac1cca95a..9b3064a5fe 100644 --- a/doc/src/sgml/ref/alter_opfamily.sgml +++ b/doc/src/sgml/ref/alter_opfamily.sgml @@ -146,6 +146,13 @@ ALTER OPERATOR FAMILY name USING name [ DEFAUL as the operator class's data type. + + + Right unary, also called postfix, operators are deprecated and will be + removed in PostgreSQL version 14. + + + In a FUNCTION clause, the operand data type(s) the function is intended to support, if different from diff --git a/doc/src/sgml/ref/create_operator.sgml b/doc/src/sgml/ref/create_operator.sgml index d5c385c087..8374641ba4 100644 --- a/doc/src/sgml/ref/create_operator.sgml +++ b/doc/src/sgml/ref/create_operator.sgml @@ -87,11 +87,18 @@ CREATE OPERATOR name ( At least one of LEFTARG and RIGHTARG must be defined. For - binary operators, both must be defined. For right unary + binary operators, both must be defined. For right unary operators, only LEFTARG should be defined, while for left unary operators only RIGHTARG should be defined. + + + Right unary, also called postfix, operators are deprecated and will be + removed in PostgreSQL version 14. + + + The function_name function must have been previously defined using CREATE @@ -165,6 +172,14 @@ CREATE OPERATOR name ( The data type of the operator's right operand, if any. This option would be omitted for a right-unary operator. + + + + Right unary, also called postfix, operators are deprecated and will be + removed in PostgreSQL version 14. + + + diff --git a/doc/src/sgml/ref/drop_operator.sgml b/doc/src/sgml/ref/drop_operator.sgml index 2dff050ecf..10d2b0b23b 100644 --- a/doc/src/sgml/ref/drop_operator.sgml +++ b/doc/src/sgml/ref/drop_operator.sgml @@ -121,7 +121,7 @@ DROP OPERATOR ~ (none, bit); - Remove the right unary factorial operator x! + Remove the deprecated right unary factorial operator x! for type bigint: DROP OPERATOR ! (bigint, none); diff --git a/doc/src/sgml/typeconv.sgml b/doc/src/sgml/typeconv.sgml index 8900d0eb38..9312f37c64 100644 --- a/doc/src/sgml/typeconv.sgml +++ b/doc/src/sgml/typeconv.sgml @@ -357,7 +357,7 @@ Some examples follow. Factorial Operator Type Resolution -There is only one factorial operator (postfix !) +There is a deprecated factorial operator (postfix !) defined in the standard catalog, and it takes an argument of type bigint. The scanner assigns an initial type of integer to the argument diff --git a/doc/src/sgml/xoper.sgml b/doc/src/sgml/xoper.sgml index 56b08491c9..847f8701d0 100644 --- a/doc/src/sgml/xoper.sgml +++ b/doc/src/sgml/xoper.sgml @@ -66,12 +66,23 @@ SELECT (a + b) AS c FROM test_complex; We've shown how to create a binary operator here. To create unary operators, just omit one of leftarg (for left unary) or - rightarg (for right unary). The function - clause and the argument clauses are the only required items in - CREATE OPERATOR. The commutator - clause shown in the example is an optional hint to the query - optimizer. Further details about commutator and other - optimizer hints appear in the next section. + rightarg (for right unary). + + + + + Right unary, also called postfix, operators are deprecated and will be + removed in PostgreSQL version 14. + + + + + The function clause and the argument clauses are the only + required items in CREATE OPERATOR. The + commutator clause shown in the example is an optional + hint to the query optimizer. Further details about + commutator and other optimizer hints appear in the next + section. @@ -205,6 +216,13 @@ SELECT (a + b) AS c FROM test_complex; for all x, or the equivalent for right unary operators. + + + Right unary, also called postfix, operators are deprecated and will be + removed in PostgreSQL version 14. + + + An operator's negator must have the same left and/or right operand types as the operator to be defined, so just as with COMMUTATOR, only the operator diff --git a/src/include/catalog/pg_operator.dat b/src/include/catalog/pg_operator.dat index 5b0e063655..0d013a7fd1 100644 --- a/src/include/catalog/pg_operator.dat +++ b/src/include/catalog/pg_operator.dat @@ -218,10 +218,10 @@ oprname => '>=', oprleft => 'xid8', oprright => 'xid8', oprresult => 'bool', oprcom => '<=(xid8,xid8)', oprnegate => '<(xid8,xid8)', oprcode => 'xid8ge', oprrest => 'scalargesel', oprjoin => 'scalargejoinsel' }, -{ oid => '388', descr => 'factorial', +{ oid => '388', descr => 'deprecated, use factorial instead', oprname => '!', oprkind => 'r', oprleft => 'int8', oprright => '0', oprresult => 'numeric', oprcode => 'numeric_fac' }, -{ oid => '389', descr => 'deprecated, use ! instead', +{ oid => '389', descr => 'deprecated, use factorial instead', oprname => '!!', oprkind => 'l', oprleft => '0', oprright => 'int8', oprresult => 'numeric', oprcode => 'numeric_fac' }, { oid => '385', descr => 'equal', diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat index 27989971db..a08f4cf449 100644 --- a/src/include/catalog/pg_proc.dat +++ b/src/include/catalog/pg_proc.dat @@ -327,7 +327,7 @@ { oid => '110', descr => 'I/O', proname => 'unknownout', prorettype => 'cstring', proargtypes => 'unknown', prosrc => 'unknownout' }, -{ oid => '111', +{ oid => '111', descr => 'factorial', proname => 'numeric_fac', prorettype => 'numeric', proargtypes => 'int8', prosrc => 'numeric_fac' }, -- 2.21.1 (Apple Git-122.3)