aboutsummaryrefslogtreecommitdiff
path: root/src/test/regress/sql/create_operator.sql
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/regress/sql/create_operator.sql')
-rw-r--r--src/test/regress/sql/create_operator.sql43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/test/regress/sql/create_operator.sql b/src/test/regress/sql/create_operator.sql
index f53e24db3c4..a3096f17df0 100644
--- a/src/test/regress/sql/create_operator.sql
+++ b/src/test/regress/sql/create_operator.sql
@@ -210,6 +210,49 @@ CREATE OPERATOR #*# (
);
ROLLBACK;
+-- Should fail. An operator cannot be its own negator.
+BEGIN TRANSACTION;
+CREATE OPERATOR === (
+ leftarg = integer,
+ rightarg = integer,
+ procedure = int4eq,
+ negator = ===
+);
+ROLLBACK;
+
+-- Should fail. An operator cannot be its own negator. Here we check that
+-- this error is detected when replacing a shell operator.
+BEGIN TRANSACTION;
+-- create a shell operator for ===!!! by referencing it as a commutator
+CREATE OPERATOR === (
+ leftarg = integer,
+ rightarg = integer,
+ procedure = int4eq,
+ commutator = ===!!!
+);
+CREATE OPERATOR ===!!! (
+ leftarg = integer,
+ rightarg = integer,
+ procedure = int4ne,
+ negator = ===!!!
+);
+ROLLBACK;
+
+-- test that we can't use part of an existing commutator or negator pair
+-- as a commutator or negator
+CREATE OPERATOR === (
+ leftarg = integer,
+ rightarg = integer,
+ procedure = int4eq,
+ commutator = =
+);
+CREATE OPERATOR === (
+ leftarg = integer,
+ rightarg = integer,
+ procedure = int4eq,
+ negator = <>
+);
+
-- invalid: non-lowercase quoted identifiers
CREATE OPERATOR ===
(