From 358989eaa15396c5c37c4e2d9edd3cfe02b46a06 Mon Sep 17 00:00:00 2001 From: Gabor Hojtsy Date: Fri, 12 Jan 2018 18:00:29 +0100 Subject: [PATCH] =?UTF-8?q?Issue=20#2918837=20by=20heddn,=20neclimdul,=20p?= =?UTF-8?q?henaproxima,=20quietone,=20G=C3=A1bor=20Hojtsy:=20SqlBase=20thr?= =?UTF-8?q?ows=20fatal=20error=20when=20extended=20directly?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/Plugin/migrate/source/SourcePluginBase.php | 2 +- .../migrate/src/Plugin/migrate/source/SqlBase.php | 4 +++- core/modules/migrate/tests/src/Kernel/SqlBaseTest.php | 9 +++++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php b/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php index 94e5c221a90..3ae7face3c8 100644 --- a/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php +++ b/core/modules/migrate/src/Plugin/migrate/source/SourcePluginBase.php @@ -216,7 +216,7 @@ abstract class SourcePluginBase extends PluginBase implements MigrateSourceInter /** * Initializes the iterator with the source data. * - * @return array + * @return \Iterator * An array of the data for this source. */ abstract protected function initializeIterator(); diff --git a/core/modules/migrate/src/Plugin/migrate/source/SqlBase.php b/core/modules/migrate/src/Plugin/migrate/source/SqlBase.php index 08653b2332b..18ef4d9aeca 100644 --- a/core/modules/migrate/src/Plugin/migrate/source/SqlBase.php +++ b/core/modules/migrate/src/Plugin/migrate/source/SqlBase.php @@ -346,7 +346,9 @@ abstract class SqlBase extends SourcePluginBase implements ContainerFactoryPlugi if (($this->batchSize > 0)) { $this->query->range($this->batch * $this->batchSize, $this->batchSize); } - return new \IteratorIterator($this->query->execute()); + $statement = $this->query->execute(); + $statement->setFetchMode(\PDO::FETCH_ASSOC); + return new \IteratorIterator($statement); } /** diff --git a/core/modules/migrate/tests/src/Kernel/SqlBaseTest.php b/core/modules/migrate/tests/src/Kernel/SqlBaseTest.php index 7115860c39d..321ca9585a8 100644 --- a/core/modules/migrate/tests/src/Kernel/SqlBaseTest.php +++ b/core/modules/migrate/tests/src/Kernel/SqlBaseTest.php @@ -9,6 +9,7 @@ namespace Drupal\Tests\migrate\Kernel; use Drupal\Core\Database\Query\ConditionInterface; use Drupal\Core\Database\Query\SelectInterface; +use Drupal\Core\Database\StatementInterface; use Drupal\migrate\Exception\RequirementsException; use Drupal\Core\Database\Database; use Drupal\migrate\Plugin\migrate\source\SqlBase; @@ -149,10 +150,10 @@ class SqlBaseTest extends MigrateTestBase { $source->getHighWaterStorage()->set($this->migration->id(), $high_water); } - $query_result = new \ArrayIterator($query_result); - - $query = $this->getMock(SelectInterface::class); - $query->method('execute')->willReturn($query_result); + $statement = $this->createMock(StatementInterface::class); + $statement->expects($this->atLeastOnce())->method('setFetchMode')->with(\PDO::FETCH_ASSOC); + $query = $this->createMock(SelectInterface::class); + $query->method('execute')->willReturn($statement); $query->expects($this->atLeastOnce())->method('orderBy')->with('order', 'ASC'); $condition_group = $this->getMock(ConditionInterface::class);