diff options
author | unknown <bell@sanja.is.com.ua> | 2005-07-29 23:43:07 +0300 |
---|---|---|
committer | unknown <bell@sanja.is.com.ua> | 2005-07-29 23:43:07 +0300 |
commit | 7dafc7336b45c51221260dab8f14218bf33d1a5b (patch) | |
tree | 5e88f7db5459a36b9c59b71245f2c24e3e3ff23e /sql/set_var.cc | |
parent | c7908e787bdd94c53b3e95ab6cb6b3eec322fb45 (diff) | |
parent | 675c4bb48c584dd263934f3774f9e7438a376203 (diff) | |
download | mariadb-git-7dafc7336b45c51221260dab8f14218bf33d1a5b.tar.gz |
Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-5.0
into sanja.is.com.ua:/home/bell/mysql/bk/work-trigger-5.0
mysql-test/r/information_schema.result:
Auto merged
mysql-test/t/mysqldump.test:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_show.cc:
Auto merged
mysql-test/r/mysqldump.result:
merge
sql/sql_trigger.cc:
merge
Diffstat (limited to 'sql/set_var.cc')
-rw-r--r-- | sql/set_var.cc | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/sql/set_var.cc b/sql/set_var.cc index 9526cc79c56..35f1070c4eb 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -3202,29 +3202,49 @@ bool sys_var_thd_table_type::update(THD *thd, set_var *var) Functions to handle sql_mode ****************************************************************************/ -byte *sys_var_thd_sql_mode::value_ptr(THD *thd, enum_var_type type, - LEX_STRING *base) +/* + Make string representation of mode + + SYNOPSIS + thd in thread handler + val in sql_mode value + len out pointer on length of string + + RETURN + pointer to string with sql_mode representation +*/ + +byte *sys_var_thd_sql_mode::symbolic_mode_representation(THD *thd, ulong val, + ulong *len) { - ulong val; char buff[256]; String tmp(buff, sizeof(buff), &my_charset_latin1); tmp.length(0); - val= ((type == OPT_GLOBAL) ? global_system_variables.*offset : - thd->variables.*offset); for (uint i= 0; val; val>>= 1, i++) { if (val & 1) { - tmp.append(enum_names->type_names[i]); + tmp.append(sql_mode_typelib.type_names[i], + sql_mode_typelib.type_lengths[i]); tmp.append(','); } } if (tmp.length()) tmp.length(tmp.length() - 1); + *len= tmp.length(); return (byte*) thd->strmake(tmp.ptr(), tmp.length()); } +byte *sys_var_thd_sql_mode::value_ptr(THD *thd, enum_var_type type, + LEX_STRING *base) +{ + ulong val= ((type == OPT_GLOBAL) ? global_system_variables.*offset : + thd->variables.*offset); + ulong length_unused; + return symbolic_mode_representation(thd, val, &length_unused); +} + void sys_var_thd_sql_mode::set_default(THD *thd, enum_var_type type) { |