* This is the SQLite database abstraction layer.
* See maintenance/sqlite/README for development notes and other specific information
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup Database
*/
$this->mName = $dbName;
parent::__construct( $server, $user, $password, $dbName, $flags );
// parent doesn't open when $user is false, but we can work with $dbName
- if( !$user && $dbName ) {
+ if( $dbName ) {
global $wgSharedDB;
if( $this->open( $server, $user, $password, $dbName ) && $wgSharedDB ) {
$this->attachDatabase( $wgSharedDB );
*
* @param $fileName string
*
- * @return PDO|false SQL connection or false if failed
+ * @return PDO|bool SQL connection or false if failed
*/
function openFile( $fileName ) {
$this->mDatabaseFile = $fileName;
}
/**
- * Close an SQLite database
- *
+ * Does not actually close the connection, just destroys the reference for GC to do its work
* @return bool
*/
- function close() {
- $this->mOpened = false;
- if ( is_object( $this->mConn ) ) {
- if ( $this->trxLevel() ) $this->commit();
- $this->mConn = null;
- }
+ protected function closeConnection() {
+ $this->mConn = null;
return true;
}
/**
* Check if the searchindext table is FTS enabled.
- * @return false if not enabled.
+ * @return bool False if not enabled.
*/
function checkForEnabledSearch() {
if ( self::$fulltextEnabled === null ) {
*
* @return ResultWrapper
*/
- function doQuery( $sql ) {
+ protected function doQuery( $sql ) {
$res = $this->mConn->query( $sql );
if ( $res === false ) {
return false;
* Use MySQL's naming (accounts for prefix etc) but remove surrounding backticks
*
* @param $name
- * @param bool $quoted
+ * @param $format String
* @return string
*/
- function tableName( $name, $quoted = true ) {
+ function tableName( $name, $format = 'quoted' ) {
// table names starting with sqlite_ are reserved
if ( strpos( $name, 'sqlite_' ) === 0 ) {
return $name;
}
- return str_replace( '"', '', parent::tableName( $name, $quoted ) );
+ return str_replace( '"', '', parent::tableName( $name, $format ) );
}
/**
* @return int
*/
function insertId() {
- return $this->mConn->lastInsertId();
+ // PDO::lastInsertId yields a string :(
+ return intval( $this->mConn->lastInsertId() );
}
/**
/**
* Based on generic method (parent) with some prior SQLite-sepcific adjustments
+ * @return bool
*/
function insert( $table, $a, $fname = 'DatabaseSqlite::insert', $options = array() ) {
if ( !count( $a ) ) {
if ( isset( $rows[0] ) && is_array( $rows[0] ) ) {
$ret = true;
foreach ( $rows as $v ) {
- if ( !parent::replace( $table, $uniqueIndexes, $v, "$fname/multi-row" ) ) {
+ if ( !$this->nativeReplace( $table, $v, "$fname/multi-row" ) ) {
$ret = false;
}
}
} else {
- $ret = parent::replace( $table, $uniqueIndexes, $rows, "$fname/single-row" );
+ $ret = $this->nativeReplace( $table, $rows, "$fname/single-row" );
}
return $ret;
* Get information about a given field
* Returns false if the field does not exist.
*
- * @return SQLiteField|false
+ * @param $table string
+ * @param $field string
+ * @return SQLiteField|bool False on failure
*/
function fieldInfo( $table, $field ) {
$tableName = $this->tableName( $table );
function begin( $fname = '' ) {
if ( $this->mTrxLevel == 1 ) {
- $this->commit();
+ $this->commit( __METHOD__ );
}
$this->mConn->beginTransaction();
$this->mTrxLevel = 1;
return parent::buildLike( $params ) . "ESCAPE '\' ";
}
- public function dropTable( $tableName, $fName = 'DatabaseSqlite::dropTable' ) {
- $sql = 'DROP TABLE IF EXISTS ' . $this->tableName( $tableName );
- return $this->query( $sql, $fName );
- }
-
/**
* @return string
*/
/**
* No-op version of deadlockLoop
+ * @return mixed
*/
public function deadlockLoop( /*...*/ ) {
$args = func_get_args();
/**
* List all tables on the database
*
- * @param $prefix Only show tables with this prefix, e.g. mw_
+ * @param $prefix string Only show tables with this prefix, e.g. mw_
* @param $fname String: calling function name
*
* @return array