Skip to content

Commit 79e9211

Browse files
authored
Merge pull request #70 from homersimpsons/fix/prepare-statement-cache
Prepare Statement Cache issue
2 parents 3de7b7c + d2415e6 commit 79e9211

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

src/Mouf/Database/MagicQuery.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public function buildPreparedStatement(string $sql, array $parameters = []): str
137137
$sql = $this->getTwigEnvironment()->render($sql, $parameters);
138138
}
139139

140-
$availableParameterKeys = array_keys(array_filter($parameters, static function($param) { return $param !== null;}));
140+
$availableParameterKeys = array_keys(array_filter($parameters, static function($param) { return $param !== null && $param !== [];}));
141141
// We choose md4 because it is fast.
142142
$cacheKey = 'request_build_'.hash('md4', get_class($this->platform).'__'.$sql.'__'.implode('_/_', $availableParameterKeys));
143143
$newSql = $this->cache->fetch($cacheKey);

tests/Mouf/Database/MagicQueryTest.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,4 +475,12 @@ public function testSetOutputDialect()
475475
$this->assertEquals('SELECT id FROM users', self::simplifySql($magicQuery->buildPreparedStatement($sql)));
476476

477477
}
478+
479+
public function testPrepareStatementCache(): void
480+
{
481+
$magicQuery = new MagicQuery(null, new ArrayCache());
482+
483+
$this->assertEquals('SELECT * FROM users WHERE 0 <> 0', self::simplifySql($magicQuery->buildPreparedStatement('SELECT * FROM users WHERE id IN :users', ['users' => []])));
484+
$this->assertEquals('SELECT * FROM users WHERE id IN (:users)', self::simplifySql($magicQuery->buildPreparedStatement('SELECT * FROM users WHERE id IN :users', ['users' => [1]])));
485+
}
478486
}

0 commit comments

Comments
 (0)