summaryrefslogtreecommitdiff
path: root/src/test/regress
diff options
context:
space:
mode:
authorTom Lane1999-04-07 04:21:11 +0000
committerTom Lane1999-04-07 04:21:11 +0000
commit4e21023fd492994df02d4caa740cc30df53f86c6 (patch)
tree22711113fd31974c580972303fd2d60378093210 /src/test/regress
parent7fcbc5ddf0f7939bb92003acd2b4b866044a23f8 (diff)
Unmark 'hashable' operators that can't really be used for
hashjoins. Extend opr_sanity regress test to help detect similar mistakes.
Diffstat (limited to 'src/test/regress')
-rw-r--r--src/test/regress/expected/opr_sanity.out11
-rw-r--r--src/test/regress/sql/opr_sanity.sql7
2 files changed, 12 insertions, 6 deletions
diff --git a/src/test/regress/expected/opr_sanity.out b/src/test/regress/expected/opr_sanity.out
index f044006daad..7b47da02f3c 100644
--- a/src/test/regress/expected/opr_sanity.out
+++ b/src/test/regress/expected/opr_sanity.out
@@ -135,10 +135,13 @@ oid|oprname
QUERY: SELECT p1.oid, p1.oprname
FROM pg_operator as p1
WHERE p1.oprcanhash AND NOT
- (p1.oprkind = 'b' AND p1.oprresult = 16 AND p1.oprcom != 0);
-oid|oprname
----+-------
-(0 rows)
+ (p1.oprkind = 'b' AND p1.oprresult = 16 AND p1.oprleft = p1.oprright AND
+ p1.oprname = '=' AND p1.oprcom = p1.oid);
+ oid|oprname
+----+-------
+1136|=
+1137|=
+(2 rows)
QUERY: SELECT p1.oid, p1.oprcode, p2.oid, p2.oprcode
FROM pg_operator AS p1, pg_operator AS p2
diff --git a/src/test/regress/sql/opr_sanity.sql b/src/test/regress/sql/opr_sanity.sql
index 63a24c7b53d..6beeef7eafa 100644
--- a/src/test/regress/sql/opr_sanity.sql
+++ b/src/test/regress/sql/opr_sanity.sql
@@ -132,12 +132,15 @@ WHERE (p1.oprleft = 0 and p1.oprkind != 'l') OR
(p1.oprright = 0 and p1.oprkind != 'r') OR
(p1.oprright != 0 and p1.oprkind = 'r');
--- Hash operators should be commutative binary ops returning bool.
+-- Hashing only works on simple equality operators "type = sametype",
+-- since the hash itself depends on the bitwise representation of the type.
+-- Check that allegedly hashable operators look like they might be "=".
SELECT p1.oid, p1.oprname
FROM pg_operator as p1
WHERE p1.oprcanhash AND NOT
- (p1.oprkind = 'b' AND p1.oprresult = 16 AND p1.oprcom != 0);
+ (p1.oprkind = 'b' AND p1.oprresult = 16 AND p1.oprleft = p1.oprright AND
+ p1.oprname = '=' AND p1.oprcom = p1.oid);
-- Look for conflicting operator definitions (same names and input datatypes).