22 #include <drizzled/error.h>
23 #include <drizzled/function/get_system_var.h>
24 #include <drizzled/session.h>
25 #include <drizzled/sys_var.h>
26 #include <drizzled/sql_lex.h>
30 Item_func_get_system_var::Item_func_get_system_var(sys_var *var_arg, sql_var_t var_type_arg,
31 str_ref component_arg,
const char *name_arg,
size_t name_len_arg)
32 : var(var_arg), var_type(var_type_arg), component(component_arg)
35 set_name(name_arg, name_len_arg);
39 bool Item_func_get_system_var::fix_fields(Session *session, Item **ref)
47 Item *item= var->
item(session, var_type);
51 item->set_name(
name, 0);
57 Item *get_system_var(Session *session, sql_var_t var_type,
str_ref name,
str_ref component)
59 str_ref *base_name, *component_name;
61 if (component.empty())
64 component_name= &component;
68 base_name= &component;
69 component_name= &name;
75 if (not component.empty())
77 my_error(ER_VARIABLE_IS_NOT_STRUCT, MYF(0), base_name->data());
80 session->lex().setCacheable(
false);
82 if (component_name->size() > MAX_SYS_VAR_LENGTH)
83 component_name->assign(component_name->data(), MAX_SYS_VAR_LENGTH);
85 return new Item_func_get_system_var(var, var_type, *component_name, NULL, 0);