From b36d8cbde15bcadd49dbd2b71dad080d1c7de757 Mon Sep 17 00:00:00 2001 From: Tigrov Date: Sat, 27 Jun 2026 19:33:23 +0700 Subject: [PATCH 1/3] Minor fixes --- src/Builder/ArrayOverlapsBuilder.php | 2 +- src/Builder/JsonOverlapsBuilder.php | 2 +- src/Column/ColumnFactory.php | 2 +- tests/QueryBuilderTest.php | 33 ++++++++++++++++++++++++++++ 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/Builder/ArrayOverlapsBuilder.php b/src/Builder/ArrayOverlapsBuilder.php index d2f247983..ec5f4a58d 100644 --- a/src/Builder/ArrayOverlapsBuilder.php +++ b/src/Builder/ArrayOverlapsBuilder.php @@ -32,7 +32,7 @@ public function __construct( public function build(ExpressionInterface $expression, array &$params = []): string { $column = $expression->column instanceof ExpressionInterface - ? $this->queryBuilder->buildExpression($expression->column) + ? $this->queryBuilder->buildExpression($expression->column, $params) : $this->queryBuilder->getQuoter()->quoteColumnName($expression->column); $values = $expression->values; diff --git a/src/Builder/JsonOverlapsBuilder.php b/src/Builder/JsonOverlapsBuilder.php index 15fd2ac67..fe7f31d6c 100644 --- a/src/Builder/JsonOverlapsBuilder.php +++ b/src/Builder/JsonOverlapsBuilder.php @@ -32,7 +32,7 @@ public function __construct( public function build(ExpressionInterface $expression, array &$params = []): string { $column = $expression->column instanceof ExpressionInterface - ? $this->queryBuilder->buildExpression($expression->column) + ? $this->queryBuilder->buildExpression($expression->column, $params) : $this->queryBuilder->getQuoter()->quoteColumnName($expression->column); $values = $expression->values; diff --git a/src/Column/ColumnFactory.php b/src/Column/ColumnFactory.php index 4664f1059..08d354643 100644 --- a/src/Column/ColumnFactory.php +++ b/src/Column/ColumnFactory.php @@ -179,7 +179,7 @@ protected function isType(string $type): bool protected function normalizeNotNullDefaultValue(string $defaultValue, ColumnInterface $column): mixed { /** @var string $value */ - $value = preg_replace("/::[^:']+$/", '$1', $defaultValue); + $value = preg_replace("/::[^:']+$/", '', $defaultValue); if (str_starts_with($value, "B'") && $value[-1] === "'") { return $column->phpTypecast(substr($value, 2, -1)); diff --git a/tests/QueryBuilderTest.php b/tests/QueryBuilderTest.php index 6fc02da32..cd68738a6 100644 --- a/tests/QueryBuilderTest.php +++ b/tests/QueryBuilderTest.php @@ -539,6 +539,39 @@ public function testOverlapsConditionOperator(Closure|iterable|ExpressionInterfa $this->assertSame($expectedCount, $count); } + public function testArrayOverlapsWithExpressionColumnParams(): void + { + $db = $this->getSharedConnection(); + $qb = $db->getQueryBuilder(); + $params = []; + + $sql = $qb->buildExpression( + new ArrayOverlaps(new Expression('array_remove(column, :empty)', [':empty' => null]), [1, 2, 3]), + $params, + ); + + $this->assertSame('array_remove(column, :empty)::int[] && ARRAY[1,2,3]::int[]', $sql); + $this->assertSame([':empty' => null], $params); + } + + public function testJsonOverlapsWithExpressionColumnParams(): void + { + $db = $this->getSharedConnection(); + $qb = $db->getQueryBuilder(); + $params = []; + + $sql = $qb->buildExpression( + new JsonOverlaps(new Expression('jsonb_path_query_array(column, :path)', [':path' => '$[*]']), [1, 2, 3]), + $params, + ); + + $this->assertSame( + 'ARRAY(SELECT jsonb_array_elements_text(jsonb_path_query_array(column, :path)::jsonb))::int[] && ARRAY[1,2,3]::int[]', + $sql, + ); + $this->assertSame([':path' => '$[*]'], $params); + } + #[DataProviderExternal(QueryBuilderProvider::class, 'buildColumnDefinition')] public function testBuildColumnDefinition(string $expected, Closure|ColumnInterface|string $column): void { From 79b3e73d9fe48fcc51e90d8a702c7b9b6bde0e87 Mon Sep 17 00:00:00 2001 From: Tigrov Date: Fri, 3 Jul 2026 00:25:11 +0700 Subject: [PATCH 2/3] Add line to CHANGELOG.md [skip ci] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7792ed168..6058117e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Bug #484: Fix building range-type column definitions (@Tigrov) - Enh #489: Clarify return type of `phpTypecast()` methods for range columns (@Tigrov) - New #492: Add `getBounds()` method to range values (@Tigrov) +- Enh #495: Minor fixes (@Tigrov) ## 2.0.1 February 07, 2026 From 3458112eab6bb2db639b4c18d2b41703939eda8f Mon Sep 17 00:00:00 2001 From: Sergei Tigrov Date: Sat, 4 Jul 2026 12:26:41 +0700 Subject: [PATCH 3/3] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6058117e4..138fe3628 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ - Bug #484: Fix building range-type column definitions (@Tigrov) - Enh #489: Clarify return type of `phpTypecast()` methods for range columns (@Tigrov) - New #492: Add `getBounds()` method to range values (@Tigrov) -- Enh #495: Minor fixes (@Tigrov) +- Bug #495: Add missed parameters for building expressions in `ArrayOverlapsBuilder` and `JsonOverlapsBuilder` classes (@Tigrov) ## 2.0.1 February 07, 2026