mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-17098 DATE -> DATETIME replication conversion not working, even in ALL_NON_LOSSY mode
Opened up MYSQL_TYPE _DATETIME{,2} <-> _NEWDATE conversions for replication.
This commit is contained in:
@ -24,11 +24,19 @@ connection master;
|
|||||||
disable_warnings;
|
disable_warnings;
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
enable_warnings;
|
enable_warnings;
|
||||||
|
if ($source_temp_format)
|
||||||
|
{
|
||||||
|
--eval SET @@global.mysql56_temporal_format= $source_temp_format
|
||||||
|
}
|
||||||
eval CREATE TABLE t1(
|
eval CREATE TABLE t1(
|
||||||
pk INT NOT NULL PRIMARY KEY,
|
pk INT NOT NULL PRIMARY KEY,
|
||||||
a $source_type
|
a $source_type
|
||||||
) ENGINE=$engine_type;
|
) ENGINE=$engine_type;
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
|
if ($target_temp_format)
|
||||||
|
{
|
||||||
|
--eval SET @@global.mysql56_temporal_format= $source_temp_format
|
||||||
|
}
|
||||||
eval ALTER TABLE t1 MODIFY a $target_type;
|
eval ALTER TABLE t1 MODIFY a $target_type;
|
||||||
|
|
||||||
connection master;
|
connection master;
|
||||||
|
@ -1007,5 +1007,96 @@ source extra/rpl_tests/check_type.inc;
|
|||||||
|
|
||||||
--echo # End of MDEV-15833
|
--echo # End of MDEV-15833
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-17098 DATE <-> DATETIME
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
# NON-LOSSY
|
||||||
|
let $source_temp_format= 1; # irrelevant with DATE though
|
||||||
|
let $source_type= DATE;
|
||||||
|
let $target_temp_format= 1; # to produce MYSQL_TYPE_DATETIME2
|
||||||
|
let $target_type= DATETIME(6);
|
||||||
|
let $source_value= '2018-10-11';
|
||||||
|
let $target_value= '2018-10-11 00:00:00.000000';
|
||||||
|
let $can_convert = $if_is_non_lossy;
|
||||||
|
source extra/rpl_tests/check_type.inc;
|
||||||
|
|
||||||
|
let $source_temp_format= 1;
|
||||||
|
let $source_type= DATE;
|
||||||
|
let $target_temp_format= 0; # to produce "old" MYSQL_TYPE_DATETIME
|
||||||
|
let $target_type= DATETIME(6);
|
||||||
|
let $source_value= '2018-10-11';
|
||||||
|
let $target_value= '2018-10-11 00:00:00.000000';
|
||||||
|
let $can_convert = $if_is_non_lossy;
|
||||||
|
source extra/rpl_tests/check_type.inc;
|
||||||
|
|
||||||
|
let $source_temp_format= 0;
|
||||||
|
let $source_type= DATE;
|
||||||
|
let $target_temp_format= 1;
|
||||||
|
let $target_type= DATETIME(6);
|
||||||
|
let $source_value= '2018-10-11';
|
||||||
|
let $target_value= '2018-10-11 00:00:00.000000';
|
||||||
|
let $can_convert = $if_is_non_lossy;
|
||||||
|
source extra/rpl_tests/check_type.inc;
|
||||||
|
|
||||||
|
# zero-precision test version
|
||||||
|
let $source_temp_format= 1;
|
||||||
|
let $source_type= DATE;
|
||||||
|
let $target_temp_format= 1;
|
||||||
|
let $target_type= DATETIME(0);
|
||||||
|
let $source_value= '2018-10-11';
|
||||||
|
let $target_value= '2018-10-11 00:00:00';
|
||||||
|
let $can_convert = $if_is_non_lossy;
|
||||||
|
source extra/rpl_tests/check_type.inc;
|
||||||
|
|
||||||
|
# LOSSY
|
||||||
|
let $source_temp_format= 1;
|
||||||
|
let $source_type= DATETIME(6);
|
||||||
|
let $target_temp_format= 1;
|
||||||
|
let $target_type= DATE;
|
||||||
|
let $source_value= '2018-10-11 00:00:00.000001';
|
||||||
|
let $target_value= '2018-10-11';
|
||||||
|
let $can_convert = $if_is_lossy;
|
||||||
|
source extra/rpl_tests/check_type.inc;
|
||||||
|
|
||||||
|
let $source_temp_format= 1;
|
||||||
|
let $source_type= DATETIME(6);
|
||||||
|
let $target_temp_format= 0;
|
||||||
|
let $target_type= DATE;
|
||||||
|
let $source_value= '2018-10-11 00:00:00.000001';
|
||||||
|
let $target_value= '2018-10-11';
|
||||||
|
let $can_convert = $if_is_lossy;
|
||||||
|
source extra/rpl_tests/check_type.inc;
|
||||||
|
|
||||||
|
# zero-precision test version
|
||||||
|
let $source_temp_format= 1;
|
||||||
|
let $source_type= DATETIME(0);
|
||||||
|
let $target_temp_format= 1;
|
||||||
|
let $target_type= DATE;
|
||||||
|
let $source_value= '2018-10-11 00:00:00';
|
||||||
|
let $target_value= '2018-10-11';
|
||||||
|
let $can_convert = $if_is_lossy;
|
||||||
|
source extra/rpl_tests/check_type.inc;
|
||||||
|
|
||||||
|
# TODO: fix MDEV-17394 Row-based replication DATETIME(m) to
|
||||||
|
# DATETIME(s) does not work or incorrect
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# let $source_temp_format= 0;
|
||||||
|
# let $source_type= DATETIME(6);
|
||||||
|
# let $target_temp_format= 1;
|
||||||
|
# let $target_type= DATE;
|
||||||
|
# ...
|
||||||
|
# let $source_temp_format= 0;
|
||||||
|
# let $source_type= DATETIME(6);
|
||||||
|
# let $target_temp_format= 0;
|
||||||
|
# let $target_type= DATE;
|
||||||
|
# ...
|
||||||
|
|
||||||
|
let $source_temp_format=;
|
||||||
|
let $target_temp_format=;
|
||||||
|
--echo # End of MDEV-17098
|
||||||
|
|
||||||
|
|
||||||
--source include/rpl_reset.inc
|
--source include/rpl_reset.inc
|
||||||
enable_query_log;
|
enable_query_log;
|
||||||
|
@ -43,6 +43,10 @@ SET GLOBAL SLAVE_TYPE_CONVERSIONS='';
|
|||||||
# MDEV-15833 Row format replication between LONGBLOB and MEDIUMBLOB does not work for long values
|
# MDEV-15833 Row format replication between LONGBLOB and MEDIUMBLOB does not work for long values
|
||||||
#
|
#
|
||||||
# End of MDEV-15833
|
# End of MDEV-15833
|
||||||
|
#
|
||||||
|
# MDEV-17098 DATE <-> DATETIME
|
||||||
|
#
|
||||||
|
# End of MDEV-17098
|
||||||
include/rpl_reset.inc
|
include/rpl_reset.inc
|
||||||
connection slave;
|
connection slave;
|
||||||
SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_NON_LOSSY';
|
SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_NON_LOSSY';
|
||||||
@ -51,6 +55,10 @@ SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_NON_LOSSY';
|
|||||||
# MDEV-15833 Row format replication between LONGBLOB and MEDIUMBLOB does not work for long values
|
# MDEV-15833 Row format replication between LONGBLOB and MEDIUMBLOB does not work for long values
|
||||||
#
|
#
|
||||||
# End of MDEV-15833
|
# End of MDEV-15833
|
||||||
|
#
|
||||||
|
# MDEV-17098 DATE <-> DATETIME
|
||||||
|
#
|
||||||
|
# End of MDEV-17098
|
||||||
include/rpl_reset.inc
|
include/rpl_reset.inc
|
||||||
connection slave;
|
connection slave;
|
||||||
SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY';
|
SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY';
|
||||||
@ -59,6 +67,10 @@ SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY';
|
|||||||
# MDEV-15833 Row format replication between LONGBLOB and MEDIUMBLOB does not work for long values
|
# MDEV-15833 Row format replication between LONGBLOB and MEDIUMBLOB does not work for long values
|
||||||
#
|
#
|
||||||
# End of MDEV-15833
|
# End of MDEV-15833
|
||||||
|
#
|
||||||
|
# MDEV-17098 DATE <-> DATETIME
|
||||||
|
#
|
||||||
|
# End of MDEV-17098
|
||||||
include/rpl_reset.inc
|
include/rpl_reset.inc
|
||||||
connection slave;
|
connection slave;
|
||||||
SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY';
|
SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY';
|
||||||
@ -67,6 +79,10 @@ SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY';
|
|||||||
# MDEV-15833 Row format replication between LONGBLOB and MEDIUMBLOB does not work for long values
|
# MDEV-15833 Row format replication between LONGBLOB and MEDIUMBLOB does not work for long values
|
||||||
#
|
#
|
||||||
# End of MDEV-15833
|
# End of MDEV-15833
|
||||||
|
#
|
||||||
|
# MDEV-17098 DATE <-> DATETIME
|
||||||
|
#
|
||||||
|
# End of MDEV-17098
|
||||||
include/rpl_reset.inc
|
include/rpl_reset.inc
|
||||||
connection slave;
|
connection slave;
|
||||||
**** Result of conversions ****
|
**** Result of conversions ****
|
||||||
@ -208,6 +224,13 @@ LONGBLOB TINYBLOB <Correct error>
|
|||||||
LONGBLOB BLOB <Correct error>
|
LONGBLOB BLOB <Correct error>
|
||||||
LONGBLOB MEDIUMBLOB <Correct error>
|
LONGBLOB MEDIUMBLOB <Correct error>
|
||||||
LONGBLOB VARBINARY(65500 <Correct error>
|
LONGBLOB VARBINARY(65500 <Correct error>
|
||||||
|
DATE DATETIME(6) <Correct error>
|
||||||
|
DATE DATETIME(6) <Correct error>
|
||||||
|
DATE DATETIME(6) <Correct error>
|
||||||
|
DATE DATETIME(0) <Correct error>
|
||||||
|
DATETIME(6) DATE <Correct error>
|
||||||
|
DATETIME(6) DATE <Correct error>
|
||||||
|
DATETIME(0) DATE <Correct error>
|
||||||
TINYBLOB TINYBLOB ALL_NON_LOSSY <Correct value>
|
TINYBLOB TINYBLOB ALL_NON_LOSSY <Correct value>
|
||||||
TINYBLOB BLOB ALL_NON_LOSSY <Correct value>
|
TINYBLOB BLOB ALL_NON_LOSSY <Correct value>
|
||||||
TINYBLOB MEDIUMBLOB ALL_NON_LOSSY <Correct value>
|
TINYBLOB MEDIUMBLOB ALL_NON_LOSSY <Correct value>
|
||||||
@ -345,6 +368,13 @@ LONGBLOB TINYBLOB ALL_NON_LOSSY <Correct error>
|
|||||||
LONGBLOB BLOB ALL_NON_LOSSY <Correct error>
|
LONGBLOB BLOB ALL_NON_LOSSY <Correct error>
|
||||||
LONGBLOB MEDIUMBLOB ALL_NON_LOSSY <Correct error>
|
LONGBLOB MEDIUMBLOB ALL_NON_LOSSY <Correct error>
|
||||||
LONGBLOB VARBINARY(65500 ALL_NON_LOSSY <Correct error>
|
LONGBLOB VARBINARY(65500 ALL_NON_LOSSY <Correct error>
|
||||||
|
DATE DATETIME(6) ALL_NON_LOSSY <Correct value>
|
||||||
|
DATE DATETIME(6) ALL_NON_LOSSY <Correct value>
|
||||||
|
DATE DATETIME(6) ALL_NON_LOSSY <Correct value>
|
||||||
|
DATE DATETIME(0) ALL_NON_LOSSY <Correct value>
|
||||||
|
DATETIME(6) DATE ALL_NON_LOSSY <Correct error>
|
||||||
|
DATETIME(6) DATE ALL_NON_LOSSY <Correct error>
|
||||||
|
DATETIME(0) DATE ALL_NON_LOSSY <Correct error>
|
||||||
TINYBLOB TINYBLOB ALL_LOSSY <Correct value>
|
TINYBLOB TINYBLOB ALL_LOSSY <Correct value>
|
||||||
TINYBLOB BLOB ALL_LOSSY <Correct error>
|
TINYBLOB BLOB ALL_LOSSY <Correct error>
|
||||||
TINYBLOB MEDIUMBLOB ALL_LOSSY <Correct error>
|
TINYBLOB MEDIUMBLOB ALL_LOSSY <Correct error>
|
||||||
@ -482,6 +512,13 @@ LONGBLOB TINYBLOB ALL_LOSSY <Correct value>
|
|||||||
LONGBLOB BLOB ALL_LOSSY <Correct value>
|
LONGBLOB BLOB ALL_LOSSY <Correct value>
|
||||||
LONGBLOB MEDIUMBLOB ALL_LOSSY <Correct value>
|
LONGBLOB MEDIUMBLOB ALL_LOSSY <Correct value>
|
||||||
LONGBLOB VARBINARY(65500 ALL_LOSSY <Correct value>
|
LONGBLOB VARBINARY(65500 ALL_LOSSY <Correct value>
|
||||||
|
DATE DATETIME(6) ALL_LOSSY <Correct error>
|
||||||
|
DATE DATETIME(6) ALL_LOSSY <Correct error>
|
||||||
|
DATE DATETIME(6) ALL_LOSSY <Correct error>
|
||||||
|
DATE DATETIME(0) ALL_LOSSY <Correct error>
|
||||||
|
DATETIME(6) DATE ALL_LOSSY <Correct value>
|
||||||
|
DATETIME(6) DATE ALL_LOSSY <Correct value>
|
||||||
|
DATETIME(0) DATE ALL_LOSSY <Correct value>
|
||||||
TINYBLOB TINYBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
TINYBLOB TINYBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
TINYBLOB BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
TINYBLOB BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
TINYBLOB MEDIUMBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
TINYBLOB MEDIUMBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
@ -619,6 +656,13 @@ LONGBLOB TINYBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
|||||||
LONGBLOB BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
LONGBLOB BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
LONGBLOB MEDIUMBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
LONGBLOB MEDIUMBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
LONGBLOB VARBINARY(65500 ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
LONGBLOB VARBINARY(65500 ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
|
DATE DATETIME(6) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
|
DATE DATETIME(6) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
|
DATE DATETIME(6) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
|
DATE DATETIME(0) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
|
DATETIME(6) DATE ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
|
DATETIME(6) DATE ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
|
DATETIME(0) DATE ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
DROP TABLE type_conversions;
|
DROP TABLE type_conversions;
|
||||||
call mtr.add_suppression("Slave SQL.*Column 1 of table .test.t1. cannot be converted from type.* error.* 1677");
|
call mtr.add_suppression("Slave SQL.*Column 1 of table .test.t1. cannot be converted from type.* error.* 1677");
|
||||||
connection master;
|
connection master;
|
||||||
|
@ -43,6 +43,10 @@ SET GLOBAL SLAVE_TYPE_CONVERSIONS='';
|
|||||||
# MDEV-15833 Row format replication between LONGBLOB and MEDIUMBLOB does not work for long values
|
# MDEV-15833 Row format replication between LONGBLOB and MEDIUMBLOB does not work for long values
|
||||||
#
|
#
|
||||||
# End of MDEV-15833
|
# End of MDEV-15833
|
||||||
|
#
|
||||||
|
# MDEV-17098 DATE <-> DATETIME
|
||||||
|
#
|
||||||
|
# End of MDEV-17098
|
||||||
include/rpl_reset.inc
|
include/rpl_reset.inc
|
||||||
connection slave;
|
connection slave;
|
||||||
SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_NON_LOSSY';
|
SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_NON_LOSSY';
|
||||||
@ -51,6 +55,10 @@ SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_NON_LOSSY';
|
|||||||
# MDEV-15833 Row format replication between LONGBLOB and MEDIUMBLOB does not work for long values
|
# MDEV-15833 Row format replication between LONGBLOB and MEDIUMBLOB does not work for long values
|
||||||
#
|
#
|
||||||
# End of MDEV-15833
|
# End of MDEV-15833
|
||||||
|
#
|
||||||
|
# MDEV-17098 DATE <-> DATETIME
|
||||||
|
#
|
||||||
|
# End of MDEV-17098
|
||||||
include/rpl_reset.inc
|
include/rpl_reset.inc
|
||||||
connection slave;
|
connection slave;
|
||||||
SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY';
|
SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY';
|
||||||
@ -59,6 +67,10 @@ SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY';
|
|||||||
# MDEV-15833 Row format replication between LONGBLOB and MEDIUMBLOB does not work for long values
|
# MDEV-15833 Row format replication between LONGBLOB and MEDIUMBLOB does not work for long values
|
||||||
#
|
#
|
||||||
# End of MDEV-15833
|
# End of MDEV-15833
|
||||||
|
#
|
||||||
|
# MDEV-17098 DATE <-> DATETIME
|
||||||
|
#
|
||||||
|
# End of MDEV-17098
|
||||||
include/rpl_reset.inc
|
include/rpl_reset.inc
|
||||||
connection slave;
|
connection slave;
|
||||||
SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY';
|
SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY';
|
||||||
@ -67,6 +79,10 @@ SET GLOBAL SLAVE_TYPE_CONVERSIONS='ALL_LOSSY,ALL_NON_LOSSY';
|
|||||||
# MDEV-15833 Row format replication between LONGBLOB and MEDIUMBLOB does not work for long values
|
# MDEV-15833 Row format replication between LONGBLOB and MEDIUMBLOB does not work for long values
|
||||||
#
|
#
|
||||||
# End of MDEV-15833
|
# End of MDEV-15833
|
||||||
|
#
|
||||||
|
# MDEV-17098 DATE <-> DATETIME
|
||||||
|
#
|
||||||
|
# End of MDEV-17098
|
||||||
include/rpl_reset.inc
|
include/rpl_reset.inc
|
||||||
connection slave;
|
connection slave;
|
||||||
**** Result of conversions ****
|
**** Result of conversions ****
|
||||||
@ -208,6 +224,13 @@ LONGBLOB TINYBLOB <Correct error>
|
|||||||
LONGBLOB BLOB <Correct error>
|
LONGBLOB BLOB <Correct error>
|
||||||
LONGBLOB MEDIUMBLOB <Correct error>
|
LONGBLOB MEDIUMBLOB <Correct error>
|
||||||
LONGBLOB VARBINARY(65500 <Correct error>
|
LONGBLOB VARBINARY(65500 <Correct error>
|
||||||
|
DATE DATETIME(6) <Correct error>
|
||||||
|
DATE DATETIME(6) <Correct error>
|
||||||
|
DATE DATETIME(6) <Correct error>
|
||||||
|
DATE DATETIME(0) <Correct error>
|
||||||
|
DATETIME(6) DATE <Correct error>
|
||||||
|
DATETIME(6) DATE <Correct error>
|
||||||
|
DATETIME(0) DATE <Correct error>
|
||||||
TINYBLOB TINYBLOB ALL_NON_LOSSY <Correct value>
|
TINYBLOB TINYBLOB ALL_NON_LOSSY <Correct value>
|
||||||
TINYBLOB BLOB ALL_NON_LOSSY <Correct value>
|
TINYBLOB BLOB ALL_NON_LOSSY <Correct value>
|
||||||
TINYBLOB MEDIUMBLOB ALL_NON_LOSSY <Correct value>
|
TINYBLOB MEDIUMBLOB ALL_NON_LOSSY <Correct value>
|
||||||
@ -345,6 +368,13 @@ LONGBLOB TINYBLOB ALL_NON_LOSSY <Correct error>
|
|||||||
LONGBLOB BLOB ALL_NON_LOSSY <Correct error>
|
LONGBLOB BLOB ALL_NON_LOSSY <Correct error>
|
||||||
LONGBLOB MEDIUMBLOB ALL_NON_LOSSY <Correct error>
|
LONGBLOB MEDIUMBLOB ALL_NON_LOSSY <Correct error>
|
||||||
LONGBLOB VARBINARY(65500 ALL_NON_LOSSY <Correct error>
|
LONGBLOB VARBINARY(65500 ALL_NON_LOSSY <Correct error>
|
||||||
|
DATE DATETIME(6) ALL_NON_LOSSY <Correct value>
|
||||||
|
DATE DATETIME(6) ALL_NON_LOSSY <Correct value>
|
||||||
|
DATE DATETIME(6) ALL_NON_LOSSY <Correct value>
|
||||||
|
DATE DATETIME(0) ALL_NON_LOSSY <Correct value>
|
||||||
|
DATETIME(6) DATE ALL_NON_LOSSY <Correct error>
|
||||||
|
DATETIME(6) DATE ALL_NON_LOSSY <Correct error>
|
||||||
|
DATETIME(0) DATE ALL_NON_LOSSY <Correct error>
|
||||||
TINYBLOB TINYBLOB ALL_LOSSY <Correct value>
|
TINYBLOB TINYBLOB ALL_LOSSY <Correct value>
|
||||||
TINYBLOB BLOB ALL_LOSSY <Correct error>
|
TINYBLOB BLOB ALL_LOSSY <Correct error>
|
||||||
TINYBLOB MEDIUMBLOB ALL_LOSSY <Correct error>
|
TINYBLOB MEDIUMBLOB ALL_LOSSY <Correct error>
|
||||||
@ -482,6 +512,13 @@ LONGBLOB TINYBLOB ALL_LOSSY <Correct value>
|
|||||||
LONGBLOB BLOB ALL_LOSSY <Correct value>
|
LONGBLOB BLOB ALL_LOSSY <Correct value>
|
||||||
LONGBLOB MEDIUMBLOB ALL_LOSSY <Correct value>
|
LONGBLOB MEDIUMBLOB ALL_LOSSY <Correct value>
|
||||||
LONGBLOB VARBINARY(65500 ALL_LOSSY <Correct value>
|
LONGBLOB VARBINARY(65500 ALL_LOSSY <Correct value>
|
||||||
|
DATE DATETIME(6) ALL_LOSSY <Correct error>
|
||||||
|
DATE DATETIME(6) ALL_LOSSY <Correct error>
|
||||||
|
DATE DATETIME(6) ALL_LOSSY <Correct error>
|
||||||
|
DATE DATETIME(0) ALL_LOSSY <Correct error>
|
||||||
|
DATETIME(6) DATE ALL_LOSSY <Correct value>
|
||||||
|
DATETIME(6) DATE ALL_LOSSY <Correct value>
|
||||||
|
DATETIME(0) DATE ALL_LOSSY <Correct value>
|
||||||
TINYBLOB TINYBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
TINYBLOB TINYBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
TINYBLOB BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
TINYBLOB BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
TINYBLOB MEDIUMBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
TINYBLOB MEDIUMBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
@ -619,6 +656,13 @@ LONGBLOB TINYBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
|||||||
LONGBLOB BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
LONGBLOB BLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
LONGBLOB MEDIUMBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
LONGBLOB MEDIUMBLOB ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
LONGBLOB VARBINARY(65500 ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
LONGBLOB VARBINARY(65500 ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
|
DATE DATETIME(6) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
|
DATE DATETIME(6) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
|
DATE DATETIME(6) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
|
DATE DATETIME(0) ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
|
DATETIME(6) DATE ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
|
DATETIME(6) DATE ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
|
DATETIME(0) DATE ALL_LOSSY,ALL_NON_LOSSY <Correct value>
|
||||||
DROP TABLE type_conversions;
|
DROP TABLE type_conversions;
|
||||||
call mtr.add_suppression("Slave SQL.*Column 1 of table .test.t1. cannot be converted from type.* error.* 1677");
|
call mtr.add_suppression("Slave SQL.*Column 1 of table .test.t1. cannot be converted from type.* error.* 1677");
|
||||||
connection master;
|
connection master;
|
||||||
|
@ -765,14 +765,44 @@ can_convert_field_to(Field *field,
|
|||||||
case MYSQL_TYPE_TIME:
|
case MYSQL_TYPE_TIME:
|
||||||
case MYSQL_TYPE_DATETIME:
|
case MYSQL_TYPE_DATETIME:
|
||||||
case MYSQL_TYPE_YEAR:
|
case MYSQL_TYPE_YEAR:
|
||||||
case MYSQL_TYPE_NEWDATE:
|
|
||||||
case MYSQL_TYPE_NULL:
|
case MYSQL_TYPE_NULL:
|
||||||
case MYSQL_TYPE_ENUM:
|
case MYSQL_TYPE_ENUM:
|
||||||
case MYSQL_TYPE_SET:
|
case MYSQL_TYPE_SET:
|
||||||
case MYSQL_TYPE_TIMESTAMP2:
|
case MYSQL_TYPE_TIMESTAMP2:
|
||||||
case MYSQL_TYPE_DATETIME2:
|
|
||||||
case MYSQL_TYPE_TIME2:
|
case MYSQL_TYPE_TIME2:
|
||||||
DBUG_RETURN(false);
|
DBUG_RETURN(false);
|
||||||
|
case MYSQL_TYPE_NEWDATE:
|
||||||
|
{
|
||||||
|
if (field->real_type() == MYSQL_TYPE_DATETIME2 ||
|
||||||
|
field->real_type() == MYSQL_TYPE_DATETIME)
|
||||||
|
{
|
||||||
|
*order_var= -1;
|
||||||
|
DBUG_RETURN(is_conversion_ok(*order_var, rli));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DBUG_RETURN(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
//case MYSQL_TYPE_DATETIME: TODO: fix MDEV-17394 and uncomment.
|
||||||
|
//
|
||||||
|
//The "old" type does not specify the fraction part size which is required
|
||||||
|
//for correct conversion.
|
||||||
|
case MYSQL_TYPE_DATETIME2:
|
||||||
|
{
|
||||||
|
if (field->real_type() == MYSQL_TYPE_NEWDATE)
|
||||||
|
{
|
||||||
|
*order_var= 1;
|
||||||
|
DBUG_RETURN(is_conversion_ok(*order_var, rli));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DBUG_RETURN(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
DBUG_RETURN(false); // To keep GCC happy
|
DBUG_RETURN(false); // To keep GCC happy
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user