MCPcopy Create free account
hub / github.com/apache/impala / prepareJoinStatement

Function prepareJoinStatement

be/src/service/impala-http-handler-test.cc:497–538  ·  view source on GitHub ↗

Prepares query plan for a join statement with three fragments. F02:PLAN FRAGMENT | PLAN-ROOT SINK | 04:EXCHANGE | F00:PLAN FRAGMENT 02:HASH JOIN | |--03:EXCHANGE | | | F01:PLAN FRAGMENT | 00:SCAN HDFS | 01:SCAN HDFS Expected JSON output for the plan: { "plan_nodes": [ { "label": "04:EXCHANGE", "label_detail": "UNPARTITIONED", "output_card": 6, "num_instances": 2, "is_broadcast": true, "max_t

Source from the content-addressed store, hash-verified

495// ]
496// }
497static void prepareJoinStatement(const vector<string>& labels,
498 const vector<string>& label_details, vector<TPlanFragment>* fragments,
499 TExecSummary* summary) {
500 ASSERT_EQ(labels.size(), 5);
501 ASSERT_EQ(label_details.size(), 5);
502
503 // F02:PLAN FRAGMENT
504 TPlanFragment fragment02 = ImpalaHttpHandlerTest::createTPlanFragment(2);
505 // 04:EXCHANGE
506 ImpalaHttpHandlerTest::addNodeToFragment(
507 labels.at(0), label_details.at(0), 0, &fragment02, summary);
508 TDataSink plan_root_sink = ImpalaHttpHandlerTest::createPlanRootSink();
509 ImpalaHttpHandlerTest::addSinkToFragment(plan_root_sink, &fragment02, summary);
510 fragments->push_back(fragment02);
511
512 // F00:PLAN FRAGMENT
513 TPlanFragment fragment00 = ImpalaHttpHandlerTest::createTPlanFragment(0);
514 TDataSink stream_sink1 =
515 ImpalaHttpHandlerTest::createStreamSink(fragment02.plan.nodes[0].node_id);
516 ImpalaHttpHandlerTest::addSinkToFragment(stream_sink1, &fragment00, summary);
517 // 02:HASH_JOIN
518 ImpalaHttpHandlerTest::addNodeToFragment(
519 labels.at(1), label_details.at(1), 2, &fragment00, summary);
520 // 01:SCAN HDFS
521 ImpalaHttpHandlerTest::addNodeToFragment(
522 labels.at(2), label_details.at(2), 0, &fragment00, summary);
523 // 03:EXCHANGE
524 ImpalaHttpHandlerTest::addNodeToFragment(
525 labels.at(3), label_details.at(3), 0, &fragment00, summary);
526 fragments->push_back(fragment00);
527
528 // F01:PLAN FRAGMENT
529 TPlanFragment fragment01 = ImpalaHttpHandlerTest::createTPlanFragment(1);
530 // data stream sink pointing to the 03:EXCHANGE node
531 TDataSink stream_sink2 =
532 ImpalaHttpHandlerTest::createStreamSink(fragment00.plan.nodes[2].node_id);
533 ImpalaHttpHandlerTest::addSinkToFragment(stream_sink2, &fragment01, summary);
534 // 00:SCAN HDFS
535 ImpalaHttpHandlerTest::addNodeToFragment(
536 labels.at(4), label_details.at(4), 0, &fragment01, summary);
537 fragments->push_back(fragment01);
538}
539
540// Prepares query plan for an Iceberg update statement. Root sink will be a multi data
541// sink, consisting of an HDFS table sink and an Iceberg delete table sink.

Callers 1

TEST_FFunction · 0.85

Calls 2

push_backMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected