mirror of
https://github.com/postgres/postgres.git
synced 2025-12-12 02:37:31 +03:00
Indexing support for pattern matching operations via separate operator
class when lc_collate is not C.
This commit is contained in:
@@ -103,11 +103,13 @@ WHERE p1.oid != p2.oid AND
|
||||
(p1.proargtypes[0] < p2.proargtypes[0]);
|
||||
proargtypes | proargtypes
|
||||
-------------+-------------
|
||||
25 | 1042
|
||||
25 | 1043
|
||||
1042 | 1043
|
||||
1114 | 1184
|
||||
1560 | 1562
|
||||
2277 | 2283
|
||||
(4 rows)
|
||||
(6 rows)
|
||||
|
||||
SELECT DISTINCT p1.proargtypes[1], p2.proargtypes[1]
|
||||
FROM pg_proc AS p1, pg_proc AS p2
|
||||
@@ -118,10 +120,13 @@ WHERE p1.oid != p2.oid AND
|
||||
(p1.proargtypes[1] < p2.proargtypes[1]);
|
||||
proargtypes | proargtypes
|
||||
-------------+-------------
|
||||
25 | 1042
|
||||
25 | 1043
|
||||
1042 | 1043
|
||||
1114 | 1184
|
||||
1560 | 1562
|
||||
2277 | 2283
|
||||
(3 rows)
|
||||
(6 rows)
|
||||
|
||||
SELECT DISTINCT p1.proargtypes[2], p2.proargtypes[2]
|
||||
FROM pg_proc AS p1, pg_proc AS p2
|
||||
@@ -332,7 +337,7 @@ WHERE p1.oprnegate = p2.oid AND
|
||||
SELECT p1.oid, p1.oprcode, p2.oid, p2.oprcode
|
||||
FROM pg_operator AS p1, pg_operator AS p2
|
||||
WHERE p1.oprlsortop = p2.oid AND
|
||||
(p1.oprname != '=' OR p2.oprname != '<' OR
|
||||
(p1.oprname NOT IN ('=', '~=~') OR p2.oprname NOT IN ('<', '~<~') OR
|
||||
p1.oprkind != 'b' OR p2.oprkind != 'b' OR
|
||||
p1.oprleft != p2.oprleft OR
|
||||
p1.oprleft != p2.oprright OR
|
||||
@@ -345,7 +350,7 @@ WHERE p1.oprlsortop = p2.oid AND
|
||||
SELECT p1.oid, p1.oprcode, p2.oid, p2.oprcode
|
||||
FROM pg_operator AS p1, pg_operator AS p2
|
||||
WHERE p1.oprrsortop = p2.oid AND
|
||||
(p1.oprname != '=' OR p2.oprname != '<' OR
|
||||
(p1.oprname NOT IN ('=', '~=~') OR p2.oprname NOT IN ('<', '~<~') OR
|
||||
p1.oprkind != 'b' OR p2.oprkind != 'b' OR
|
||||
p1.oprright != p2.oprleft OR
|
||||
p1.oprright != p2.oprright OR
|
||||
@@ -358,7 +363,7 @@ WHERE p1.oprrsortop = p2.oid AND
|
||||
SELECT p1.oid, p1.oprcode, p2.oid, p2.oprcode
|
||||
FROM pg_operator AS p1, pg_operator AS p2
|
||||
WHERE p1.oprltcmpop = p2.oid AND
|
||||
(p1.oprname != '=' OR p2.oprname != '<' OR
|
||||
(p1.oprname NOT IN ('=', '~=~') OR p2.oprname NOT IN ('<', '~<~') OR
|
||||
p1.oprkind != 'b' OR p2.oprkind != 'b' OR
|
||||
p1.oprleft != p2.oprleft OR
|
||||
p1.oprright != p2.oprright OR
|
||||
@@ -371,7 +376,7 @@ WHERE p1.oprltcmpop = p2.oid AND
|
||||
SELECT p1.oid, p1.oprcode, p2.oid, p2.oprcode
|
||||
FROM pg_operator AS p1, pg_operator AS p2
|
||||
WHERE p1.oprgtcmpop = p2.oid AND
|
||||
(p1.oprname != '=' OR p2.oprname != '>' OR
|
||||
(p1.oprname NOT IN ('=', '~=~') OR p2.oprname NOT IN ('>', '~>~') OR
|
||||
p1.oprkind != 'b' OR p2.oprkind != 'b' OR
|
||||
p1.oprleft != p2.oprleft OR
|
||||
p1.oprright != p2.oprright OR
|
||||
@@ -427,7 +432,7 @@ SELECT p1.oid, p1.oprname
|
||||
FROM pg_operator AS p1
|
||||
WHERE p1.oprcanhash AND NOT
|
||||
(p1.oprkind = 'b' AND p1.oprresult = 'bool'::regtype AND
|
||||
p1.oprleft = p1.oprright AND p1.oprname = '=' AND p1.oprcom = p1.oid);
|
||||
p1.oprleft = p1.oprright AND p1.oprname IN ('=', '~=~') AND p1.oprcom = p1.oid);
|
||||
oid | oprname
|
||||
-----+---------
|
||||
353 | =
|
||||
|
||||
@@ -276,7 +276,7 @@ WHERE p1.oprnegate = p2.oid AND
|
||||
SELECT p1.oid, p1.oprcode, p2.oid, p2.oprcode
|
||||
FROM pg_operator AS p1, pg_operator AS p2
|
||||
WHERE p1.oprlsortop = p2.oid AND
|
||||
(p1.oprname != '=' OR p2.oprname != '<' OR
|
||||
(p1.oprname NOT IN ('=', '~=~') OR p2.oprname NOT IN ('<', '~<~') OR
|
||||
p1.oprkind != 'b' OR p2.oprkind != 'b' OR
|
||||
p1.oprleft != p2.oprleft OR
|
||||
p1.oprleft != p2.oprright OR
|
||||
@@ -286,7 +286,7 @@ WHERE p1.oprlsortop = p2.oid AND
|
||||
SELECT p1.oid, p1.oprcode, p2.oid, p2.oprcode
|
||||
FROM pg_operator AS p1, pg_operator AS p2
|
||||
WHERE p1.oprrsortop = p2.oid AND
|
||||
(p1.oprname != '=' OR p2.oprname != '<' OR
|
||||
(p1.oprname NOT IN ('=', '~=~') OR p2.oprname NOT IN ('<', '~<~') OR
|
||||
p1.oprkind != 'b' OR p2.oprkind != 'b' OR
|
||||
p1.oprright != p2.oprleft OR
|
||||
p1.oprright != p2.oprright OR
|
||||
@@ -296,7 +296,7 @@ WHERE p1.oprrsortop = p2.oid AND
|
||||
SELECT p1.oid, p1.oprcode, p2.oid, p2.oprcode
|
||||
FROM pg_operator AS p1, pg_operator AS p2
|
||||
WHERE p1.oprltcmpop = p2.oid AND
|
||||
(p1.oprname != '=' OR p2.oprname != '<' OR
|
||||
(p1.oprname NOT IN ('=', '~=~') OR p2.oprname NOT IN ('<', '~<~') OR
|
||||
p1.oprkind != 'b' OR p2.oprkind != 'b' OR
|
||||
p1.oprleft != p2.oprleft OR
|
||||
p1.oprright != p2.oprright OR
|
||||
@@ -306,7 +306,7 @@ WHERE p1.oprltcmpop = p2.oid AND
|
||||
SELECT p1.oid, p1.oprcode, p2.oid, p2.oprcode
|
||||
FROM pg_operator AS p1, pg_operator AS p2
|
||||
WHERE p1.oprgtcmpop = p2.oid AND
|
||||
(p1.oprname != '=' OR p2.oprname != '>' OR
|
||||
(p1.oprname NOT IN ('=', '~=~') OR p2.oprname NOT IN ('>', '~>~') OR
|
||||
p1.oprkind != 'b' OR p2.oprkind != 'b' OR
|
||||
p1.oprleft != p2.oprleft OR
|
||||
p1.oprright != p2.oprright OR
|
||||
@@ -355,7 +355,7 @@ SELECT p1.oid, p1.oprname
|
||||
FROM pg_operator AS p1
|
||||
WHERE p1.oprcanhash AND NOT
|
||||
(p1.oprkind = 'b' AND p1.oprresult = 'bool'::regtype AND
|
||||
p1.oprleft = p1.oprright AND p1.oprname = '=' AND p1.oprcom = p1.oid);
|
||||
p1.oprleft = p1.oprright AND p1.oprname IN ('=', '~=~') AND p1.oprcom = p1.oid);
|
||||
|
||||
-- In 6.5 we accepted hashable array equality operators when the array element
|
||||
-- type is hashable. However, what we actually need to make hashjoin work on
|
||||
|
||||
Reference in New Issue
Block a user