Expand description
This module contains implementation for hash key serialization for hash-agg, hash-join, and perhaps other hash-based operators.
There may be multiple columns in one row being combined and encoded into
one single hash key.
For example, SELECT sum(t.a) FROM t GROUP BY t.b, t.c, the hash keys
are encoded from both t.b and t.c. If t.b="abc" and t.c=1, the hashkey may be
encoded in certain format of ("abc", 1).
Macros§
Structs§
- Hash
Code  - A wrapper for u64 hash result. Generic over the hasher.
 - Heap
Null Bitmap  - Null bitmap on heap. We use this for the edge case where group key sizes are larger than 64. This is because group key null bits cannot fit into a u64 on the stack if they exceed 64 bits. NOTE(kwannoel): This is not really optimized as it is an edge case.
 - Precomputed
Build Hasher  - Precomputed
Hasher  - A special hasher designed for 
HashKey, which stores a hash key fromHashKey::hash()and outputs it onfinish(). - Stack
Null Bitmap  - Null Bitmap on stack. This is specialized for the common case where group keys (<= 64).
 
Statics§
- MAX_
GROUP_ KEYS_ ON_ STACK  - This is determined by the stack based data structure we use,
StackNullBitmap, which can store 64 bits at most. 
Traits§
- Hash
KeyDe  - The deserialization counterpart of 
HashKeySer. - Hash
KeySer  - Extension of scalars to be serialized into hash keys.
 - Null
Bitmap  - We use a trait for 
NullBitmapso we can parameterize structs on it. This is becauseNullBitmapis used often, and we want it to occupy the minimal stack space. 
Type Aliases§
- Crc32
Hash Code  - Hash code from the 
Crc32hasher. Used for hash-shuffle exchange. - XxHash64
Hash Code  - Hash code from the 
XxHash64hasher. Used for in-memory hash map cache.