diff --git a/CHANGELOG.md b/CHANGELOG.md index c618045..c61ed9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -46,6 +46,7 @@ - New #316: Realize `Schema::loadResultColumn()` method (@Tigrov) - New #323: Use `DateTimeColumn` class for datetime column types (@Tigrov) - Enh #324: Refactor `Command::insertWithReturningPks()` method (@Tigrov) +- Chg #326: Add alias in `DQLQueryBuilder::selectExists()` method for consistency with other DBMS (@Tigrov) ## 1.3.0 March 21, 2024 diff --git a/src/DQLQueryBuilder.php b/src/DQLQueryBuilder.php index ae5bedf..84db066 100644 --- a/src/DQLQueryBuilder.php +++ b/src/DQLQueryBuilder.php @@ -57,7 +57,7 @@ public function buildOrderByAndLimit( public function selectExists(string $rawSql): string { - return 'SELECT CASE WHEN EXISTS(' . $rawSql . ') THEN 1 ELSE 0 END FROM DUAL'; + return 'SELECT CASE WHEN EXISTS(' . $rawSql . ') THEN 1 ELSE 0 END AS "0" FROM DUAL'; } public function buildFrom(array|null $tables, array &$params): string diff --git a/tests/Provider/QueryBuilderProvider.php b/tests/Provider/QueryBuilderProvider.php index e4de560..a381a66 100644 --- a/tests/Provider/QueryBuilderProvider.php +++ b/tests/Provider/QueryBuilderProvider.php @@ -119,17 +119,6 @@ public static function insert(): array return $insert; } - public static function selectExist(): array - { - $selectExist = parent::selectExist(); - - $selectExist[0][1] = <<close(); } - #[DataProviderExternal(QueryBuilderProvider::class, 'selectExist')] - public function testSelectExists(string $sql, string $expected): void + public function testSelectExists(): void { - parent::testSelectExists($sql, $expected); + $db = $this->getConnection(); + $qb = $db->getQueryBuilder(); + + $sql = 'SELECT 1 FROM "customer" WHERE "id" = 1'; + // Alias is not required in Oracle, but it is added for consistency with other DBMS. + $expected = 'SELECT CASE WHEN EXISTS(SELECT 1 FROM "customer" WHERE "id" = 1) THEN 1 ELSE 0 END AS "0" FROM DUAL'; + + $this->assertSame($expected, $qb->selectExists($sql)); } #[DataProviderExternal(QueryBuilderProvider::class, 'update')]