[feature-wip](multi-catalog) Impl FileScanNode in be (#10402)
Define a new file scanner node for hms table in be.
This file scanner node is different from broker scan node as blow:
1. Broker scan node will define src slot and dest slot, there is two memory copy in it: first is from file to src slot
and second from src to dest slot. Otherwise FileScanNode only have one stemp memory copy just from file to dest slot.
2. Broker scan node will read all the filed in the file to src slot and FileScanNode only read the need filed.
3. Broker scan node will convert type into string type for src slot and then use cast to convert to dest slot type,
but FileScanNode will have the final type.
Now FileScanNode is a standalone code, but we will uniform the file scan and broker scan in the feature.
This commit is contained in:
@ -60,6 +60,7 @@
|
||||
#include "util/debug_util.h"
|
||||
#include "util/runtime_profile.h"
|
||||
#include "vec/core/block.h"
|
||||
#include "vec/exec/file_scan_node.h"
|
||||
#include "vec/exec/join/vhash_join_node.h"
|
||||
#include "vec/exec/vaggregation_node.h"
|
||||
#include "vec/exec/vanalytic_eval_node.h"
|
||||
@ -393,6 +394,7 @@ Status ExecNode::create_node(RuntimeState* state, ObjectPool* pool, const TPlanN
|
||||
case TPlanNodeType::TABLE_FUNCTION_NODE:
|
||||
case TPlanNodeType::BROKER_SCAN_NODE:
|
||||
case TPlanNodeType::TABLE_VALUED_FUNCTION_SCAN_NODE:
|
||||
case TPlanNodeType::FILE_SCAN_NODE:
|
||||
break;
|
||||
default: {
|
||||
const auto& i = _TPlanNodeType_VALUES_TO_NAMES.find(tnode.node_type);
|
||||
@ -555,6 +557,11 @@ Status ExecNode::create_node(RuntimeState* state, ObjectPool* pool, const TPlanN
|
||||
}
|
||||
return Status::OK();
|
||||
|
||||
case TPlanNodeType::FILE_SCAN_NODE:
|
||||
*node = pool->add(new vectorized::FileScanNode(pool, tnode, descs));
|
||||
|
||||
return Status::OK();
|
||||
|
||||
case TPlanNodeType::REPEAT_NODE:
|
||||
if (state->enable_vectorized_exec()) {
|
||||
*node = pool->add(new vectorized::VRepeatNode(pool, tnode, descs));
|
||||
@ -664,6 +671,7 @@ void ExecNode::collect_scan_nodes(vector<ExecNode*>* nodes) {
|
||||
collect_nodes(TPlanNodeType::BROKER_SCAN_NODE, nodes);
|
||||
collect_nodes(TPlanNodeType::ES_HTTP_SCAN_NODE, nodes);
|
||||
collect_nodes(TPlanNodeType::TABLE_VALUED_FUNCTION_SCAN_NODE, nodes);
|
||||
collect_nodes(TPlanNodeType::FILE_SCAN_NODE, nodes);
|
||||
}
|
||||
|
||||
void ExecNode::try_do_aggregate_serde_improve() {
|
||||
|
||||
Reference in New Issue
Block a user