diff options
| author | Tom Lane | 1999-04-07 04:21:11 +0000 |
|---|---|---|
| committer | Tom Lane | 1999-04-07 04:21:11 +0000 |
| commit | 4e21023fd492994df02d4caa740cc30df53f86c6 (patch) | |
| tree | 22711113fd31974c580972303fd2d60378093210 /src/test/regress | |
| parent | 7fcbc5ddf0f7939bb92003acd2b4b866044a23f8 (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.out | 11 | ||||
| -rw-r--r-- | src/test/regress/sql/opr_sanity.sql | 7 |
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). |
