mirror of
https://github.com/postgres/postgres.git
synced 2026-05-30 20:44:54 -04:00
bff0422b6c
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.
43 lines
1.5 KiB
C
43 lines
1.5 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* nodeHash.h
|
|
* prototypes for nodeHash.c
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* $Id: nodeHash.h,v 1.30 2003/06/22 22:04:55 tgl Exp $
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef NODEHASH_H
|
|
#define NODEHASH_H
|
|
|
|
#include "nodes/execnodes.h"
|
|
|
|
extern int ExecCountSlotsHash(Hash *node);
|
|
extern HashState *ExecInitHash(Hash *node, EState *estate);
|
|
extern TupleTableSlot *ExecHash(HashState *node);
|
|
extern void ExecEndHash(HashState *node);
|
|
extern void ExecReScanHash(HashState *node, ExprContext *exprCtxt);
|
|
|
|
extern HashJoinTable ExecHashTableCreate(Hash *node, List *hashOperators);
|
|
extern void ExecHashTableDestroy(HashJoinTable hashtable);
|
|
extern void ExecHashTableInsert(HashJoinTable hashtable,
|
|
ExprContext *econtext,
|
|
List *hashkeys);
|
|
extern int ExecHashGetBucket(HashJoinTable hashtable,
|
|
ExprContext *econtext,
|
|
List *hashkeys);
|
|
extern int ExecHashGetBatch(int bucketno, HashJoinTable hashtable);
|
|
extern HeapTuple ExecScanHashBucket(HashJoinState *hjstate, List *hjclauses,
|
|
ExprContext *econtext);
|
|
extern void ExecHashTableReset(HashJoinTable hashtable, long ntuples);
|
|
extern void ExecChooseHashTableSize(double ntuples, int tupwidth,
|
|
int *virtualbuckets,
|
|
int *physicalbuckets,
|
|
int *numbatches);
|
|
|
|
#endif /* NODEHASH_H */
|