1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /*-------------------------------------------------------------------------
- *
- * nodeHash.h
- * prototypes for nodeHash.c
- *
- *
- * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- * src/include/executor/nodeHash.h
- *
- *-------------------------------------------------------------------------
- */
- #ifndef NODEHASH_H
- #define NODEHASH_H
- #include "nodes/execnodes.h"
- extern HashState *ExecInitHash(Hash *node, EState *estate, int eflags);
- extern TupleTableSlot *ExecHash(HashState *node);
- extern Node *MultiExecHash(HashState *node);
- extern void ExecEndHash(HashState *node);
- extern void ExecReScanHash(HashState *node);
- extern HashJoinTable ExecHashTableCreate(Hash *node, List *hashOperators,
- bool keepNulls);
- extern void ExecHashTableDestroy(HashJoinTable hashtable);
- extern void ExecHashTableInsert(HashJoinTable hashtable,
- TupleTableSlot *slot,
- uint32 hashvalue);
- extern bool ExecHashGetHashValue(HashJoinTable hashtable,
- ExprContext *econtext,
- List *hashkeys,
- bool outer_tuple,
- bool keep_nulls,
- uint32 *hashvalue);
- extern void ExecHashGetBucketAndBatch(HashJoinTable hashtable,
- uint32 hashvalue,
- int *bucketno,
- int *batchno);
- extern bool ExecScanHashBucket(HashJoinState *hjstate, ExprContext *econtext);
- extern void ExecPrepHashTableForUnmatched(HashJoinState *hjstate);
- extern bool ExecScanHashTableForUnmatched(HashJoinState *hjstate,
- ExprContext *econtext);
- extern void ExecHashTableReset(HashJoinTable hashtable);
- extern void ExecHashTableResetMatchFlags(HashJoinTable hashtable);
- extern void ExecChooseHashTableSize(double ntuples, int tupwidth, bool useskew,
- int *numbuckets,
- int *numbatches,
- int *num_skew_mcvs);
- extern int ExecHashGetSkewBucket(HashJoinTable hashtable, uint32 hashvalue);
- #endif /* NODEHASH_H */
|