From ab4cad44d57a333aaf6c368d073aeccecd2f50b1 Mon Sep 17 00:00:00 2001 From: Max Semenik Date: Wed, 23 Jun 2010 18:59:46 +0000 Subject: [PATCH] Converting MySQL's ENUM to SQLite BLOB doesn't make sense, changed it to TEXT. Also fixed a bug in conversion regex --- includes/db/DatabaseSqlite.php | 2 +- maintenance/tests/DatabaseSqliteTest.php | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/includes/db/DatabaseSqlite.php b/includes/db/DatabaseSqlite.php index cfd2a37534..7e399fbe61 100644 --- a/includes/db/DatabaseSqlite.php +++ b/includes/db/DatabaseSqlite.php @@ -562,7 +562,7 @@ class DatabaseSqlite extends DatabaseBase { // DATETIME -> TEXT $s = preg_replace( '/\b(datetime|timestamp)\b/i', 'TEXT', $s ); // No ENUM type - $s = preg_replace( '/enum\([^)]*\)/i', 'BLOB', $s ); + $s = preg_replace( '/\benum\s*\([^)]*\)/i', 'TEXT', $s ); // binary collation type -> nothing $s = preg_replace( '/\bbinary\b/i', '', $s ); // auto_increment -> autoincrement diff --git a/maintenance/tests/DatabaseSqliteTest.php b/maintenance/tests/DatabaseSqliteTest.php index 69d4cb1d51..9ba008468c 100644 --- a/maintenance/tests/DatabaseSqliteTest.php +++ b/maintenance/tests/DatabaseSqliteTest.php @@ -49,7 +49,11 @@ class DatabaseSqliteTest extends PHPUnit_Framework_TestCase { $this->replaceVars( "CREATE TABLE text ( text_foo tinytext );" ), 'Table name changed' ); - + + $this->assertEquals( "CREATE TABLE enums( enum1 TEXT, myenum TEXT)", + $this->replaceVars( "CREATE TABLE enums( enum1 ENUM('A', 'B'), myenum ENUM ('X', 'Y'))" ) + ); + $this->assertEquals( "ALTER TABLE foo ADD COLUMN foo_bar INTEGER DEFAULT 42", $this->replaceVars( "ALTER TABLE foo\nADD COLUMN foo_bar int(10) unsigned DEFAULT 42" ) ); -- 2.20.1