mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Merge remote-tracking branch 'origin/10.2' into bb-10.2-ext
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
include/show_binlog_events.inc
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # CREATE DATABASE IF NOT EXISTS client_test_db
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # use `client_test_db`; create or replace table t1 (t time, d date, dt datetime,ts timestamp)
|
||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||
master-bin.000001 # Query # # use `client_test_db`; INSERT INTO t1 VALUES (TIMESTAMP'0000-00-00 00:00:00', TIMESTAMP'0000-00-00 00:00:00', TIMESTAMP'0000-00-00 00:00:00', TIMESTAMP'0000-00-00 00:00:00')
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||
master-bin.000001 # Query # # use `client_test_db`; INSERT INTO t1 VALUES (DATE'0000-00-00', DATE'0000-00-00', DATE'0000-00-00', DATE'0000-00-00')
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||
master-bin.000001 # Query # # use `client_test_db`; INSERT INTO t1 VALUES (TIME'00:00:00', TIME'00:00:00', TIME'00:00:00', TIME'00:00:00')
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # use `client_test_db`; DROP TABLE `t1` /* generated by server */
|
||||
master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # DROP DATABASE IF EXISTS client_test_db
|
@@ -0,0 +1,7 @@
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_binlog_format_statement.inc
|
||||
|
||||
--exec $MYSQL_CLIENT_TEST test_datetime_ranges_mdev15289 > $MYSQLTEST_VARDIR/log/binlog_stm_datetime_ranges_mysql_client_test.out.log 2>&1
|
||||
|
||||
--let $binlog_file = LAST
|
||||
source include/show_binlog_events.inc;
|
@@ -3965,7 +3965,7 @@ void Item_param::set_time(MYSQL_TIME *tm, timestamp_type time_type,
|
||||
ErrConvTime str(&value.time);
|
||||
make_truncated_value_warning(current_thd, Sql_condition::WARN_LEVEL_WARN,
|
||||
&str, time_type, 0);
|
||||
set_zero_time(&value.time, MYSQL_TIMESTAMP_ERROR);
|
||||
set_zero_time(&value.time, time_type);
|
||||
}
|
||||
maybe_null= 0;
|
||||
null_value= 0;
|
||||
|
@@ -12403,6 +12403,119 @@ static void test_datetime_ranges()
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
This test is used in:
|
||||
mysql-test/suite/binlog/binlog_stm_datetime_ranges_mdev15289.test
|
||||
*/
|
||||
static void test_datetime_ranges_mdev15289()
|
||||
{
|
||||
const char *stmt_text;
|
||||
int rc, i;
|
||||
MYSQL_STMT *stmt;
|
||||
MYSQL_BIND my_bind[4];
|
||||
MYSQL_TIME tm[4];
|
||||
|
||||
myheader("test_datetime_ranges_mdev15289");
|
||||
|
||||
stmt_text= "SET sql_mode=''";
|
||||
rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
|
||||
myquery(rc);
|
||||
|
||||
stmt_text= "create or replace table t1 "
|
||||
"(t time, d date, dt datetime,ts timestamp)";
|
||||
rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
|
||||
myquery(rc);
|
||||
|
||||
stmt= mysql_simple_prepare(mysql, "INSERT INTO t1 VALUES (?, ?, ?, ?)");
|
||||
check_stmt(stmt);
|
||||
verify_param_count(stmt, 4);
|
||||
|
||||
/*** Testing DATETIME ***/
|
||||
bzero((char*) my_bind, sizeof(my_bind));
|
||||
for (i= 0; i < 4; i++)
|
||||
{
|
||||
my_bind[i].buffer_type= MYSQL_TYPE_DATETIME;
|
||||
my_bind[i].buffer= &tm[i];
|
||||
}
|
||||
rc= mysql_stmt_bind_param(stmt, my_bind);
|
||||
check_execute(stmt, rc);
|
||||
|
||||
/* Notice bad year */
|
||||
tm[0].year= 20010; tm[0].month= 1; tm[0].day= 2;
|
||||
tm[0].hour= 03; tm[0].minute= 04; tm[0].second= 05;
|
||||
tm[0].second_part= 0; tm[0].neg= 0;
|
||||
tm[0].time_type= MYSQL_TIMESTAMP_DATETIME;
|
||||
tm[3]= tm[2]= tm[1]= tm[0];
|
||||
|
||||
rc= mysql_stmt_execute(stmt);
|
||||
check_execute(stmt, rc);
|
||||
my_process_warnings(mysql, 4);
|
||||
|
||||
verify_col_data("t1", "t", "00:00:00");
|
||||
verify_col_data("t1", "d", "0000-00-00");
|
||||
verify_col_data("t1", "dt", "0000-00-00 00:00:00");
|
||||
verify_col_data("t1", "ts", "0000-00-00 00:00:00");
|
||||
|
||||
/*** Testing DATE ***/
|
||||
bzero((char*) my_bind, sizeof(my_bind));
|
||||
for (i= 0; i < 4; i++)
|
||||
{
|
||||
my_bind[i].buffer_type= MYSQL_TYPE_DATE;
|
||||
my_bind[i].buffer= &tm[i];
|
||||
}
|
||||
rc= mysql_stmt_bind_param(stmt, my_bind);
|
||||
check_execute(stmt, rc);
|
||||
|
||||
/* Notice bad year */
|
||||
tm[0].year= 20010; tm[0].month= 1; tm[0].day= 2;
|
||||
tm[0].hour= 00; tm[0].minute= 00; tm[0].second= 00;
|
||||
tm[0].second_part= 0; tm[0].neg= 0;
|
||||
tm[0].time_type= MYSQL_TIMESTAMP_DATE;
|
||||
tm[3]= tm[2]= tm[1]= tm[0];
|
||||
|
||||
rc= mysql_stmt_execute(stmt);
|
||||
check_execute(stmt, rc);
|
||||
my_process_warnings(mysql, 4);
|
||||
|
||||
verify_col_data("t1", "t", "00:00:00");
|
||||
verify_col_data("t1", "d", "0000-00-00");
|
||||
verify_col_data("t1", "dt", "0000-00-00 00:00:00");
|
||||
verify_col_data("t1", "ts", "0000-00-00 00:00:00");
|
||||
|
||||
/*** Testing TIME ***/
|
||||
bzero((char*) my_bind, sizeof(my_bind));
|
||||
for (i= 0; i < 4; i++)
|
||||
{
|
||||
my_bind[i].buffer_type= MYSQL_TYPE_TIME;
|
||||
my_bind[i].buffer= &tm[i];
|
||||
}
|
||||
rc= mysql_stmt_bind_param(stmt, my_bind);
|
||||
check_execute(stmt, rc);
|
||||
|
||||
/* Notice bad hour */
|
||||
tm[0].year= 0; tm[0].month= 0; tm[0].day= 0;
|
||||
tm[0].hour= 100; tm[0].minute= 64; tm[0].second= 05;
|
||||
tm[0].second_part= 0; tm[0].neg= 0;
|
||||
tm[0].time_type= MYSQL_TIMESTAMP_TIME;
|
||||
tm[3]= tm[2]= tm[1]= tm[0];
|
||||
|
||||
rc= mysql_stmt_execute(stmt);
|
||||
check_execute(stmt, rc);
|
||||
my_process_warnings(mysql, 4);
|
||||
|
||||
verify_col_data("t1", "t", "00:00:00");
|
||||
verify_col_data("t1", "d", "0000-00-00");
|
||||
verify_col_data("t1", "dt", "0000-00-00 00:00:00");
|
||||
verify_col_data("t1", "ts", "0000-00-00 00:00:00");
|
||||
|
||||
mysql_stmt_close(stmt);
|
||||
|
||||
stmt_text= "drop table t1";
|
||||
rc= mysql_real_query(mysql, stmt_text, strlen(stmt_text));
|
||||
myquery(rc);
|
||||
}
|
||||
|
||||
|
||||
static void test_bug4172()
|
||||
{
|
||||
MYSQL_STMT *stmt;
|
||||
@@ -20087,6 +20200,7 @@ static struct my_tests_st my_tests[]= {
|
||||
{ "test_bug6081", test_bug6081 },
|
||||
{ "test_bug6096", test_bug6096 },
|
||||
{ "test_datetime_ranges", test_datetime_ranges },
|
||||
{ "test_datetime_ranges_mdev15289", test_datetime_ranges_mdev15289 },
|
||||
{ "test_bug4172", test_bug4172 },
|
||||
{ "test_conversion", test_conversion },
|
||||
{ "test_rewind", test_rewind },
|
||||
|
Reference in New Issue
Block a user