From 3490e98226cf7a0f6e7e1a5f97149ac89e918d31 Mon Sep 17 00:00:00 2001 From: Baachi Date: Wed, 21 Oct 2015 18:38:56 +0200 Subject: [PATCH] [DoctrineBridge] Fix issue which prevent the profiler to explain a query --- .../DataCollector/DoctrineDataCollector.php | 3 ++ .../DoctrineDataCollectorTest.php | 28 +++++++++++++++---- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/Symfony/Bridge/Doctrine/DataCollector/DoctrineDataCollector.php b/src/Symfony/Bridge/Doctrine/DataCollector/DoctrineDataCollector.php index b4a2acd4e6..a57b9ae6ea 100644 --- a/src/Symfony/Bridge/Doctrine/DataCollector/DoctrineDataCollector.php +++ b/src/Symfony/Bridge/Doctrine/DataCollector/DoctrineDataCollector.php @@ -117,6 +117,9 @@ class DoctrineDataCollector extends DataCollector private function sanitizeQuery($connectionName, $query) { $query['explainable'] = true; + if (null === $query['params']) { + $query['params'] = array(); + } if (!is_array($query['params'])) { $query['params'] = array($query['params']); } diff --git a/src/Symfony/Bridge/Doctrine/Tests/DataCollector/DoctrineDataCollectorTest.php b/src/Symfony/Bridge/Doctrine/Tests/DataCollector/DoctrineDataCollectorTest.php index 1870aa650c..45d0310e6d 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/DataCollector/DoctrineDataCollectorTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/DataCollector/DoctrineDataCollectorTest.php @@ -79,9 +79,25 @@ class DoctrineDataCollectorTest extends \PHPUnit_Framework_TestCase $c = $this->createCollector($queries); $c->collect(new Request(), new Response()); - $collected_queries = $c->getQueries(); - $this->assertEquals($expected, $collected_queries['default'][0]['params'][0]); - $this->assertEquals($explainable, $collected_queries['default'][0]['explainable']); + $collectedQueries = $c->getQueries(); + $this->assertEquals($expected, $collectedQueries['default'][0]['params'][0]); + $this->assertEquals($explainable, $collectedQueries['default'][0]['explainable']); + } + + public function testCollectQueryWithNoParams() + { + $queries = array( + array('sql' => 'SELECT * FROM table1', 'params' => array(), 'types' => array(), 'executionMS' => 1), + array('sql' => 'SELECT * FROM table1', 'params' => null, 'types' => null, 'executionMS' => 1), + ); + $c = $this->createCollector($queries); + $c->collect(new Request(), new Response()); + + $collectedQueries = $c->getQueries(); + $this->assertEquals(array(), $collectedQueries['default'][0]['params']); + $this->assertTrue($collectedQueries['default'][0]['explainable']); + $this->assertEquals(array(), $collectedQueries['default'][1]['params']); + $this->assertTrue($collectedQueries['default'][1]['explainable']); } /** @@ -96,9 +112,9 @@ class DoctrineDataCollectorTest extends \PHPUnit_Framework_TestCase $c->collect(new Request(), new Response()); $c = unserialize(serialize($c)); - $collected_queries = $c->getQueries(); - $this->assertEquals($expected, $collected_queries['default'][0]['params'][0]); - $this->assertEquals($explainable, $collected_queries['default'][0]['explainable']); + $collectedQueries = $c->getQueries(); + $this->assertEquals($expected, $collectedQueries['default'][0]['params'][0]); + $this->assertEquals($explainable, $collectedQueries['default'][0]['explainable']); } public function paramProvider()