| 176 | */ |
| 177 | |
| 178 | bool |
| 179 | LEX::set_system_variable(enum enum_var_type var_type, |
| 180 | sys_var *sysvar, const Lex_ident_sys_st *base_name, |
| 181 | Item *val) |
| 182 | { |
| 183 | set_var *setvar; |
| 184 | |
| 185 | /* No AUTOCOMMIT from a stored function or trigger. */ |
| 186 | if (spcont && sysvar == Sys_autocommit_ptr) |
| 187 | sphead->m_flags|= sp_head::HAS_SET_AUTOCOMMIT_STMT; |
| 188 | |
| 189 | if (val && val->type() == Item::FIELD_ITEM && |
| 190 | ((Item_field*)val)->table_name.str) |
| 191 | { |
| 192 | my_error(ER_WRONG_TYPE_FOR_VAR, MYF(0), sysvar->name.str); |
| 193 | return TRUE; |
| 194 | } |
| 195 | |
| 196 | if (!(setvar= new (thd->mem_root) set_var(thd, var_type, sysvar, |
| 197 | base_name, val))) |
| 198 | return TRUE; |
| 199 | |
| 200 | return var_list.push_back(setvar, thd->mem_root); |
| 201 | } |
| 202 | |
| 203 | |
| 204 | /** |
nothing calls this directly
no test coverage detected