1
0
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:
Andrei Elkin
2018-10-03 21:45:05 +03:00
parent 2d4075e1d9
commit 2308b9afec
5 changed files with 219 additions and 2 deletions

View File

@ -765,14 +765,44 @@ can_convert_field_to(Field *field,
case MYSQL_TYPE_TIME:
case MYSQL_TYPE_DATETIME:
case MYSQL_TYPE_YEAR:
case MYSQL_TYPE_NEWDATE:
case MYSQL_TYPE_NULL:
case MYSQL_TYPE_ENUM:
case MYSQL_TYPE_SET:
case MYSQL_TYPE_TIMESTAMP2:
case MYSQL_TYPE_DATETIME2:
case MYSQL_TYPE_TIME2:
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
}