Mysql源码学习——打造专属语法(10)
base_name= &component;
component_name= &name;
}
else
{
base_name= &name;
component_name= &component; // Empty string
}
if (!(var= find_sys_var(thd, base_name->str, base_name->length)))
return 0;
if (component.str)
{
if (!var->is_struct())
{
my_error(ER_VARIABLE_IS_NOT_STRUCT, MYF(0), base_name->str);
return 0;
}
}
thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
set_if_smaller(component_name->length, MAX_SYS_VAR_LENGTH);
return new Item_func_get_system_var(var, var_type, component_name,
NULL, 0);
}
由find_sys_var函数不断跟进去,我们跟到了set_var.cc,找到了如下定义:
?
1
static sys_var_chain vars = { NULL, NULL };
系统变量都会挂载在次链上。在文件中,搜索到了version_comment:
?
static sys_var_const_str sys_version_comment(&vars, "version_comment",
MYSQL_COMPILATION_COMMENT);
?
1
#define MYSQL_COMPILATION_COMMENT "Source distribution"
这便是将version_comment加载到vars的链表上。
OK,我们也来加一个自己的系统变量:
?
static sys_var_const_str sys_version_comment(&vars, "version_comment",
MYSQL_COMPILATION_COMMENT);
/**add by nocode */
static sys_var_const_str sys_version_comment_test(&vars, "nocode_test_sysvar",
MYSQL_COMPILATION_NOCODE_TEST_SYSVAR);
相关新闻>>
- 发表评论
-
- 最新评论 更多>>