Loading core/lib/Drupal/Core/Database/Driver/sqlite/Connection.php +11 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,7 @@ public static function open(array &$connection_options = []) { // Create functions needed by SQLite. $pdo->sqliteCreateFunction('if', [__CLASS__, 'sqlFunctionIf']); $pdo->sqliteCreateFunction('greatest', [__CLASS__, 'sqlFunctionGreatest']); $pdo->sqliteCreateFunction('least', [__CLASS__, 'sqlFunctionLeast']); $pdo->sqliteCreateFunction('pow', 'pow', 2); $pdo->sqliteCreateFunction('exp', 'exp', 1); $pdo->sqliteCreateFunction('length', 'strlen', 1); Loading Loading @@ -239,6 +240,16 @@ public static function sqlFunctionGreatest() { } } /** * SQLite compatibility implementation for the LEAST() SQL function. */ public static function sqlFunctionLeast() { // Remove all NULL, FALSE and empty strings values but leaves 0 (zero) values. $values = array_filter(func_get_args(), 'strlen'); return count($values) < 1 ? NULL : min($values); } /** * SQLite compatibility implementation for the CONCAT() SQL function. */ Loading core/tests/Drupal/KernelTests/Core/Database/SelectLeastTest.php 0 → 100644 +32 −0 Original line number Diff line number Diff line <?php namespace Drupal\KernelTests\Core\Database; /** * Tests the SQL LEAST operator. * * @group Database */ class SelectLeastTest extends DatabaseTestBase { /** * Tests the SQL LEAST operator. * * @dataProvider selectLeastProvider */ public function testSelectLeast($values, $expected) { $least = $this->connection->query("SELECT LEAST(:values[])", [':values[]' => $values])->fetchField(); $this->assertEquals($expected, $least); } public function selectLeastProvider() { return [ [[1, 2, 3, 4, 5, 6], 1], [['A', 'B', 'C', 'NULL', 'F'], 'A'], [['NULL', 'NULL'], 'NULL'], [['TRUE', 'FALSE'], 'FALSE'], [['A', 'B', 'C', 'NULL'], 'A'], ]; } } Loading
core/lib/Drupal/Core/Database/Driver/sqlite/Connection.php +11 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,7 @@ public static function open(array &$connection_options = []) { // Create functions needed by SQLite. $pdo->sqliteCreateFunction('if', [__CLASS__, 'sqlFunctionIf']); $pdo->sqliteCreateFunction('greatest', [__CLASS__, 'sqlFunctionGreatest']); $pdo->sqliteCreateFunction('least', [__CLASS__, 'sqlFunctionLeast']); $pdo->sqliteCreateFunction('pow', 'pow', 2); $pdo->sqliteCreateFunction('exp', 'exp', 1); $pdo->sqliteCreateFunction('length', 'strlen', 1); Loading Loading @@ -239,6 +240,16 @@ public static function sqlFunctionGreatest() { } } /** * SQLite compatibility implementation for the LEAST() SQL function. */ public static function sqlFunctionLeast() { // Remove all NULL, FALSE and empty strings values but leaves 0 (zero) values. $values = array_filter(func_get_args(), 'strlen'); return count($values) < 1 ? NULL : min($values); } /** * SQLite compatibility implementation for the CONCAT() SQL function. */ Loading
core/tests/Drupal/KernelTests/Core/Database/SelectLeastTest.php 0 → 100644 +32 −0 Original line number Diff line number Diff line <?php namespace Drupal\KernelTests\Core\Database; /** * Tests the SQL LEAST operator. * * @group Database */ class SelectLeastTest extends DatabaseTestBase { /** * Tests the SQL LEAST operator. * * @dataProvider selectLeastProvider */ public function testSelectLeast($values, $expected) { $least = $this->connection->query("SELECT LEAST(:values[])", [':values[]' => $values])->fetchField(); $this->assertEquals($expected, $least); } public function selectLeastProvider() { return [ [[1, 2, 3, 4, 5, 6], 1], [['A', 'B', 'C', 'NULL', 'F'], 'A'], [['NULL', 'NULL'], 'NULL'], [['TRUE', 'FALSE'], 'FALSE'], [['A', 'B', 'C', 'NULL'], 'A'], ]; } }