}
/**
- * Based on MySQL method (parent) with some prior SQLite-sepcific adjustments
+ * Based on generic method (parent) with some prior SQLite-sepcific adjustments
*/
function insert( $table, $a, $fname = 'DatabaseSqlite::insert', $options = array() ) {
if ( !count( $a ) ) return true;
return $ret;
}
+ function replace( $table, $uniqueIndexes, $rows, $fname = 'DatabaseSqlite::replace' ) {
+ if ( !count( $rows ) ) return true;
+
+ # SQLite can't handle multi-row replaces, so divide up into multiple single-row queries
+ if ( isset( $rows[0] ) && is_array( $rows[0] ) ) {
+ $ret = true;
+ foreach ( $rows as $k => $v )
+ if ( !parent::replace( $table, $uniqueIndexes, $v, "$fname/multi-row" ) )
+ $ret = false;
+ } else {
+ $ret = parent::replace( $table, $uniqueIndexes, $rows, "$fname/single-row" );
+ }
+
+ return $ret;
+ }
+
/**
* Returns the size of a text field, or -1 for "unlimited"
* In SQLite this is SQLITE_MAX_LENGTH, by default 1GB. No way to query it though.