Prepares query plan for an Iceberg update statement. Root sink will be a multi data sink, consisting of an HDFS table sink and an Iceberg delete table sink. F00:PLAN FRAGMENT | MULTI DATA SINK |->WRITE TO HDFS | |->BUFFERED DELETE FROM ICEBERG | 00:SCAN HDFS Expected JSON output for the plan will look like this: { "plan_nodes": [ { "label": "MULTI DATA SINK", "label_detail": "HDFS WRITER, ICEBER
| 577 | // ] |
| 578 | // } |
| 579 | static void prepareUpdateStatement(const vector<string>& labels, |
| 580 | const vector<string>& label_details, vector<TPlanFragment>* fragments, |
| 581 | TExecSummary* summary) { |
| 582 | ASSERT_EQ(labels.size(), 1); |
| 583 | ASSERT_EQ(label_details.size(), 1); |
| 584 | |
| 585 | // F00:PLAN FRAGMENT |
| 586 | TPlanFragment fragment00 = ImpalaHttpHandlerTest::createTPlanFragment(0); |
| 587 | TDataSink multi_data_sink = ImpalaHttpHandlerTest::createMultiDataSink( |
| 588 | {ImpalaHttpHandlerTest::createHdfsTableSink(), |
| 589 | ImpalaHttpHandlerTest::createIcebergDeleteTableSink()}); |
| 590 | ImpalaHttpHandlerTest::addSinkToFragment(multi_data_sink, &fragment00, summary); |
| 591 | |
| 592 | // 00:SCAN HDFS |
| 593 | ImpalaHttpHandlerTest::addNodeToFragment( |
| 594 | labels.at(0), label_details.at(0), 0, &fragment00, summary); |
| 595 | fragments->push_back(fragment00); |
| 596 | } |
| 597 | |
| 598 | // Prepares query plan for an Iceberg merge statement. The root sink will be a |
| 599 | // merge sink, consisting of an HDFS writer and an Iceberg buffered delete sink. |