Skip to content

Commit 91d6b2c

Browse files
Baachifabpot
authored andcommitted
[DoctrineBridge] Fix issue which prevent the profiler to explain a query
1 parent 42d22d2 commit 91d6b2c

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

DataCollector/DoctrineDataCollector.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,9 @@ private function sanitizeQueries($connectionName, $queries)
117117
private function sanitizeQuery($connectionName, $query)
118118
{
119119
$query['explainable'] = true;
120+
if (null === $query['params']) {
121+
$query['params'] = array();
122+
}
120123
if (!is_array($query['params'])) {
121124
$query['params'] = array($query['params']);
122125
}

Tests/DataCollector/DoctrineDataCollectorTest.php

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,25 @@ public function testCollectQueries($param, $types, $expected, $explainable)
7979
$c = $this->createCollector($queries);
8080
$c->collect(new Request(), new Response());
8181

82-
$collected_queries = $c->getQueries();
83-
$this->assertEquals($expected, $collected_queries['default'][0]['params'][0]);
84-
$this->assertEquals($explainable, $collected_queries['default'][0]['explainable']);
82+
$collectedQueries = $c->getQueries();
83+
$this->assertEquals($expected, $collectedQueries['default'][0]['params'][0]);
84+
$this->assertEquals($explainable, $collectedQueries['default'][0]['explainable']);
85+
}
86+
87+
public function testCollectQueryWithNoParams()
88+
{
89+
$queries = array(
90+
array('sql' => 'SELECT * FROM table1', 'params' => array(), 'types' => array(), 'executionMS' => 1),
91+
array('sql' => 'SELECT * FROM table1', 'params' => null, 'types' => null, 'executionMS' => 1),
92+
);
93+
$c = $this->createCollector($queries);
94+
$c->collect(new Request(), new Response());
95+
96+
$collectedQueries = $c->getQueries();
97+
$this->assertEquals(array(), $collectedQueries['default'][0]['params']);
98+
$this->assertTrue($collectedQueries['default'][0]['explainable']);
99+
$this->assertEquals(array(), $collectedQueries['default'][1]['params']);
100+
$this->assertTrue($collectedQueries['default'][1]['explainable']);
85101
}
86102

87103
/**
@@ -96,9 +112,9 @@ public function testSerialization($param, $types, $expected, $explainable)
96112
$c->collect(new Request(), new Response());
97113
$c = unserialize(serialize($c));
98114

99-
$collected_queries = $c->getQueries();
100-
$this->assertEquals($expected, $collected_queries['default'][0]['params'][0]);
101-
$this->assertEquals($explainable, $collected_queries['default'][0]['explainable']);
115+
$collectedQueries = $c->getQueries();
116+
$this->assertEquals($expected, $collectedQueries['default'][0]['params'][0]);
117+
$this->assertEquals($explainable, $collectedQueries['default'][0]['explainable']);
102118
}
103119

104120
public function paramProvider()

0 commit comments

Comments
 (0)