Commit a4827679 authored by unknown's avatar unknown
Browse files

Bug#23240 --init_file statements with NOW() reports '1970-01-01 11:00:00'as the date time

- Starting time of a query sent by bootstrapping wasn't initialized
  and starting time defaulted to 0. This later used value by NOW-
  item and was translated to 1970-01-01 11:00:00.
- Marketing the time with thd->set_time() before the call to
  mysql_parse resolves this issue.
- set_time was refactored to be part of the thd->init_for_queries-
  process.


mysql-test/r/init_file.result:
  Manual merge from 4.1
mysql-test/std_data/init_file.dat:
  Manual merge from 4.1
sql/sql_class.cc:
  - Moved set_time into init_for_queries process.
parent 663b9cad
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
INSERT INTO init_file.startup VALUES ( NOW() );
SELECT * INTO @X FROM init_file.startup limit 0,1;
SELECT * INTO @Y FROM init_file.startup limit 1,1;
SELECT YEAR(@X)-YEAR(@Y);
YEAR(@X)-YEAR(@Y)
0
DROP DATABASE init_file;
ok
end of 4.1 tests
select * from t1;
+9 −0
Original line number Diff line number Diff line
@@ -27,3 +27,12 @@ insert into t2 values (11), (13);
drop procedure p1;
drop function f1;
drop view v1;

#
# Bug#23240 --init-file statements with NOW() reports '1970-01-01 11:00:00'as the date time
#
CREATE DATABASE IF NOT EXISTS init_file;
CREATE TABLE IF NOT EXISTS init_file.startup ( startdate DATETIME );
INSERT INTO init_file.startup VALUES ( NOW() );

+1 −0
Original line number Diff line number Diff line
@@ -317,6 +317,7 @@ void THD::init(void)

void THD::init_for_queries()
{
  set_time(); 
  ha_enable_transaction(this,TRUE);

  reset_root_defaults(mem_root, variables.query_alloc_block_size,
+1 −2
Original line number Diff line number Diff line
@@ -1160,7 +1160,6 @@ pthread_handler_t handle_one_connection(void *arg)
    thd->version= refresh_version;
    thd->proc_info= 0;
    thd->command= COM_SLEEP;
    thd->set_time();
    thd->init_for_queries();

    if (sys_init_connect.value_length && !(sctx->master_access & SUPER_ACL))
@@ -1176,7 +1175,6 @@ pthread_handler_t handle_one_connection(void *arg)
        sql_print_warning("%s", net->last_error);
      }
      thd->proc_info=0;
      thd->set_time();
      thd->init_for_queries();
    }

@@ -1306,6 +1304,7 @@ pthread_handler_t handle_bootstrap(void *arg)
      mode we have only one thread.
    */
    thd->query_id=next_query_id();
    thd->set_time();
    mysql_parse(thd,thd->query,length);
    close_thread_tables(thd);			// Free tables
    if (thd->is_fatal_error)