Browse Source

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 file bootstrapping wasn't initialized
  and starting time defaulted to 0. This later used value by the Now-
  item and is translated to 1970-01-01 11:00:00.
- marking the time with thd->set_time() before the call to 
  mysql_parse resolves this issue.


mysql-test/r/init_file.result:
  Appended test case
mysql-test/std_data/init_file.dat:
  Appended test case
mysql-test/t/init_file.test:
  Appended test case
pull/374/head
unknown 19 years ago
parent
commit
114e5b8ddb
  1. 7
      mysql-test/r/init_file.result
  2. 8
      mysql-test/std_data/init_file.dat
  3. 9
      mysql-test/t/init_file.test
  4. 1
      sql/sql_parse.cc

7
mysql-test/r/init_file.result

@ -1,2 +1,9 @@
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

8
mysql-test/std_data/init_file.dat

@ -1 +1,9 @@
select * from mysql.user as t1, mysql.user as t2, mysql.user as t3;
#
# 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() );

9
mysql-test/t/init_file.test

@ -6,5 +6,14 @@
# mysql-test/t/init_file-master.opt for the actual test
#
#
# Bug#23240 --init-file statements with NOW() reports '1970-01-01 11:00:00'as the date time
#
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);
DROP DATABASE init_file;
--echo ok
--echo End of 4.1 tests

1
sql/sql_parse.cc

@ -1175,6 +1175,7 @@ extern "C" pthread_handler_decl(handle_bootstrap,arg)
free_root(thd->mem_root,MYF(MY_KEEP_PREALLOC));
break;
}
thd->set_time();
mysql_parse(thd,thd->query,length);
close_thread_tables(thd); // Free tables
if (thd->is_fatal_error)

Loading…
Cancel
Save