mirror of
https://github.com/postgres/postgres.git
synced 2025-10-15 05:46:52 +03:00
Hash support for row types
Add hash functions for the record type as well as a hash operator family and operator class for the record type. This enables all the hash functionality for the record type such as hash-based plans for UNION/INTERSECT/EXCEPT DISTINCT, recursive queries using UNION DISTINCT, hash joins, and hash partitioning. Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://www.postgresql.org/message-id/flat/38eccd35-4e2d-6767-1b3c-dada1eac3124%402ndquadrant.com
This commit is contained in:
7
src/backend/utils/cache/lsyscache.c
vendored
7
src/backend/utils/cache/lsyscache.c
vendored
@@ -1358,13 +1358,18 @@ op_hashjoinable(Oid opno, Oid inputtype)
|
||||
TypeCacheEntry *typentry;
|
||||
|
||||
/* As in op_mergejoinable, let the typcache handle the hard cases */
|
||||
/* Eventually we'll need a similar case for record_eq ... */
|
||||
if (opno == ARRAY_EQ_OP)
|
||||
{
|
||||
typentry = lookup_type_cache(inputtype, TYPECACHE_HASH_PROC);
|
||||
if (typentry->hash_proc == F_HASH_ARRAY)
|
||||
result = true;
|
||||
}
|
||||
else if (opno == RECORD_EQ_OP)
|
||||
{
|
||||
typentry = lookup_type_cache(inputtype, TYPECACHE_HASH_PROC);
|
||||
if (typentry->hash_proc == F_HASH_RECORD)
|
||||
result = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* For all other operators, rely on pg_operator.oprcanhash */
|
||||
|
Reference in New Issue
Block a user