summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorTom Lane2004-03-22 01:38:18 +0000
committerTom Lane2004-03-22 01:38:18 +0000
commit0de45c1c2753763c5ca7d4904075e2cae80bb353 (patch)
tree9d4b34360c540365318a2e0c49dc1f9891b41464 /src/test
parentf938c2b91bebb7f436a3615cf86347d7261f71e8 (diff)
Add timestamp-versus-timestamptz cross-type comparison functions,
flesh out the index operator classes to include these. In passing, fix erroneous volatility marking of ACL functions.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/regress/expected/opr_sanity.out44
-rw-r--r--src/test/regress/sql/opr_sanity.sql34
2 files changed, 78 insertions, 0 deletions
diff --git a/src/test/regress/expected/opr_sanity.out b/src/test/regress/expected/opr_sanity.out
index b76cc695f44..bd343d6e0fe 100644
--- a/src/test/regress/expected/opr_sanity.out
+++ b/src/test/regress/expected/opr_sanity.out
@@ -787,6 +787,28 @@ WHERE p1.amopopr = p2.oid AND p1.amopclaid = p3.oid AND
-----------+---------+-----+---------+---------
(0 rows)
+-- Operators that are primary members of opclasses must be immutable (else
+-- it suggests that the index ordering isn't fixed). Operators that are
+-- cross-type members need only be stable, since they are just shorthands
+-- for index probe queries.
+SELECT p1.amopclaid, p1.amopopr, p2.oprname, p3.prosrc
+FROM pg_amop AS p1, pg_operator AS p2, pg_proc AS p3
+WHERE p1.amopopr = p2.oid AND p2.oprcode = p3.oid AND
+ p1.amopsubtype = 0 AND
+ p3.provolatile != 'i';
+ amopclaid | amopopr | oprname | prosrc
+-----------+---------+---------+--------
+(0 rows)
+
+SELECT p1.amopclaid, p1.amopopr, p2.oprname, p3.prosrc
+FROM pg_amop AS p1, pg_operator AS p2, pg_proc AS p3
+WHERE p1.amopopr = p2.oid AND p2.oprcode = p3.oid AND
+ p1.amopsubtype != 0 AND
+ p3.provolatile = 'v';
+ amopclaid | amopopr | oprname | prosrc
+-----------+---------+---------+--------
+(0 rows)
+
-- **************** pg_amproc ****************
-- Look for illegal values in pg_amproc fields
SELECT p1.amopclaid, p1.amprocnum
@@ -900,3 +922,25 @@ WHERE p3.opcamid = (SELECT oid FROM pg_am WHERE amname = 'hash')
-----------+-----------+-----+---------+---------
(0 rows)
+-- Support routines that are primary members of opclasses must be immutable
+-- (else it suggests that the index ordering isn't fixed). But cross-type
+-- members need only be stable, since they are just shorthands
+-- for index probe queries.
+SELECT p1.amopclaid, p1.amproc, p2.prosrc
+FROM pg_amproc AS p1, pg_proc AS p2
+WHERE p1.amproc = p2.oid AND
+ p1.amprocsubtype = 0 AND
+ p2.provolatile != 'i';
+ amopclaid | amproc | prosrc
+-----------+--------+--------
+(0 rows)
+
+SELECT p1.amopclaid, p1.amproc, p2.prosrc
+FROM pg_amproc AS p1, pg_proc AS p2
+WHERE p1.amproc = p2.oid AND
+ p1.amprocsubtype != 0 AND
+ p2.provolatile = 'v';
+ amopclaid | amproc | prosrc
+-----------+--------+--------
+(0 rows)
+
diff --git a/src/test/regress/sql/opr_sanity.sql b/src/test/regress/sql/opr_sanity.sql
index 82a294db6d6..cf274dd7dc1 100644
--- a/src/test/regress/sql/opr_sanity.sql
+++ b/src/test/regress/sql/opr_sanity.sql
@@ -640,6 +640,23 @@ WHERE p1.amopopr = p2.oid AND p1.amopclaid = p3.oid AND
p1.amopsubtype != 0 AND
p1.amopsubtype != p2.oprright;
+-- Operators that are primary members of opclasses must be immutable (else
+-- it suggests that the index ordering isn't fixed). Operators that are
+-- cross-type members need only be stable, since they are just shorthands
+-- for index probe queries.
+
+SELECT p1.amopclaid, p1.amopopr, p2.oprname, p3.prosrc
+FROM pg_amop AS p1, pg_operator AS p2, pg_proc AS p3
+WHERE p1.amopopr = p2.oid AND p2.oprcode = p3.oid AND
+ p1.amopsubtype = 0 AND
+ p3.provolatile != 'i';
+
+SELECT p1.amopclaid, p1.amopopr, p2.oprname, p3.prosrc
+FROM pg_amop AS p1, pg_operator AS p2, pg_proc AS p3
+WHERE p1.amopopr = p2.oid AND p2.oprcode = p3.oid AND
+ p1.amopsubtype != 0 AND
+ p3.provolatile = 'v';
+
-- **************** pg_amproc ****************
-- Look for illegal values in pg_amproc fields
@@ -738,3 +755,20 @@ WHERE p3.opcamid = (SELECT oid FROM pg_am WHERE amname = 'hash')
OR pronargs != 1
-- OR NOT physically_coercible(opcintype, proargtypes[0])
);
+
+-- Support routines that are primary members of opclasses must be immutable
+-- (else it suggests that the index ordering isn't fixed). But cross-type
+-- members need only be stable, since they are just shorthands
+-- for index probe queries.
+
+SELECT p1.amopclaid, p1.amproc, p2.prosrc
+FROM pg_amproc AS p1, pg_proc AS p2
+WHERE p1.amproc = p2.oid AND
+ p1.amprocsubtype = 0 AND
+ p2.provolatile != 'i';
+
+SELECT p1.amopclaid, p1.amproc, p2.prosrc
+FROM pg_amproc AS p1, pg_proc AS p2
+WHERE p1.amproc = p2.oid AND
+ p1.amprocsubtype != 0 AND
+ p2.provolatile = 'v';