Prepares query plan for an Iceberg merge statement. The root sink will be a merge sink, consisting of an HDFS writer and an Iceberg buffered delete sink. F00:PLAN FRAGMENT | MERGE SINK |->WRITE TO HDFS | |->BUFFERED DELETE FROM ICEBERG | 03:MERGE | 02:HASH JOIN | |--04:EXCHANGE | | | F01:PLAN FRAGMENT | 01:SCAN HDFS | 00:SCAN HDFS [functional_parquet.target, RANDOM] Expected JSON output for t
| 689 | // ] |
| 690 | // } |
| 691 | static void prepareMergeStatement(const vector<string>& labels, |
| 692 | const vector<string>& label_details, vector<TPlanFragment>* fragments, |
| 693 | TExecSummary* summary) { |
| 694 | ASSERT_EQ(labels.size(), 5); |
| 695 | ASSERT_EQ(label_details.size(), 5); |
| 696 | |
| 697 | // F00:PLAN FRAGMENT |
| 698 | TPlanFragment fragment00 = ImpalaHttpHandlerTest::createTPlanFragment(0); |
| 699 | TDataSink merge_sink = ImpalaHttpHandlerTest::createMergeSink( |
| 700 | {ImpalaHttpHandlerTest::createHdfsTableSink(), |
| 701 | ImpalaHttpHandlerTest::createIcebergDeleteTableSink()}); |
| 702 | ImpalaHttpHandlerTest::addSinkToFragment(merge_sink, &fragment00, summary); |
| 703 | // 03:MERGE |
| 704 | ImpalaHttpHandlerTest::addNodeToFragment( |
| 705 | labels.at(0), label_details.at(0), 1, &fragment00, summary); |
| 706 | // 02:HASH JOIN |
| 707 | ImpalaHttpHandlerTest::addNodeToFragment( |
| 708 | labels.at(1), label_details.at(1), 2, &fragment00, summary); |
| 709 | // 04:EXCHANGE |
| 710 | ImpalaHttpHandlerTest::addNodeToFragment( |
| 711 | labels.at(2), label_details.at(2), 0, &fragment00, summary); |
| 712 | // 00:SCAN HDFS |
| 713 | ImpalaHttpHandlerTest::addNodeToFragment( |
| 714 | labels.at(3), label_details.at(3), 0, &fragment00, summary); |
| 715 | fragments->push_back(fragment00); |
| 716 | |
| 717 | // F01:PLAN FRAGMENT |
| 718 | TPlanFragment fragment01 = ImpalaHttpHandlerTest::createTPlanFragment(1); |
| 719 | TDataSink stream_sink = |
| 720 | ImpalaHttpHandlerTest::createStreamSink(fragment00.plan.nodes[2].node_id); |
| 721 | ImpalaHttpHandlerTest::addSinkToFragment(stream_sink, &fragment01, summary); |
| 722 | // 01:SCAN HDFS |
| 723 | ImpalaHttpHandlerTest::addNodeToFragment( |
| 724 | labels.at(4), label_details.at(4), 0, &fragment01, summary); |
| 725 | fragments->push_back(fragment01); |
| 726 | } |
| 727 | |
| 728 | } // namespace impala |
| 729 |