mirror of
https://github.com/postgres/postgres.git
synced 2025-10-25 13:17:41 +03:00
Revise hash join and hash aggregation code to use the same datatype-
specific hash functions used by hash indexes, rather than the old not-datatype-aware ComputeHashFunc routine. This makes it safe to do hash joining on several datatypes that previously couldn't use hashing. The sets of datatypes that are hash indexable and hash joinable are now exactly the same, whereas before each had some that weren't in the other.
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: hash.h,v 1.47 2002/06/20 20:29:42 momjian Exp $
|
||||
* $Id: hash.h,v 1.48 2003/06/22 22:04:54 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
* modeled after Margo Seltzer's hash implementation for unix.
|
||||
@@ -251,9 +251,11 @@ extern Datum hashbulkdelete(PG_FUNCTION_ARGS);
|
||||
/*
|
||||
* Datatype-specific hash functions in hashfunc.c.
|
||||
*
|
||||
* These support both hash indexes and hash joins.
|
||||
*
|
||||
* NOTE: some of these are also used by catcache operations, without
|
||||
* any direct connection to hash indexes. Also, the common hash_any
|
||||
* routine is also used by dynahash tables and hash joins.
|
||||
* routine is also used by dynahash tables.
|
||||
*/
|
||||
extern Datum hashchar(PG_FUNCTION_ARGS);
|
||||
extern Datum hashint2(PG_FUNCTION_ARGS);
|
||||
@@ -265,6 +267,7 @@ extern Datum hashfloat8(PG_FUNCTION_ARGS);
|
||||
extern Datum hashoidvector(PG_FUNCTION_ARGS);
|
||||
extern Datum hashint2vector(PG_FUNCTION_ARGS);
|
||||
extern Datum hashname(PG_FUNCTION_ARGS);
|
||||
extern Datum hashtext(PG_FUNCTION_ARGS);
|
||||
extern Datum hashvarlena(PG_FUNCTION_ARGS);
|
||||
extern Datum hash_any(register const unsigned char *k, register int keylen);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user