patch 4.0
This commit is contained in:
@ -15,39 +15,48 @@
|
||||
#include "lib/ob_define.h"
|
||||
#include "sql/resolver/expr/ob_raw_expr_util.h"
|
||||
#include "sql/resolver/cmd/ob_cmd_resolver.h"
|
||||
namespace oceanbase {
|
||||
namespace sql {
|
||||
namespace oceanbase
|
||||
{
|
||||
namespace sql
|
||||
{
|
||||
class ObLoadDataStmt;
|
||||
struct ObDataInFileStruct;
|
||||
|
||||
class ObLoadDataResolver : public ObCMDResolver {
|
||||
class ObLoadDataResolver : public ObCMDResolver
|
||||
{
|
||||
public:
|
||||
explicit ObLoadDataResolver(ObResolverParams& params) : ObCMDResolver(params), current_scope_(T_LOAD_DATA_SCOPE)
|
||||
{}
|
||||
explicit ObLoadDataResolver(ObResolverParams ¶ms):
|
||||
ObCMDResolver(params), current_scope_(T_LOAD_DATA_SCOPE)
|
||||
{
|
||||
}
|
||||
virtual ~ObLoadDataResolver()
|
||||
{}
|
||||
virtual int resolve(const ParseNode& parse_tree);
|
||||
int resolve_field_node(const ParseNode& node, const common::ObNameCaseMode case_mode, ObLoadDataStmt& load_stmt);
|
||||
int resolve_user_vars_node(const ParseNode& node, ObLoadDataStmt& load_stmt);
|
||||
int resolve_field_or_var_list_node(
|
||||
const ParseNode& node, const common::ObNameCaseMode case_mode, ObLoadDataStmt& load_stmt);
|
||||
int resolve_empty_field_or_var_list_node(ObLoadDataStmt& load_stmt);
|
||||
int resolve_set_clause(const ParseNode& node, const common::ObNameCaseMode case_mode, ObLoadDataStmt& load_stmt);
|
||||
int resolve_each_set_node(const ParseNode& node, const common::ObNameCaseMode case_mode, ObLoadDataStmt& load_stmt);
|
||||
int resolve_char_node(const ParseNode& node, int32_t& single_char);
|
||||
int resolve_string_node(const ParseNode& node, common::ObString& target_str);
|
||||
int resolve_field_list_node(const ParseNode& node, ObDataInFileStruct& data_struct_in_file);
|
||||
int resolve_line_list_node(const ParseNode& node, ObDataInFileStruct& data_struct_in_file);
|
||||
int resolve_sys_vars(common::ObIArray<ObVarInfo>& sys_vars);
|
||||
int resolve_default_func(ObRawExpr*& expr);
|
||||
int resolve_default_expr(ObRawExpr*& expr, ObLoadDataStmt& load_stmt, uint64_t column_id);
|
||||
int resolve_subquery_info(common::ObIArray<ObSubQueryInfo>& subquery_info);
|
||||
int build_column_ref_expr(ObQualifiedName& q_name, ObRawExpr*& col_expr);
|
||||
int resolve_column_ref_expr(common::ObIArray<ObQualifiedName>& columns, ObRawExpr*& expr);
|
||||
int check_if_table_exists(uint64_t tenant_id, const common::ObString& db_name, const common::ObString& table_name,
|
||||
bool cte_table_fisrt, uint64_t& table_id);
|
||||
{
|
||||
}
|
||||
virtual int resolve(const ParseNode &parse_tree);
|
||||
int resolve_field_node(const ParseNode &node, const common::ObNameCaseMode case_mode,
|
||||
ObLoadDataStmt &load_stmt);
|
||||
int resolve_user_vars_node(const ParseNode &node, ObLoadDataStmt &load_stmt);
|
||||
int resolve_field_or_var_list_node(const ParseNode &node, const common::ObNameCaseMode case_mode,
|
||||
ObLoadDataStmt &load_stmt);
|
||||
int resolve_empty_field_or_var_list_node(ObLoadDataStmt &load_stmt);
|
||||
int resolve_set_clause(const ParseNode &node, const common::ObNameCaseMode case_mode,
|
||||
ObLoadDataStmt &load_stmt);
|
||||
int resolve_each_set_node(const ParseNode &node, const common::ObNameCaseMode case_mode,
|
||||
ObLoadDataStmt &load_stmt);
|
||||
int resolve_char_node(const ParseNode &node, int32_t &single_char);
|
||||
int resolve_string_node(const ParseNode &node, common::ObString &target_str);
|
||||
int resolve_field_list_node(const ParseNode &node, ObDataInFileStruct &data_struct_in_file);
|
||||
int resolve_line_list_node(const ParseNode &node, ObDataInFileStruct &data_struct_in_file);
|
||||
int resolve_sys_vars(common::ObIArray<ObVarInfo> &sys_vars);
|
||||
int resolve_default_func(ObRawExpr *&expr);
|
||||
int resolve_default_expr(ObRawExpr *&expr, ObLoadDataStmt &load_stmt, uint64_t column_id);
|
||||
int resolve_subquery_info(common::ObIArray<ObSubQueryInfo> &subquery_info);
|
||||
int build_column_ref_expr(ObQualifiedName &q_name, ObRawExpr *&col_expr);
|
||||
int resolve_column_ref_expr(common::ObIArray<ObQualifiedName> &columns, ObRawExpr *&expr);
|
||||
int check_if_table_exists(uint64_t tenant_id, const common::ObString &db_name,
|
||||
const common::ObString &table_name, bool cte_table_fisrt, uint64_t& table_id);
|
||||
int validate_stmt(ObLoadDataStmt* stmt);
|
||||
int resolve_hints(const ParseNode& node);
|
||||
int resolve_hints(const ParseNode &node);
|
||||
|
||||
private:
|
||||
enum ParameterEnum {
|
||||
@ -62,11 +71,12 @@ private:
|
||||
ENUM_OPT_FIELD_OR_VAR,
|
||||
ENUM_OPT_SET_FIELD,
|
||||
ENUM_OPT_HINT,
|
||||
ENUM_OPT_EXTENDED_OPTIONS,
|
||||
ENUM_TOTAL_COUNT
|
||||
};
|
||||
ObStmtScope current_scope_;
|
||||
DISALLOW_COPY_AND_ASSIGN(ObLoadDataResolver);
|
||||
};
|
||||
} // namespace sql
|
||||
} // namespace oceanbase
|
||||
}//sql
|
||||
}//oceanbase
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user