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/typelib.h>
65
#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/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"
226
219
static sys_var_session_storage_engine sys_storage_engine("storage_engine",
227
220
&drizzle_system_variables::storage_engine);
221
static sys_var_const_str sys_system_time_zone("system_time_zone",
228
223
static sys_var_size_t_ptr sys_table_def_size("table_definition_cache",
229
224
&table_def_size);
230
225
static sys_var_uint64_t_ptr sys_table_cache_size("table_open_cache",
313
308
sys_var_session_uint64_t sys_group_concat_max_len("group_concat_max_len",
314
309
&drizzle_system_variables::group_concat_max_len);
311
sys_var_session_time_zone sys_time_zone("time_zone");
316
313
/* Global read-only variable containing hostname */
317
static sys_var_const_string sys_hostname("hostname", getServerHostname());
319
static sys_var_const_str sys_revid("vc_revid", DRIZZLE7_VC_REVID);
320
static sys_var_const_str sys_branch("vc_branch", DRIZZLE7_VC_BRANCH);
321
static sys_var_size_t_ptr_readonly sys_revno("vc_revno", &revno);
322
static sys_var_size_t_ptr_readonly sys_release_id("vc_release_id", &release_id);
314
static sys_var_const_str sys_hostname("hostname", glob_hostname);
324
316
bool sys_var::check(Session *session, set_var *var)
1169
1161
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;
1172
1240
bool sys_var_session_lc_time_names::update(Session *session, set_var *var)
1174
1242
MY_LOCALE *locale_match;
1498
1566
add_sys_var_to_list(&sys_back_log, my_long_options);
1499
1567
add_sys_var_to_list(&sys_basedir, my_long_options);
1500
1568
add_sys_var_to_list(&sys_big_selects, my_long_options);
1501
add_sys_var_to_list(&sys_branch, my_long_options);
1502
1569
add_sys_var_to_list(&sys_buffer_results, my_long_options);
1503
1570
add_sys_var_to_list(&sys_bulk_insert_buff_size, my_long_options);
1504
1571
add_sys_var_to_list(&sys_collation_server, my_long_options);
1533
1600
add_sys_var_to_list(&sys_range_alloc_block_size, my_long_options);
1534
1601
add_sys_var_to_list(&sys_read_buff_size, my_long_options);
1535
1602
add_sys_var_to_list(&sys_read_rnd_buff_size, my_long_options);
1536
add_sys_var_to_list(&sys_release_id, my_long_options);
1537
1603
add_sys_var_to_list(&sys_replicate_query, my_long_options);
1538
add_sys_var_to_list(&sys_revid, my_long_options);
1539
add_sys_var_to_list(&sys_revno, my_long_options);
1540
1604
add_sys_var_to_list(&sys_scheduler, my_long_options);
1541
1605
add_sys_var_to_list(&sys_secure_file_priv, my_long_options);
1542
1606
add_sys_var_to_list(&sys_select_limit, my_long_options);
1545
1609
add_sys_var_to_list(&sys_sql_notes, my_long_options);
1546
1610
add_sys_var_to_list(&sys_sql_warnings, my_long_options);
1547
1611
add_sys_var_to_list(&sys_storage_engine, my_long_options);
1612
add_sys_var_to_list(&sys_system_time_zone, my_long_options);
1548
1613
add_sys_var_to_list(&sys_table_cache_size, my_long_options);
1549
1614
add_sys_var_to_list(&sys_table_def_size, my_long_options);
1550
1615
add_sys_var_to_list(&sys_table_lock_wait_timeout, my_long_options);
1551
1616
add_sys_var_to_list(&sys_thread_stack_size, my_long_options);
1617
add_sys_var_to_list(&sys_time_zone, my_long_options);
1552
1618
add_sys_var_to_list(&sys_timed_mutexes, my_long_options);
1553
1619
add_sys_var_to_list(&sys_timestamp, my_long_options);
1554
1620
add_sys_var_to_list(&sys_tmp_table_size, my_long_options);