add query rewrite system variables into master
This commit is contained in:
@ -284,6 +284,8 @@ enum ObSysVarClassType
|
||||
SYS_VAR_OB_COMPATIBILITY_VERSION = 10176,
|
||||
SYS_VAR_OB_SECURITY_VERSION = 10177,
|
||||
SYS_VAR_CARDINALITY_ESTIMATION_MODEL = 10178,
|
||||
SYS_VAR_QUERY_REWRITE_ENABLED = 10179,
|
||||
SYS_VAR_QUERY_REWRITE_INTEGRITY = 10180,
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@ -279,6 +279,8 @@ namespace share
|
||||
static const char* const OB_SV_COMPATIBILITY_VERSION = "ob_compatibility_version";
|
||||
static const char* const OB_SV_SECURITY_VERSION = "ob_security_version";
|
||||
static const char* const OB_SV_CARDINALITY_ESTIMATION_MODEL = "cardinality_estimation_model";
|
||||
static const char* const OB_SV_QUERY_REWRITE_ENABLED = "query_rewrite_enabled";
|
||||
static const char* const OB_SV_QUERY_REWRITE_INTEGRITY = "query_rewrite_integrity";
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -149,6 +149,17 @@ const char *ObSysVarCardinalityEstimationModel::CARDINALITY_ESTIMATION_MODEL_NAM
|
||||
"FULL",
|
||||
0
|
||||
};
|
||||
const char *ObSysVarQueryRewriteEnabled::QUERY_REWRITE_ENABLED_NAMES[] = {
|
||||
"FALSE",
|
||||
"TRUE",
|
||||
"FORCE",
|
||||
0
|
||||
};
|
||||
const char *ObSysVarQueryRewriteIntegrity::QUERY_REWRITE_INTEGRITY_NAMES[] = {
|
||||
"ENFORCED",
|
||||
"STALE_TOLERATED",
|
||||
0
|
||||
};
|
||||
|
||||
const char *ObSysVarFactory::SYS_VAR_NAMES_SORTED_BY_NAME[] = {
|
||||
"_aggregation_optimization_settings",
|
||||
@ -352,6 +363,8 @@ const char *ObSysVarFactory::SYS_VAR_NAMES_SORTED_BY_NAME[] = {
|
||||
"query_cache_size",
|
||||
"query_cache_type",
|
||||
"query_cache_wlock_invalidate",
|
||||
"query_rewrite_enabled",
|
||||
"query_rewrite_integrity",
|
||||
"read_only",
|
||||
"recyclebin",
|
||||
"regexp_stack_limit",
|
||||
@ -618,6 +631,8 @@ const ObSysVarClassType ObSysVarFactory::SYS_VAR_IDS_SORTED_BY_NAME[] = {
|
||||
SYS_VAR_QUERY_CACHE_SIZE,
|
||||
SYS_VAR_QUERY_CACHE_TYPE,
|
||||
SYS_VAR_QUERY_CACHE_WLOCK_INVALIDATE,
|
||||
SYS_VAR_QUERY_REWRITE_ENABLED,
|
||||
SYS_VAR_QUERY_REWRITE_INTEGRITY,
|
||||
SYS_VAR_READ_ONLY,
|
||||
SYS_VAR_RECYCLEBIN,
|
||||
SYS_VAR_REGEXP_STACK_LIMIT,
|
||||
@ -945,7 +960,9 @@ const char *ObSysVarFactory::SYS_VAR_NAMES_SORTED_BY_ID[] = {
|
||||
"ob_compatibility_control",
|
||||
"ob_compatibility_version",
|
||||
"ob_security_version",
|
||||
"cardinality_estimation_model"
|
||||
"cardinality_estimation_model",
|
||||
"query_rewrite_enabled",
|
||||
"query_rewrite_integrity"
|
||||
};
|
||||
|
||||
bool ObSysVarFactory::sys_var_name_case_cmp(const char *name1, const ObString &name2)
|
||||
@ -1377,6 +1394,8 @@ int ObSysVarFactory::create_all_sys_vars()
|
||||
+ sizeof(ObSysVarObCompatibilityVersion)
|
||||
+ sizeof(ObSysVarObSecurityVersion)
|
||||
+ sizeof(ObSysVarCardinalityEstimationModel)
|
||||
+ sizeof(ObSysVarQueryRewriteEnabled)
|
||||
+ sizeof(ObSysVarQueryRewriteIntegrity)
|
||||
;
|
||||
void *ptr = NULL;
|
||||
if (OB_ISNULL(ptr = allocator_.alloc(total_mem_size))) {
|
||||
@ -3752,6 +3771,24 @@ int ObSysVarFactory::create_all_sys_vars()
|
||||
ptr = (void *)((char *)ptr + sizeof(ObSysVarCardinalityEstimationModel));
|
||||
}
|
||||
}
|
||||
if (OB_SUCC(ret)) {
|
||||
if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarQueryRewriteEnabled())) {
|
||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||
LOG_ERROR("fail to new ObSysVarQueryRewriteEnabled", K(ret));
|
||||
} else {
|
||||
store_buf_[ObSysVarsToIdxMap::get_store_idx(static_cast<int64_t>(SYS_VAR_QUERY_REWRITE_ENABLED))] = sys_var_ptr;
|
||||
ptr = (void *)((char *)ptr + sizeof(ObSysVarQueryRewriteEnabled));
|
||||
}
|
||||
}
|
||||
if (OB_SUCC(ret)) {
|
||||
if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarQueryRewriteIntegrity())) {
|
||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||
LOG_ERROR("fail to new ObSysVarQueryRewriteIntegrity", K(ret));
|
||||
} else {
|
||||
store_buf_[ObSysVarsToIdxMap::get_store_idx(static_cast<int64_t>(SYS_VAR_QUERY_REWRITE_INTEGRITY))] = sys_var_ptr;
|
||||
ptr = (void *)((char *)ptr + sizeof(ObSysVarQueryRewriteIntegrity));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return ret;
|
||||
@ -6655,6 +6692,28 @@ int ObSysVarFactory::create_sys_var(ObIAllocator &allocator_, ObSysVarClassType
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SYS_VAR_QUERY_REWRITE_ENABLED: {
|
||||
void *ptr = NULL;
|
||||
if (OB_ISNULL(ptr = allocator_.alloc(sizeof(ObSysVarQueryRewriteEnabled)))) {
|
||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||
LOG_ERROR("fail to alloc memory", K(ret), K(sizeof(ObSysVarQueryRewriteEnabled)));
|
||||
} else if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarQueryRewriteEnabled())) {
|
||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||
LOG_ERROR("fail to new ObSysVarQueryRewriteEnabled", K(ret));
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SYS_VAR_QUERY_REWRITE_INTEGRITY: {
|
||||
void *ptr = NULL;
|
||||
if (OB_ISNULL(ptr = allocator_.alloc(sizeof(ObSysVarQueryRewriteIntegrity)))) {
|
||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||
LOG_ERROR("fail to alloc memory", K(ret), K(sizeof(ObSysVarQueryRewriteIntegrity)));
|
||||
} else if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarQueryRewriteIntegrity())) {
|
||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||
LOG_ERROR("fail to new ObSysVarQueryRewriteIntegrity", K(ret));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default: {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
|
||||
@ -1904,6 +1904,24 @@ public:
|
||||
inline virtual ObSysVarClassType get_type() const { return SYS_VAR_CARDINALITY_ESTIMATION_MODEL; }
|
||||
inline virtual const common::ObObj &get_global_default_value() const { return ObSysVariables::get_default_value(262); }
|
||||
};
|
||||
class ObSysVarQueryRewriteEnabled : public ObEnumSysVar
|
||||
{
|
||||
public:
|
||||
const static char * QUERY_REWRITE_ENABLED_NAMES[];
|
||||
public:
|
||||
ObSysVarQueryRewriteEnabled() : ObEnumSysVar(QUERY_REWRITE_ENABLED_NAMES, NULL, NULL, NULL, NULL, NULL) {}
|
||||
inline virtual ObSysVarClassType get_type() const { return SYS_VAR_QUERY_REWRITE_ENABLED; }
|
||||
inline virtual const common::ObObj &get_global_default_value() const { return ObSysVariables::get_default_value(263); }
|
||||
};
|
||||
class ObSysVarQueryRewriteIntegrity : public ObEnumSysVar
|
||||
{
|
||||
public:
|
||||
const static char * QUERY_REWRITE_INTEGRITY_NAMES[];
|
||||
public:
|
||||
ObSysVarQueryRewriteIntegrity() : ObEnumSysVar(QUERY_REWRITE_INTEGRITY_NAMES, NULL, NULL, NULL, NULL, NULL) {}
|
||||
inline virtual ObSysVarClassType get_type() const { return SYS_VAR_QUERY_REWRITE_INTEGRITY; }
|
||||
inline virtual const common::ObObj &get_global_default_value() const { return ObSysVariables::get_default_value(264); }
|
||||
};
|
||||
|
||||
|
||||
class ObSysVarFactory
|
||||
@ -1924,7 +1942,7 @@ public:
|
||||
static const common::ObString get_sys_var_name_by_id(ObSysVarClassType sys_var_id);
|
||||
|
||||
const static int64_t MYSQL_SYS_VARS_COUNT = 99;
|
||||
const static int64_t OB_SYS_VARS_COUNT = 164;
|
||||
const static int64_t OB_SYS_VARS_COUNT = 166;
|
||||
const static int64_t ALL_SYS_VARS_COUNT = MYSQL_SYS_VARS_COUNT + OB_SYS_VARS_COUNT;
|
||||
const static int64_t INVALID_MAX_READ_STALE_TIME = -1;
|
||||
|
||||
|
||||
@ -3708,13 +3708,41 @@ static struct VarsInit{
|
||||
ObSysVars[262].alias_ = "OB_SV_CARDINALITY_ESTIMATION_MODEL" ;
|
||||
}();
|
||||
|
||||
[&] (){
|
||||
ObSysVars[263].default_value_ = "1" ;
|
||||
ObSysVars[263].info_ = "Whether to enable the materialized view rewriting" ;
|
||||
ObSysVars[263].name_ = "query_rewrite_enabled" ;
|
||||
ObSysVars[263].data_type_ = ObIntType ;
|
||||
ObSysVars[263].enum_names_ = "[u'FALSE', u'TRUE', u'FORCE']" ;
|
||||
ObSysVars[263].flags_ = ObSysVarFlag::GLOBAL_SCOPE | ObSysVarFlag::SESSION_SCOPE | ObSysVarFlag::NEED_SERIALIZE | ObSysVarFlag::INFLUENCE_PLAN ;
|
||||
ObSysVars[263].id_ = SYS_VAR_QUERY_REWRITE_ENABLED ;
|
||||
cur_max_var_id = MAX(cur_max_var_id, static_cast<int64_t>(SYS_VAR_QUERY_REWRITE_ENABLED)) ;
|
||||
ObSysVarsIdToArrayIdx[SYS_VAR_QUERY_REWRITE_ENABLED] = 263 ;
|
||||
ObSysVars[263].base_value_ = "1" ;
|
||||
ObSysVars[263].alias_ = "OB_SV_QUERY_REWRITE_ENABLED" ;
|
||||
}();
|
||||
|
||||
[&] (){
|
||||
ObSysVars[264].default_value_ = "0" ;
|
||||
ObSysVars[264].info_ = "Control the data integrity of materialized view rewriting" ;
|
||||
ObSysVars[264].name_ = "query_rewrite_integrity" ;
|
||||
ObSysVars[264].data_type_ = ObIntType ;
|
||||
ObSysVars[264].enum_names_ = "[u'ENFORCED', u'STALE_TOLERATED']" ;
|
||||
ObSysVars[264].flags_ = ObSysVarFlag::GLOBAL_SCOPE | ObSysVarFlag::SESSION_SCOPE | ObSysVarFlag::NEED_SERIALIZE | ObSysVarFlag::INFLUENCE_PLAN ;
|
||||
ObSysVars[264].id_ = SYS_VAR_QUERY_REWRITE_INTEGRITY ;
|
||||
cur_max_var_id = MAX(cur_max_var_id, static_cast<int64_t>(SYS_VAR_QUERY_REWRITE_INTEGRITY)) ;
|
||||
ObSysVarsIdToArrayIdx[SYS_VAR_QUERY_REWRITE_INTEGRITY] = 264 ;
|
||||
ObSysVars[264].base_value_ = "0" ;
|
||||
ObSysVars[264].alias_ = "OB_SV_QUERY_REWRITE_INTEGRITY" ;
|
||||
}();
|
||||
|
||||
if (cur_max_var_id >= ObSysVarFactory::OB_MAX_SYS_VAR_ID) {
|
||||
HasInvalidSysVar = true;
|
||||
}
|
||||
}
|
||||
}vars_init;
|
||||
|
||||
static int64_t var_amount = 263;
|
||||
static int64_t var_amount = 265;
|
||||
|
||||
int64_t ObSysVariables::get_all_sys_var_count(){ return ObSysVarFactory::ALL_SYS_VARS_COUNT;}
|
||||
ObSysVarClassType ObSysVariables::get_sys_var_id(int64_t i){ return ObSysVars[i].id_;}
|
||||
|
||||
@ -3756,5 +3756,40 @@
|
||||
"info_cn": "",
|
||||
"background_cn": "",
|
||||
"ref_url": ""
|
||||
},
|
||||
"query_rewrite_enabled": {
|
||||
"id": 10179,
|
||||
"name": "query_rewrite_enabled",
|
||||
"default_value": "1",
|
||||
"base_value": "1",
|
||||
"data_type": "enum",
|
||||
"info": "Whether to enable the materialized view rewriting",
|
||||
"flags": "GLOBAL | SESSION | NEED_SERIALIZE | INFLUENCE_PLAN",
|
||||
"enum_names": [
|
||||
"FALSE",
|
||||
"TRUE",
|
||||
"FORCE"
|
||||
],
|
||||
"publish_version": "431",
|
||||
"info_cn": "",
|
||||
"background_cn": "",
|
||||
"ref_url": ""
|
||||
},
|
||||
"query_rewrite_integrity": {
|
||||
"id": 10180,
|
||||
"name": "query_rewrite_integrity",
|
||||
"default_value": "0",
|
||||
"base_value": "0",
|
||||
"data_type": "enum",
|
||||
"info": "Control the data integrity of materialized view rewriting",
|
||||
"flags": "GLOBAL | SESSION | NEED_SERIALIZE | INFLUENCE_PLAN",
|
||||
"enum_names": [
|
||||
"ENFORCED",
|
||||
"STALE_TOLERATED"
|
||||
],
|
||||
"publish_version": "431",
|
||||
"info_cn": "",
|
||||
"background_cn": "",
|
||||
"ref_url": ""
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user