提交 0bd3fe91 编写于 作者: O obdev 提交者: wangzelin.wzl

Fix some spm bugs

上级 b731519b
......@@ -220,9 +220,9 @@ int ObExprToOutfileRow::extract_fisrt_wchar_from_varhcar(const ObObj &obj, int32
// If the FIELDS ESCAPED BY character is not empty, it is used to prefix the following
// characters on output:
// 1. The FIELDS ESCAPED BY character.
// 2. The FIELDS [OPTIONALLY] ENCLOSED BY character.
// 3. The first character of the FIELDS TERMINATED BY and LINES TERMINATED BY values,
// if the ENCLOSED BY character is empty or unspecified.
// 2. The FIELDS [OPTIONALLY] ENCLOSED BY character.
// 3. The first character of the FIELDS TERMINATED BY and LINES TERMINATED BY values,
// if the ENCLOSED BY character is empty or unspecified.
// 4. ASCII 0 (what is actually written following the escape character is ASCII 0, not a
// zero-valued byte).
// 5. If the FIELDS ESCAPED BY character is empty, no characters are escaped and NULL is output
......
......@@ -55,7 +55,7 @@ int ObPrepareExecutor::execute(ObExecContext &ctx, ObPrepareStmt &stmt)
if (OB_FAIL(ObSQLUtils::calc_const_expr(ctx, stmt.get_prepare_sql(), result, ctx.get_allocator(), params_array))) {
LOG_WARN("failed to calc const expr", K(stmt.get_prepare_sql()), K(ret));
} else if (!result.is_string_type()) {
ret = OB_ERR_UNEXPECTED;
ret = OB_ERR_PARSER_SYNTAX;
LOG_WARN("prepare sql is not a string", K(result), K(ret));
} else {
ObString stmt_name;
......
......@@ -258,7 +258,7 @@ struct ObSpmCacheCtx : public ObILibCacheCtx
spm_force_disable_(false),
has_fixed_plan_to_check_(false),
evolution_plan_type_(OB_PHY_PLAN_UNINITIALIZED),
last_evolution_count_(0)
select_plan_type_(INVALID_TYPE)
{}
enum SpmMode {
MODE_INVALID,
......@@ -281,6 +281,13 @@ struct ObSpmCacheCtx : public ObILibCacheCtx
STAT_ACCEPT_BASELINE_PLAN, // move baeline plan from evolution layer to plan layer
STAT_MAX
};
enum SpmSelectPlanType
{
INVALID_TYPE,
EVO_PLAN,
BASELINE_PLAN,
MAX_TYPE
};
void set_get_normal_mode(uint64_t v) { plan_hash_value_ = v; handle_cache_mode_ = MODE_GET_NORMAL; }
void set_get_offset_mode() { handle_cache_mode_ = MODE_GET_OFFSET; }
void set_get_for_update_mode(uint64_t v) { plan_hash_value_ = v; handle_cache_mode_ = MODE_GET_FOR_UPDATE; }
......@@ -308,7 +315,7 @@ struct ObSpmCacheCtx : public ObILibCacheCtx
bool spm_force_disable_;
bool has_fixed_plan_to_check_;
ObPhyPlanType evolution_plan_type_;
int64_t last_evolution_count_; // for retry
SpmSelectPlanType select_plan_type_; // for retry
};
struct EvolutionTaskResult
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册