@@ -1497,7 +1497,7 @@ public function getKeywords(): array
14971497 */
14981498 public function getSupportForCasting (): bool
14991499 {
1500- return false ;
1500+ return true ;
15011501 }
15021502
15031503 public function getSupportForNumericCasting (): bool
@@ -2966,7 +2966,6 @@ protected function convertArrayToWKT(array $geometry): string
29662966 */
29672967 public function find (Document $ collection , array $ queries = [], ?int $ limit = 25 , ?int $ offset = null , array $ orderAttributes = [], array $ orderTypes = [], array $ cursor = [], string $ cursorDirection = Database::CURSOR_AFTER , string $ forPermission = Database::PERMISSION_READ ): array
29682968 {
2969- $ attributes = $ collection ->getAttribute ('attributes ' , []);
29702969 $ collection = $ collection ->getId ();
29712970 $ name = $ this ->filter ($ collection );
29722971 $ roles = $ this ->authorization ->getRoles ();
@@ -3183,7 +3182,6 @@ public function find(Document $collection, array $queries = [], ?int $limit = 25
31833182 */
31843183 public function count (Document $ collection , array $ queries = [], ?int $ max = null ): int
31853184 {
3186- $ attributes = $ collection ->getAttribute ("attributes " , []);
31873185 $ collection = $ collection ->getId ();
31883186 $ name = $ this ->filter ($ collection );
31893187 $ roles = $ this ->authorization ->getRoles ();
@@ -3199,13 +3197,9 @@ public function count(Document $collection, array $queries = [], ?int $max = nul
31993197
32003198 $ queries = array_map (fn ($ query ) => clone $ query , $ queries );
32013199
3202- // Extract vector queries (used for ORDER BY) and keep non-vector for WHERE
3203- $ vectorQueries = [];
32043200 $ otherQueries = [];
32053201 foreach ($ queries as $ query ) {
3206- if (in_array ($ query ->getMethod (), Query::VECTOR_TYPES )) {
3207- $ vectorQueries [] = $ query ;
3208- } else {
3202+ if (!in_array ($ query ->getMethod (), Query::VECTOR_TYPES )) {
32093203 $ otherQueries [] = $ query ;
32103204 }
32113205 }
@@ -3228,22 +3222,11 @@ public function count(Document $collection, array $queries = [], ?int $max = nul
32283222 ? 'WHERE ' . \implode (' AND ' , $ where )
32293223 : '' ;
32303224
3231- // Add vector distance calculations to ORDER BY (similarity-aware LIMIT)
3232- $ vectorOrders = [];
3233- foreach ($ vectorQueries as $ query ) {
3234- $ vectorOrder = $ this ->getVectorDistanceOrder ($ query , $ binds , $ alias );
3235- if ($ vectorOrder ) {
3236- $ vectorOrders [] = $ vectorOrder ;
3237- }
3238- }
3239- $ sqlOrder = !empty ($ vectorOrders ) ? 'ORDER BY ' . implode (', ' , $ vectorOrders ) : '' ;
3240-
32413225 $ sql = "
32423226 SELECT COUNT(1) as sum FROM (
32433227 SELECT 1
32443228 FROM {$ this ->getSQLTable ($ name )} AS {$ this ->quote ($ alias )}
32453229 {$ sqlWhere }
3246- {$ sqlOrder }
32473230 {$ limit }
32483231 ) table_count
32493232 " ;
@@ -3280,7 +3263,6 @@ public function count(Document $collection, array $queries = [], ?int $max = nul
32803263 */
32813264 public function sum (Document $ collection , string $ attribute , array $ queries = [], ?int $ max = null ): int |float
32823265 {
3283- $ collectionAttributes = $ collection ->getAttribute ("attributes " , []);
32843266 $ collection = $ collection ->getId ();
32853267 $ name = $ this ->filter ($ collection );
32863268 $ attribute = $ this ->filter ($ attribute );
@@ -3297,13 +3279,9 @@ public function sum(Document $collection, string $attribute, array $queries = []
32973279
32983280 $ queries = array_map (fn ($ query ) => clone $ query , $ queries );
32993281
3300- // Extract vector queries (used for ORDER BY) and keep non-vector for WHERE
3301- $ vectorQueries = [];
33023282 $ otherQueries = [];
33033283 foreach ($ queries as $ query ) {
3304- if (in_array ($ query ->getMethod (), Query::VECTOR_TYPES )) {
3305- $ vectorQueries [] = $ query ;
3306- } else {
3284+ if (!in_array ($ query ->getMethod (), Query::VECTOR_TYPES )) {
33073285 $ otherQueries [] = $ query ;
33083286 }
33093287 }
@@ -3326,22 +3304,11 @@ public function sum(Document $collection, string $attribute, array $queries = []
33263304 ? 'WHERE ' . \implode (' AND ' , $ where )
33273305 : '' ;
33283306
3329- // Add vector distance calculations to ORDER BY (similarity-aware LIMIT)
3330- $ vectorOrders = [];
3331- foreach ($ vectorQueries as $ query ) {
3332- $ vectorOrder = $ this ->getVectorDistanceOrder ($ query , $ binds , $ alias );
3333- if ($ vectorOrder ) {
3334- $ vectorOrders [] = $ vectorOrder ;
3335- }
3336- }
3337- $ sqlOrder = !empty ($ vectorOrders ) ? 'ORDER BY ' . implode (', ' , $ vectorOrders ) : '' ;
3338-
33393307 $ sql = "
33403308 SELECT SUM( {$ this ->quote ($ attribute )}) as sum FROM (
33413309 SELECT {$ this ->quote ($ attribute )}
33423310 FROM {$ this ->getSQLTable ($ name )} AS {$ this ->quote ($ alias )}
33433311 {$ sqlWhere }
3344- {$ sqlOrder }
33453312 {$ limit }
33463313 ) table_count
33473314 " ;
0 commit comments