[FEAT MERGE]:Oracle Json Supported

This commit is contained in:
obdev
2023-01-28 15:52:29 +08:00
committed by ob-robot
parent 274e68514d
commit bbb017266b
197 changed files with 30520 additions and 2252 deletions

View File

@ -56,6 +56,8 @@ public:
bool is_contains_assignment() {return is_contains_assignment_;}
void set_contains_assignment(bool v) {is_contains_assignment_ = v;}
static int malloc_new_specified_type_node(common::ObIAllocator &allocator, ObString col_name, ParseNode *col_node, ObItemType type);
int check_first_node(const ParseNode *node);
static int check_sys_func(ObQualifiedName &q_name, bool &is_sys_func);
static int check_pl_udf(ObQualifiedName &q_name, const ObSQLSessionInfo *session_info,
@ -109,7 +111,27 @@ private:
int process_fun_interval_node(const ParseNode *node, ObRawExpr *&expr);
int process_isnull_node(const ParseNode *node, ObRawExpr *&expr);
int process_lnnvl_node(const ParseNode *node, ObRawExpr *&expr);
const static uint8_t OB_JSON_TYPE_MISSING_DATA = 4;
const static uint8_t OB_JSON_TYPE_EXTRA_DATA = 5;
const static uint8_t OB_JSON_TYPE_TYPE_ERROR = 6;
enum {
OPT_JSON_VALUE,
OPT_JSON_QUERY,
OPT_JSON_OBJECT,
OPT_JSON_ARRAY,
};
int remove_strict_opt_in_pl(ParseNode *node, int8_t expr_flag);
int remove_format_json_opt_in_pl(ParseNode *node, int8_t expr_flag);
int process_json_value_node(const ParseNode *node, ObRawExpr *&expr);
int pre_check_json_path_valid(const ParseNode *node);
int process_ora_json_object_node(const ParseNode *node, ObRawExpr *&expr);
int process_is_json_node(const ParseNode *node, ObRawExpr *&expr);
int process_json_equal_node(const ParseNode *node, ObRawExpr *&expr);
int process_json_query_node(const ParseNode *node, ObRawExpr *&expr);
int process_json_exists_node(const ParseNode *node, ObRawExpr *&expr);
int process_json_array_node(const ParseNode *node, ObRawExpr *&expr);
int process_json_mergepatch_node(const ParseNode *node, ObRawExpr *&expr);
int process_fun_sys_node(const ParseNode *node, ObRawExpr *&expr);
int process_dll_udf_node(const ParseNode *node, ObRawExpr *&expr);
int process_agg_udf_node(const ParseNode *node,
@ -176,6 +198,7 @@ private:
const bool has_frame);
int convert_keep_aggr_to_common_aggr(ObAggFunRawExpr *&agg_expr);
int expand_node(common::ObIAllocator &allocator, ParseNode *node, int p, ObVector<const ParseNode*> &arr);
static int not_int_check(const ObRawExpr *expr);
static int not_row_check(const ObRawExpr *expr);
static int param_not_row_check(const ObRawExpr *expr);