From 13f1ce8244aa5b0ea553625ba2b6c9d36ed45c1a Mon Sep 17 00:00:00 2001 From: Marius Hoch Date: Wed, 31 Oct 2018 16:32:46 +0100 Subject: [PATCH] DatabaseSqlite::insert: Fix affected row count Follow up to 633eb437a3b808518469c6eaf4e86a436941d837 Bug: T208331 Change-Id: I142bb8c8abd43242d098932da212aa58323a0863 --- .../libs/rdbms/database/DatabaseSqlite.php | 1 + .../includes/db/DatabaseSqliteTest.php | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/includes/libs/rdbms/database/DatabaseSqlite.php b/includes/libs/rdbms/database/DatabaseSqlite.php index 43776b5b37..7049df5d3d 100644 --- a/includes/libs/rdbms/database/DatabaseSqlite.php +++ b/includes/libs/rdbms/database/DatabaseSqlite.php @@ -654,6 +654,7 @@ class DatabaseSqlite extends Database { $this->startAtomic( $fname, self::ATOMIC_CANCELABLE ); foreach ( $a as $v ) { parent::insert( $table, $v, "$fname/multi-row", $options ); + $affectedRowCount += $this->affectedRows(); } $this->endAtomic( $fname ); } catch ( Exception $e ) { diff --git a/tests/phpunit/includes/db/DatabaseSqliteTest.php b/tests/phpunit/includes/db/DatabaseSqliteTest.php index 729b58c7ad..78af11d25d 100644 --- a/tests/phpunit/includes/db/DatabaseSqliteTest.php +++ b/tests/phpunit/includes/db/DatabaseSqliteTest.php @@ -403,6 +403,28 @@ class DatabaseSqliteTest extends MediaWikiTestCase { $this->assertTrue( $db->close(), "closing database" ); } + /** + * @covers DatabaseSqlite::insert + */ + public function testInsertAffectedRows() { + $db = DatabaseSqlite::newStandaloneInstance( ':memory:' ); + $db->query( 'CREATE TABLE testInsertAffectedRows ( foo )', __METHOD__ ); + + $insertion = $db->insert( + 'testInsertAffectedRows', + [ + [ 'foo' => 10 ], + [ 'foo' => 12 ], + [ 'foo' => 1555 ], + ], + __METHOD__ + ); + $this->assertTrue( $insertion, "Insertion worked" ); + + $this->assertSame( 3, $db->affectedRows() ); + $this->assertTrue( $db->close(), "closing database" ); + } + private function prepareTestDB( $version ) { static $maint = null; if ( $maint === null ) { -- 2.20.1