From a8794c5e809774f922d28db337865b4cb82392e4 Mon Sep 17 00:00:00 2001 From: Tigrov Date: Wed, 28 May 2025 10:36:35 +0700 Subject: [PATCH 1/2] Add alias in `DQLQueryBuilder::selectExists()` method for consistency --- src/DQLQueryBuilder.php | 2 +- tests/Provider/QueryBuilderProvider.php | 11 ----------- tests/QueryBuilderTest.php | 12 +++++++++--- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/DQLQueryBuilder.php b/src/DQLQueryBuilder.php index ae5bedf5..84db0663 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 e4de5602..a381a663 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')] From b72e038266e4fe94a1cd0d2cbf2f174084856021 Mon Sep 17 00:00:00 2001 From: Tigrov Date: Wed, 28 May 2025 17:47:29 +0700 Subject: [PATCH 2/2] Add line to CHANGELOG.md [skip ci] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c618045e..c61ed9ec 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