[FEAT MERGE] Solidify session vars for functional index

This commit is contained in:
2149
2023-12-12 06:42:36 +00:00
committed by ob-robot
parent db82b0b5cd
commit 58aad590f1
189 changed files with 3671 additions and 1554 deletions

View File

@ -251,6 +251,20 @@ public:
const ObTableSchema* new_table_schema,
const bool sequence_allowed,
ObDMLResolver *dml_resolver,
const ObSchemaChecker *schema_checker = NULL,
const ObResolverUtils::PureFunctionCheckStatus
check_status = ObResolverUtils::DISABLE_CHECK,
const bool need_check_simple_column = true,
bool use_def_collation = false,
ObCollationType connection_collation = CS_TYPE_INVALID);
static int build_generated_column_expr(const common::ObString &expr_str,
ObRawExprFactory &expr_factory,
const ObSQLSessionInfo &session_info,
ObRawExpr *&expr,
common::ObIArray<ObQualifiedName> &columns,
const ObTableSchema* new_table_schema,
const bool sequence_allowed,
ObDMLResolver *dml_resolver,
const ObSchemaChecker *schema_checker = NULL,
const ObResolverUtils::PureFunctionCheckStatus
check_status = ObResolverUtils::DISABLE_CHECK,
@ -258,6 +272,8 @@ public:
static int build_generated_column_expr(const common::ObString &expr_str,
ObRawExprFactory &expr_factory,
const ObSQLSessionInfo &session_info,
ObSQLMode sql_mode,
ObCollationType connection_collation,
ObRawExpr *&expr,
common::ObIArray<ObQualifiedName> &columns,
const ObTableSchema* new_table_schema,
@ -318,7 +334,9 @@ public:
const ObSQLSessionInfo &session,
const share::schema::ObTableSchema &table_schema,
const share::schema::ObColumnSchemaV2 &gen_col_schema,
ObRawExpr *&expr);
ObRawExpr *&expr,
const ObLocalSessionVar *local_vars = NULL,
int64_t local_var_id = OB_INVALID_INDEX_INT64);
static int build_rls_predicate_expr(const common::ObString &expr_str,
ObRawExprFactory &expr_factory,
const ObSQLSessionInfo &session_info,
@ -354,7 +372,9 @@ public:
common::ObIArray<ObUDFInfo> &udf_info,
common::ObIArray<ObOpRawExpr*> &op_exprs,
bool is_prepare_protocol/*= false*/,
TgTimingEvent tg_timing_event = TgTimingEvent::TG_TIMING_EVENT_INVALID);
TgTimingEvent tg_timing_event = TgTimingEvent::TG_TIMING_EVENT_INVALID,
bool use_def_collation = false,
ObCollationType def_collation = CS_TYPE_INVALID);
static bool is_same_raw_expr(const ObRawExpr *src, const ObRawExpr *dst);
/// replace all `from' to `to' in the raw_expr
static int replace_all_ref_column(ObRawExpr *&raw_expr, const common::ObIArray<ObRawExpr *> &exprs, int64_t& offset);
@ -443,7 +463,9 @@ public:
ObRawExpr &expr,
const ObExprResType &dst_type,
const ObCastMode &cm,
ObRawExpr *&new_expr);
ObRawExpr *&new_expr,
const ObLocalSessionVar *local_vars = NULL,
int64_t local_var_id = OB_INVALID_INDEX_INT64);
static int implict_cast_pl_udt_to_sql_udt(ObRawExprFactory *expr_factory,
const ObSQLSessionInfo *session,
@ -463,7 +485,9 @@ public:
ObSysFunRawExpr *&func_expr,
const ObSQLSessionInfo *session_info,
bool use_def_cm = true,
ObCastMode cm = CM_NONE);
ObCastMode cm = CM_NONE,
const ObLocalSessionVar *local_vars = NULL,
int64_t local_var_id = OB_INVALID_INDEX_INT64);
static void need_extra_cast(const ObExprResType &src_type,
const ObExprResType &dst_type,
bool &need_extra_cast_for_src_type,
@ -542,25 +566,32 @@ public:
static int build_trim_expr(const share::schema::ObColumnSchemaV2 *column_schema,
ObRawExprFactory &expr_factory,
const ObSQLSessionInfo *session_info,
ObRawExpr *&expr);
ObRawExpr *&expr,
const ObLocalSessionVar *local_vars = NULL,
int64_t local_var_id = OB_INVALID_INDEX_INT64);
static bool need_column_conv(const ColumnItem &column, ObRawExpr &expr);
static int build_pad_expr(ObRawExprFactory &expr_factory,
bool is_char,
const share::schema::ObColumnSchemaV2 *column_schema,
ObRawExpr *&expr,
const sql::ObSQLSessionInfo *session_info);
const sql::ObSQLSessionInfo *session_info,
const ObLocalSessionVar *local_vars = NULL,
int64_t local_var_id = OB_INVALID_INDEX_INT64);
static bool need_column_conv(const ObExprResType &expected_type, const ObRawExpr &expr);
// 此方法请谨慎使用,会丢失enum类型的 enum_set_values
static int build_column_conv_expr(ObRawExprFactory &expr_factory,
const share::schema::ObColumnSchemaV2 *column_schema,
ObRawExpr *&expr,
const sql::ObSQLSessionInfo *session_info);
const sql::ObSQLSessionInfo *session_info,
const ObLocalSessionVar *local_vars = NULL);
static int build_column_conv_expr(ObRawExprFactory &expr_factory,
common::ObIAllocator &allocator,
const ObColumnRefRawExpr &col_expr,
ObRawExpr *&expr,
const ObSQLSessionInfo *session_info,
bool is_generated_column = false);
bool is_generated_column = false,
const ObLocalSessionVar *local_vars = NULL,
int64_t local_var_id = OB_INVALID_INDEX_INT64);
static int build_column_conv_expr(const ObSQLSessionInfo *session_info,
ObRawExprFactory &expr_factory,
const common::ObObjType &type,
@ -571,7 +602,9 @@ public:
const common::ObIArray<common::ObString> *type_infos,
ObRawExpr *&expr,
bool is_in_pl = false,
bool is_generated_column = false);
bool is_generated_column = false,
const ObLocalSessionVar *local_vars = NULL,
int64_t local_var_id = OB_INVALID_INDEX_INT64);
static int build_var_int_expr(ObRawExprFactory &expr_factory,
ObConstRawExpr *&expr);
static int build_default_expr(ObRawExprFactory &expr_factory,
@ -1151,6 +1184,10 @@ public:
const ObSQLSessionInfo *session_info,
ObAggFunRawExpr *&expr);
static int extract_local_vars_for_gencol(ObRawExpr *expr,
const ObSQLMode sql_mode,
ObColumnSchemaV2 &gen_col);
private :
static int create_real_cast_expr(ObRawExprFactory &expr_factory,
ObRawExpr *src_expr,