Converting MySQL's ENUM to SQLite BLOB doesn't make sense, changed it to TEXT. Also...
authorMax Semenik <maxsem@users.mediawiki.org>
Wed, 23 Jun 2010 18:59:46 +0000 (18:59 +0000)
committerMax Semenik <maxsem@users.mediawiki.org>
Wed, 23 Jun 2010 18:59:46 +0000 (18:59 +0000)
includes/db/DatabaseSqlite.php
maintenance/tests/DatabaseSqliteTest.php

index cfd2a37..7e399fb 100644 (file)
@@ -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
index 69d4cb1..9ba0084 100644 (file)
@@ -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" )
                        );