Need to update Drizzledump documentation with migration conversions / caveats

Bug #684803 reported by Patrick Crews
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Drizzle
Fix Released
Low
marisa plumb
7.0
Fix Released
Low
marisa plumb

Bug Description

I think we should update the online drizzledump docs with the conversions listed in the drizzledump blueprint:

https://blueprints.launchpad.net/drizzle/+spec/drizzledump-mysql

Specifically, this information:
During step 3 the following conversions are required:

MyISAM -> InnoDB
FullText -> drop it (with stderr warning)
int unsigned -> bigint
tinyint -> int
smallint -> int
mediumint -> int
tinytext -> text
mediumtext -> text
longtext -> text
tinyblob -> blob
mediumblob -> blob
longblob -> blob
time -> int (of seconds)
year -> int
set -> text (can't guess length so safer than varchar, may need to normalise in later versions)
date/datetime default 0000-00-00 -> default NULL *(It currently appears that ALL date columns have their DEFAULT set to NULL on migration)
date/datetime NOT NULL columns -> NULL
any date data containing 0000-00-00 -> NULL

Changed in drizzle:
status: New → Confirmed
importance: Undecided → Wishlist
importance: Wishlist → Low
Changed in drizzle:
assignee: nobody → marisa plumb (marisa-plumb)
Revision history for this message
Andrew Hutchings (linuxjedi) wrote :

Also:
MEMORY/HEAP -> InnoDB (we only support memory/heap for temp tables in Drizzle)
BIT -> VARBINARY with adjusted field sizes, so BIT(16) -> BINARY(2)
CHAR -> VARCHAR
BINARY -> VARBINARY
FLOAT -> DOUBLE
unsigned on INT is dropped (since we don't support it)

For BIGINT UNSIGNED values > BiGINT SIGNED MAX (9223372036854775807) an error will occur as Drizzle cannot store these values in a BIGINT column.

Revision history for this message
Andrew Hutchings (linuxjedi) wrote :

Another note to be added here:

Whilst Drizzle now has a TIME data type, it has a range of 00:00:00 - 24:59:59. MySQL's TIME data type however has a range of -838:59:59 - 838:59:59. Conversion from MySQL -> Drizzle with this type would therefore lead to data loss. So during the conversion we change TIME to an INT of the number of seconds. For example 00:00:00 is 0, 01:00:00 is 3600 and -01:00:00 is -3600.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.