summaryrefslogtreecommitdiff
path: root/sql/set_var.cc
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2005-07-29 23:43:07 +0300
committerunknown <bell@sanja.is.com.ua>2005-07-29 23:43:07 +0300
commit7dafc7336b45c51221260dab8f14218bf33d1a5b (patch)
tree5e88f7db5459a36b9c59b71245f2c24e3e3ff23e /sql/set_var.cc
parentc7908e787bdd94c53b3e95ab6cb6b3eec322fb45 (diff)
parent675c4bb48c584dd263934f3774f9e7438a376203 (diff)
downloadmariadb-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.cc32
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)
{