42
#include "drizzled/option.h"
43
#include "drizzled/error.h"
44
#include "drizzled/gettext.h"
45
#include "drizzled/tztime.h"
46
#include "drizzled/data_home.h"
47
#include "drizzled/set_var.h"
48
#include "drizzled/session.h"
49
#include "drizzled/sql_base.h"
50
#include "drizzled/lock.h"
51
#include "drizzled/item/uint.h"
52
#include "drizzled/item/null.h"
53
#include "drizzled/item/float.h"
54
#include "drizzled/item/string.h"
55
#include "drizzled/plugin.h"
56
#include "drizzled/version.h"
57
#include "drizzled/strfunc.h"
58
#include "drizzled/internal/m_string.h"
59
#include "drizzled/pthread_globals.h"
60
#include "drizzled/charset.h"
61
#include "drizzled/transaction_services.h"
62
#include "drizzled/constrained_value.h"
63
#include "drizzled/visibility.h"
64
#include "drizzled/plugin/storage_engine.h"
42
#include <drizzled/option.h>
43
#include <drizzled/error.h>
44
#include <drizzled/gettext.h>
45
#include <drizzled/tztime.h>
46
#include <drizzled/data_home.h>
47
#include <drizzled/set_var.h>
48
#include <drizzled/session.h>
49
#include <drizzled/sql_base.h>
50
#include <drizzled/lock.h>
51
#include <drizzled/item/uint.h>
52
#include <drizzled/item/null.h>
53
#include <drizzled/item/float.h>
54
#include <drizzled/item/string.h>
55
#include <drizzled/plugin.h>
56
#include <drizzled/version.h>
57
#include <drizzled/internal/m_string.h>
58
#include <drizzled/pthread_globals.h>
59
#include <drizzled/charset.h>
60
#include <drizzled/transaction_services.h>
61
#include <drizzled/constrained_value.h>
62
#include <drizzled/visibility.h>
63
#include <drizzled/typelib.h>
64
#include <drizzled/plugin/storage_engine.h>
219
225
static sys_var_session_storage_engine sys_storage_engine("storage_engine",
220
226
&drizzle_system_variables::storage_engine);
221
static sys_var_const_str sys_system_time_zone("system_time_zone",
223
227
static sys_var_size_t_ptr sys_table_def_size("table_definition_cache",
224
228
&table_def_size);
225
229
static sys_var_uint64_t_ptr sys_table_cache_size("table_open_cache",
308
312
sys_var_session_uint64_t sys_group_concat_max_len("group_concat_max_len",
309
313
&drizzle_system_variables::group_concat_max_len);
311
sys_var_session_time_zone sys_time_zone("time_zone");
313
315
/* Global read-only variable containing hostname */
314
static sys_var_const_str sys_hostname("hostname", glob_hostname);
316
static sys_var_const_string sys_hostname("hostname", getServerHostname());
318
static sys_var_const_str sys_revid("vc_revid", DRIZZLE7_VC_REVID);
319
static sys_var_const_str sys_branch("vc_branch", DRIZZLE7_VC_BRANCH);
320
static sys_var_size_t_ptr_readonly sys_revno("vc_revno", &revno);
321
static sys_var_size_t_ptr_readonly sys_release_id("vc_release_id", &release_id);
316
323
bool sys_var::check(Session *session, set_var *var)
1161
1168
return (unsigned char*) &session->sys_var_tmp.uint64_t_value;
1165
bool sys_var_session_time_zone::update(Session *session, set_var *var)
1167
char buff[MAX_TIME_ZONE_NAME_LENGTH];
1168
String str(buff, sizeof(buff), &my_charset_utf8_general_ci);
1169
String *res= var->value->val_str(&str);
1171
Time_zone *tmp= my_tz_find(session, res);
1174
boost::throw_exception(invalid_option_value(var->var->getName()) << invalid_value(std::string(res ? res->c_ptr() : "NULL")));
1177
/* We are using Time_zone object found during check() phase. */
1178
if (var->type == OPT_GLOBAL)
1180
boost::mutex::scoped_lock scopedLock(session->catalog().systemVariableLock());
1181
global_system_variables.time_zone= tmp;
1185
session->variables.time_zone= tmp;
1192
unsigned char *sys_var_session_time_zone::value_ptr(Session *session,
1197
We can use ptr() instead of c_ptr() here because String contaning
1198
time zone name is guaranteed to be zero ended.
1200
if (type == OPT_GLOBAL)
1201
return (unsigned char *)(global_system_variables.time_zone->get_name()->ptr());
1205
This is an ugly fix for replication: we don't replicate properly queries
1206
invoking system variables' values to update tables; but
1207
CONVERT_TZ(,,@@session.time_zone) is so popular that we make it
1208
replicable (i.e. we tell the binlog code to store the session
1209
timezone). If it's the global value which was used we can't replicate
1210
(binlog code stores session value only).
1212
return (unsigned char *)(session->variables.time_zone->get_name()->ptr());
1217
void sys_var_session_time_zone::set_default(Session *session, sql_var_t type)
1219
boost::mutex::scoped_lock scopedLock(session->catalog().systemVariableLock());
1220
if (type == OPT_GLOBAL)
1222
if (default_tz_name)
1224
String str(default_tz_name, &my_charset_utf8_general_ci);
1226
We are guaranteed to find this time zone since its existence
1227
is checked during start-up.
1229
global_system_variables.time_zone= my_tz_find(session, &str);
1232
global_system_variables.time_zone= my_tz_SYSTEM;
1235
session->variables.time_zone= global_system_variables.time_zone;
1240
1171
bool sys_var_session_lc_time_names::update(Session *session, set_var *var)
1242
1173
MY_LOCALE *locale_match;
1499
1430
SystemVariableMap::const_iterator iter= system_variable_map.begin();
1500
1431
while (iter != system_variable_map.end())
1502
sys_var *var= (*iter).second;
1433
sys_var *var= iter->second;
1503
1434
show->name= var->getName().c_str();
1504
1435
show->value= (char*) var;
1505
1436
show->type= SHOW_SYS;
1522
1453
lower_name.begin(), ::tolower);
1524
1455
/* this fails if there is a conflicting variable name. */
1525
if (system_variable_map.find(lower_name) != system_variable_map.end())
1456
if (system_variable_map.count(lower_name))
1527
1458
errmsg_printf(error::ERROR, _("Variable named %s already exists!\n"),
1528
1459
var->getName().c_str());
1566
1497
add_sys_var_to_list(&sys_back_log, my_long_options);
1567
1498
add_sys_var_to_list(&sys_basedir, my_long_options);
1568
1499
add_sys_var_to_list(&sys_big_selects, my_long_options);
1500
add_sys_var_to_list(&sys_branch, my_long_options);
1569
1501
add_sys_var_to_list(&sys_buffer_results, my_long_options);
1570
1502
add_sys_var_to_list(&sys_bulk_insert_buff_size, my_long_options);
1571
1503
add_sys_var_to_list(&sys_collation_server, my_long_options);
1600
1532
add_sys_var_to_list(&sys_range_alloc_block_size, my_long_options);
1601
1533
add_sys_var_to_list(&sys_read_buff_size, my_long_options);
1602
1534
add_sys_var_to_list(&sys_read_rnd_buff_size, my_long_options);
1535
add_sys_var_to_list(&sys_release_id, my_long_options);
1603
1536
add_sys_var_to_list(&sys_replicate_query, my_long_options);
1537
add_sys_var_to_list(&sys_revid, my_long_options);
1538
add_sys_var_to_list(&sys_revno, my_long_options);
1604
1539
add_sys_var_to_list(&sys_scheduler, my_long_options);
1605
1540
add_sys_var_to_list(&sys_secure_file_priv, my_long_options);
1606
1541
add_sys_var_to_list(&sys_select_limit, my_long_options);
1609
1544
add_sys_var_to_list(&sys_sql_notes, my_long_options);
1610
1545
add_sys_var_to_list(&sys_sql_warnings, my_long_options);
1611
1546
add_sys_var_to_list(&sys_storage_engine, my_long_options);
1612
add_sys_var_to_list(&sys_system_time_zone, my_long_options);
1613
1547
add_sys_var_to_list(&sys_table_cache_size, my_long_options);
1614
1548
add_sys_var_to_list(&sys_table_def_size, my_long_options);
1615
1549
add_sys_var_to_list(&sys_table_lock_wait_timeout, my_long_options);
1616
1550
add_sys_var_to_list(&sys_thread_stack_size, my_long_options);
1617
add_sys_var_to_list(&sys_time_zone, my_long_options);
1618
1551
add_sys_var_to_list(&sys_timed_mutexes, my_long_options);
1619
1552
add_sys_var_to_list(&sys_timestamp, my_long_options);
1620
1553
add_sys_var_to_list(&sys_tmp_table_size, my_long_options);