Drizzledump not preserving FLOAT precisions during MySQL migration if no decimal value given
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Drizzle |
Fix Released
|
High
|
Andrew Hutchings | ||
7.0 |
Fix Released
|
High
|
Andrew Hutchings |
Bug Description
For this MySQL table:
NOTE the columns float2 and float2_1:
CREATE TABLE float_table(
col_float_unsigned float unsigned,
col_float0 float(0),
col_float1 float(1),
col_float2 float(2,0),
col_float2_1 float(2),
col_float float,
col_float_5_2 float(5,2),
col_float_23 float(23,1),
col_float_not_null float NOT NULL,
col_float_
col_float_default float(5,2) DEFAULT 999.99
) ENGINE=MyISAM;
We get this Drizzledump output:
NOTE how we lost precision information for float0,float1, and float2_1.
CREATE TABLE `float_table` (
`description` TEXT COLLATE utf8_general_ci DEFAULT NULL,
`col_
`col_float0` DOUBLE DEFAULT NULL,
`col_float1` DOUBLE DEFAULT NULL,
`col_float2` DOUBLE(2,0) DEFAULT NULL,
`col_float2_1` DOUBLE DEFAULT NULL,
`col_float` DOUBLE DEFAULT NULL,
`col_float_5_2` DOUBLE(5,2) DEFAULT NULL,
`col_float_23` DOUBLE(23,1) DEFAULT NULL,
`col_
`col_
`col_
) ENGINE='InnoDB' COLLATE=
Related branches
- Lee Bieber (community): Needs Fixing
-
Diff: 138 lines (+20/-21)5 files modifiedclient/drizzledump.cc (+5/-6)
client/drizzledump_data.cc (+5/-0)
client/drizzledump_data.h (+1/-0)
client/drizzledump_drizzle.cc (+2/-2)
client/drizzledump_mysql.cc (+7/-13)
Changed in drizzle: | |
status: | New → Confirmed |
assignee: | nobody → Andrew Hutchings (linuxjedi) |
description: | updated |
Precision on its own is invalid in Drizzle without a scale. So I developed drizzledump to ignore the values if one is missing. In MySQL the scale defaults to 0. Correct behaviour should be to change FLOAT(2) to DOUBLE(2,0)