diff --git a/ddl/column.go b/ddl/column.go index 5d71b3625c368..632d370aa612e 100644 --- a/ddl/column.go +++ b/ddl/column.go @@ -736,11 +736,7 @@ func needChangeColumnData(oldCol, newCol *model.ColumnInfo) bool { case mysql.TypeTiny, mysql.TypeShort, mysql.TypeInt24, mysql.TypeLong, mysql.TypeLonglong: return needTruncationOrToggleSignForInteger() } - case mysql.TypeFloat, mysql.TypeDouble: - switch newCol.Tp { - case mysql.TypeFloat, mysql.TypeDouble: - return needTruncationOrToggleSign() - } + // conversion between float and double needs reorganization, see issue #31372 } return true diff --git a/ddl/column_type_change_test.go b/ddl/column_type_change_test.go index 67c3aec441b90..bd933afeea32d 100644 --- a/ddl/column_type_change_test.go +++ b/ddl/column_type_change_test.go @@ -2352,3 +2352,19 @@ func (s *testColumnTypeChangeSuite) TestChangeNullValueFromOtherTypeToTimestamp( _, err = tk.Exec("insert into t values(null)") c.Assert(err.Error(), Equals, "[table:1048]Column 'a' cannot be null") } + +func (s *testColumnTypeChangeSuite) TestColumnTypeChangeFromFloatToDouble(c *C) { + // issue #31372 + tk := testkit.NewTestKit(c, s.store) + tk.MustExec("use test") + + prepare := func() { + tk.MustExec("drop table if exists t;") + tk.MustExec("create table t (a float(6,2));") + tk.MustExec("insert into t values (36.4), (24.1);") + } + + prepare() + tk.MustExec("alter table t modify a double(6,2)") + tk.MustQuery("select a from t;").Check(testkit.Rows("36.4", "24.1")) +}