| 32 | } |
| 33 | |
| 34 | inline bool HashTableCtx::EvalAndHashProbe(const TupleRow* row) { |
| 35 | uint8_t* expr_values = expr_values_cache_.cur_expr_values(); |
| 36 | uint8_t* expr_values_null = expr_values_cache_.cur_expr_values_null(); |
| 37 | bool has_null = EvalProbeRow(row, expr_values, expr_values_null); |
| 38 | if (has_null && !(stores_nulls() && finds_some_nulls())) return false; |
| 39 | expr_values_cache_.SetCurExprValuesHash(HashRow(expr_values, expr_values_null)); |
| 40 | return true; |
| 41 | } |
| 42 | |
| 43 | inline void HashTableCtx::ExprValuesCache::NextRow() { |
| 44 | cur_expr_values_ += expr_values_bytes_per_row_; |