<?php
/**
- * This script is the SQLite database abstraction layer, see http://www.organicdesign.co.nz/Extension_talk:MediaWikiLite.php
- * - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html){{php}}
- * - Author: [http://www.organicdesign.co.nz/nad User:Nad]
- * - Started: 2007-12-17
- * - Last update: 2008-01-20
+ * This script is the SQLite database abstraction layer
*
- * {{php}}{{category:Extensions|DatabaseSqlite.php}}
+ * See maintenance/sqlite/README for development notes and other specific information
+ * @ingroup Database
+ * @file
*/
/**
- * @addtogroup Database
+ * @ingroup Database
*/
class DatabaseSqlite extends Database {
$wgDBTableOptions = '';
$mysql_tmpl = "$IP/maintenance/tables.sql";
$mysql_iw = "$IP/maintenance/interwiki.sql";
- $sqlite_tmpl = "$wgSQLiteDataDir/tables.sql";
+ $sqlite_tmpl = "$IP/maintenance/sqlite/tables.sql";
# Make an SQLite template file if it doesn't exist (based on the same one MySQL uses to create a new wiki db)
- if (1 || !file_exists($sqlite_tmpl)) { # todo: make this conditional again
+ if (!file_exists($sqlite_tmpl)) {
$sql = file_get_contents($mysql_tmpl);
$sql = preg_replace('/^\s*--.*?$/m','',$sql); # strip comments
$sql = preg_replace('/^\s*(UNIQUE)?\s*(PRIMARY)?\s*KEY.+?$/m','',$sql);
$sql = preg_replace('/^\s*(UNIQUE )?INDEX.+?$/m','',$sql); # These indexes should be created with a CREATE INDEX query
$sql = preg_replace('/^\s*FULLTEXT.+?$/m','',$sql); # Full text indexes
$sql = preg_replace('/ENUM\(.+?\)/','TEXT',$sql); # Make ENUM's into TEXT's
- $sql = preg_replace('/ENUM\(.+?\)/','TEXT',$sql); # Make ENUM's into TEXT's
$sql = preg_replace('/binary\(\d+\)/','BLOB',$sql);
$sql = preg_replace('/(TYPE|MAX_ROWS|AVG_ROW_LENGTH)=\w+/','',$sql);
$sql = preg_replace('/,\s*\)/s',')',$sql); # removing previous items may leave a trailing comma
$sql = str_replace(' unsigned','',$sql);
$sql = str_replace(' int ',' INTEGER ',$sql);
$sql = str_replace('NOT NULL','',$sql);
+
+ # Tidy up and write file
+ $sql = preg_replace('/^\s*^/m','',$sql); # Remove empty lines
+ $sql = preg_replace('/;$/m',";\n",$sql); # Separate each statement with an empty line
file_put_contents($sqlite_tmpl,$sql);
}
}
/**
- * @addtogroup Database
+ * @ingroup Database
*/
class SQLiteField extends MySQLField {