The difference between “BaselineJoinHashTable::getInstance” and “JoinHashTable::getInstance” ?
What kind of join condition is an ExpressionTuple ?
ExpressionTuple is not a join condition by itself, but it’s used in the context of equi-join on multiple columns to represent the sides of the equals operator. For example, SELECT COUNT(*) FROM t1, t2 WHERE t1.x = t2.x AND t1.y AND t2.y is internally rewritten as (t1.x, t1.y) = (t2.x, t2.y), where the two sides are ExpressionTuple. This allows building a hash table on the entire tuple as opposed of just on t2.x and doing a loop for the t1.y = t2.y leftover of the join condition, which is normally a good idea as long as the hash table fits (we’re able to back off if it doesn’t).
SELECT COUNT(*) FROM t1, t2 WHERE t1.x = t2.x AND t1.y AND t2.y
(t1.x, t1.y) = (t2.x, t2.y)
t1.y = t2.y
thinks, I got the general idea.