[Intersect] Implements intersect node (#3034)

imlement of the intersect node
now can support statement like `select a from t intersect select b from t1 intersect select 1;`
This commit is contained in:
yangzhg
2020-03-09 10:52:55 +08:00
committed by GitHub
parent 172838175f
commit dc07182bd4
5 changed files with 265 additions and 139 deletions

View File

@ -48,6 +48,8 @@
#include "exec/analytic_eval_node.h"
#include "exec/select_node.h"
#include "exec/union_node.h"
#include "exec/intersect_node.h"
#include "exec/except_node.h"
#include "exec/repeat_node.h"
#include "exec/assert_num_rows_node.h"
#include "runtime/exec_env.h"
@ -440,6 +442,14 @@ Status ExecNode::create_node(RuntimeState* state, ObjectPool* pool, const TPlanN
*node = pool->add(new UnionNode(pool, tnode, descs));
return Status::OK();
case TPlanNodeType::INTERSECT_NODE:
*node = pool->add(new IntersectNode(pool, tnode, descs));
return Status::OK();
// case TPlanNodeType::EXCEPT_NODE:
// *node = pool->add(new ExceptNode(pool, tnode, descs));
// return Status::OK();
case TPlanNodeType::BROKER_SCAN_NODE:
*node = pool->add(new BrokerScanNode(pool, tnode, descs));
return Status::OK();