diff --git a/src/Database/Validator/Query/Filter.php b/src/Database/Validator/Query/Filter.php index 6e2e1e5ae..abe2d6c95 100644 --- a/src/Database/Validator/Query/Filter.php +++ b/src/Database/Validator/Query/Filter.php @@ -184,7 +184,7 @@ protected function isValidAttributeAndValues(string $attribute, array $values, s // For dotted attributes on objects, validate as string (path queries) if ($isDottedOnObject) { $validator = new Text(0, 0); - continue 2; + break; } // object containment queries on the base object attribute diff --git a/tests/e2e/Adapter/Scopes/ObjectAttributeTests.php b/tests/e2e/Adapter/Scopes/ObjectAttributeTests.php index e966039ad..aacd0c86f 100644 --- a/tests/e2e/Adapter/Scopes/ObjectAttributeTests.php +++ b/tests/e2e/Adapter/Scopes/ObjectAttributeTests.php @@ -1379,6 +1379,18 @@ public function testNestedObjectAttributeEdgeCases(): void ]) ]); + if ($database->getAdapter()->getSupportForAttributes()) { + try { + $database->find($collectionId, [ + Query::equal('profile.level1.level2.level3.level4.value', [10]) + ]); + $this->fail('Expected nesting as string'); + } catch (Exception $e) { + $this->assertInstanceOf(QueryException::class, $e); + $this->assertEquals('Invalid query: Query value is invalid for attribute "profile"', $e->getMessage()); + } + } + $results = $database->find($collectionId, [ Query::equal('profile.level1.level2.level3.level4.value', ['deep_value_1']) ]);