diff options
author | unknown <gluh@gluh.mysql.r18.ru> | 2003-06-19 14:02:19 +0500 |
---|---|---|
committer | unknown <gluh@gluh.mysql.r18.ru> | 2003-06-19 14:02:19 +0500 |
commit | c77b461566b287a0ee93ae0fc0eb690adbc7ab04 (patch) | |
tree | e791f002cd3e313d2564441aa8afebf1b8b6ce0d | |
parent | 346f424d501d850688fa708976c1d567bd6367a0 (diff) | |
download | mariadb-git-c77b461566b287a0ee93ae0fc0eb690adbc7ab04.tar.gz |
SCRUM
Task ID 894:
Backport default_week_format variable to 4.0
mysql-test/r/func_time.result:
Backport default_week_format variable to 4.0
mysql-test/t/func_time.test:
Backport default_week_format variable to 4.0
sql/mysqld.cc:
Backport default_week_format variable to 4.0
sql/set_var.cc:
Backport default_week_format variable to 4.0
sql/sql_class.h:
Backport default_week_format variable to 4.0
sql/sql_yacc.yy:
Backport default_week_format variable to 4.0
-rw-r--r-- | mysql-test/r/func_time.result | 5 | ||||
-rw-r--r-- | mysql-test/t/func_time.test | 4 | ||||
-rw-r--r-- | sql/mysqld.cc | 8 | ||||
-rw-r--r-- | sql/set_var.cc | 4 | ||||
-rw-r--r-- | sql/sql_class.h | 1 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 6 |
6 files changed, 26 insertions, 2 deletions
diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result index 06c0be86667..58a05a2336f 100644 --- a/mysql-test/r/func_time.result +++ b/mysql-test/r/func_time.result @@ -96,6 +96,11 @@ week(19981231,2) week(19981231,3) week(20000101,2) week(20000101,3) select week(20001231,2),week(20001231,3); week(20001231,2) week(20001231,3) 1 52 +set default_week_format = 2; +select week(20001231),week(20001231,2),week(20001231,0); +week(20001231) week(20001231,2) week(20001231,0) +1 1 53 +set default_week_format = 0; select date_format('1998-12-31','%x-%v'),date_format('1999-01-01','%x-%v'); date_format('1998-12-31','%x-%v') date_format('1999-01-01','%x-%v') 1998-53 1998-53 diff --git a/mysql-test/t/func_time.test b/mysql-test/t/func_time.test index 3057729ab96..a51869e7d76 100644 --- a/mysql-test/t/func_time.test +++ b/mysql-test/t/func_time.test @@ -39,6 +39,10 @@ select yearweek("2000-01-06",1) as '2000', yearweek("2001-01-06",1) as '2001', y select week(19981231,2), week(19981231,3), week(20000101,2), week(20000101,3); select week(20001231,2),week(20001231,3); +set default_week_format = 2; +select week(20001231),week(20001231,2),week(20001231,0); +set default_week_format = 0; + select date_format('1998-12-31','%x-%v'),date_format('1999-01-01','%x-%v'); select date_format('1999-12-31','%x-%v'),date_format('2000-01-01','%x-%v'); diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 0f3500248c0..2e6e226b18e 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -3179,7 +3179,8 @@ enum options { OPT_BDB_CACHE_SIZE, OPT_BDB_LOG_BUFFER_SIZE, OPT_BDB_MAX_LOCK, - OPT_ERROR_LOG_FILE + OPT_ERROR_LOG_FILE, + OPT_DEFAULT_WEEK_FORMAT }; @@ -3988,6 +3989,11 @@ replicating a LOAD DATA INFILE command", (gptr*) &global_system_variables.net_wait_timeout, (gptr*) &max_system_variables.net_wait_timeout, 0, GET_ULONG, REQUIRED_ARG, NET_WAIT_TIMEOUT, 1, LONG_TIMEOUT, 0, 1, 0}, + { "default-week-format", OPT_DEFAULT_WEEK_FORMAT, + "The default week format used by WEEK() functions.", + (gptr*) &global_system_variables.default_week_format, + (gptr*) &max_system_variables.default_week_format, + 0, GET_ULONG, REQUIRED_ARG, 0, 0, 3L, 0, 1, 0}, {0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0} }; diff --git a/sql/set_var.cc b/sql/set_var.cc index 1da187598c4..32603ec51d9 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -296,6 +296,8 @@ static sys_var_slave_skip_counter sys_slave_skip_counter("sql_slave_skip_counter static sys_var_rand_seed1 sys_rand_seed1("rand_seed1"); static sys_var_rand_seed2 sys_rand_seed2("rand_seed2"); +static sys_var_thd_ulong sys_default_week_format("default_week_format", + &SV::default_week_format); /* List of all variables for initialisation and storage in hash @@ -316,6 +318,7 @@ sys_var *sys_variables[]= &sys_bulk_insert_buff_size, &sys_concurrent_insert, &sys_connect_timeout, + &sys_default_week_format, &sys_convert_charset, &sys_delay_key_write, &sys_delayed_insert_limit, @@ -421,6 +424,7 @@ struct show_var_st init_vars[]= { {sys_connect_timeout.name, (char*) &sys_connect_timeout, SHOW_SYS}, {sys_convert_charset.name, (char*) &sys_convert_charset, SHOW_SYS}, {"datadir", mysql_real_data_home, SHOW_CHAR}, + {"default_week_format", (char*) &sys_default_week_format, SHOW_SYS}, {sys_delay_key_write.name, (char*) &sys_delay_key_write, SHOW_SYS}, {sys_delayed_insert_limit.name, (char*) &sys_delayed_insert_limit,SHOW_SYS}, {sys_delayed_insert_timeout.name, (char*) &sys_delayed_insert_timeout, SHOW_SYS}, diff --git a/sql/sql_class.h b/sql/sql_class.h index 9857774fb84..a8a24451ecc 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -309,6 +309,7 @@ struct system_variables ulong tmp_table_size; ulong tx_isolation; ulong table_type; + ulong default_week_format; my_bool log_warnings; my_bool low_priority_updates; diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 4a41ad32dcc..0ff09a52a9e 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -2002,7 +2002,11 @@ simple_expr: | USER '(' ')' { $$= new Item_func_user(); current_thd->safe_to_cache_query=0; } | WEEK_SYM '(' expr ')' - { $$= new Item_func_week($3,new Item_int((char*) "0",0,1)); } + { + LEX *lex=Lex; + $$= new Item_func_week($3,new Item_int((char*) "0", + lex->thd->variables.default_week_format,1)); + } | WEEK_SYM '(' expr ',' expr ')' { $$= new Item_func_week($3,$5); } | YEAR_SYM '(' expr ')' |