| 426 | } |
| 427 | |
| 428 | void TableSinkBase::GetHashTblKey(const TupleRow* row, |
| 429 | const vector<ScalarExprEvaluator*>& evals, string* key) { |
| 430 | stringstream hash_table_key; |
| 431 | for (int i = 0; i < evals.size(); ++i) { |
| 432 | RawValue::PrintValueAsBytes( |
| 433 | evals[i]->GetValue(row), evals[i]->root().type(), &hash_table_key); |
| 434 | // Additionally append "/" to avoid accidental key collisions. |
| 435 | hash_table_key << "/"; |
| 436 | } |
| 437 | *key = hash_table_key.str(); |
| 438 | } |
| 439 | |
| 440 | bool TableSinkBase::ShouldSkipStaging(RuntimeState* state, OutputPartition* partition) { |
| 441 | if (IsTransactional() || HasExternalOutputDir() || is_result_sink()) return true; |