Scan: ExpressionAttributeValues without an expression answers with a ": FilterExpression is null" suffix the service does not send
Los mantenedores suelen responder en 4 días
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 70/100
Línea de trabajo
Empieza en validate_expression_param_usage en crates/core/src/expression/resolver.rs (alrededor de la línea 223), que construye el sufijo a partir de la lista de parámetros capaces de contener valores que recibe. Luego revisa handle_scan en crates/engine/src/scan.rs (líneas 109 a 115), que pasa [ExpressionKind::Filter]. Está terminado cuando un Scan con ExpressionAttributeValues y sin FilterExpression devuelve el mensaje sin el sufijo : FilterExpression is null, mientras que el comportamiento de los demás llamadores no cambia. Consulta las pruebas de validación de Scan existentes para ver el texto esperado.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
A Scan that carries ExpressionAttributeValues and no FilterExpression answers ExpressionAttributeValues can only be specified when using expressions: FilterExpression is null. The service's message ends after expressions.
Measured against Amazon DynamoDB in us-east-1 on 31 October 2026, each request twice, both answers identical. Table pk S HASH, sk S RANGE with three items. Eight Scan requests, each with "ExpressionAttributeValues": {":d": v} and no FilterExpression:
v |
Other fields | Service | ExtendDB main f49c5f823 (SQLite, release build) |
|---|---|---|---|
{"N": "1"} |
none | ValidationException: ExpressionAttributeValues can only be specified when using expressions |
ValidationException: ExpressionAttributeValues can only be specified when using expressions: FilterExpression is null |
{"N": "1"} inside 1, 2, 10, 30 and 31 nested L values (five requests) |
none | the same | the same |
{"M": {"k": {"N": "1"}}} |
none | the same | the same |
{"N": "1"} |
"ProjectionExpression": "a" |
the same | the same |
The service sends no suffix in any of the eight. A ninth request with 32 nested L values answers the nesting text on the service (#564), so the service checks nesting before it checks for values without an expression.
Where the suffix comes from
validate_expression_param_usage in crates/core/src/expression/resolver.rs (line 223) builds the message from the value_expr_params list its caller passes: no suffix for an empty list, : <param> is null for one entry, : <a> and <b> are null for more. Its doc comment states that the service lists the value-capable expression parameters of the API and that the empty list matches Query. handle_scan passes &[ExpressionKind::Filter] (crates/engine/src/scan.rs, line 109 to 115), so Scan gets the FilterExpression is null suffix. The other callers:
| Caller | List passed | Suffix produced |
|---|---|---|
Scan (scan.rs 109) |
[Filter] |
: FilterExpression is null |
Query (query.rs 222) |
[] |
none |
PutItem (put_item.rs 112) |
[Condition] |
: ConditionExpression is null |
DeleteItem (delete_item.rs 71) |
[Condition] |
: ConditionExpression is null |
UpdateItem (update_item.rs 126) |
[Update, Condition] |
: UpdateExpression and ConditionExpression are null |
GetItem (get_item.rs 45), BatchGetItem (batch_get_item.rs 73) |
[] (names only) |
none |
The 31 October measurement covers Scan only. Query's no-suffix answer on main (ExpressionAttributeValues can only be specified when using expressions, sent with KeyConditions and no expression) was not measured on the service on that date; the doc comment states it matches the service. The PutItem, DeleteItem and UpdateItem suffixes were not measured on 31 October, so this issue makes no claim about them. The suffix text was added in d4b60e0be (3 June 2026) with the Scan caller in 006cc6e13.
- Lenguaje dominante
- Rust
- Estrellas
- 517
- Forks
- 60
- Merge medio
- 4 d 19 h
- PR fusionados (30 d)
- 50
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ExtendDB/extenddb
-
bug security
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 4 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 4 días
-
init writes the TLS private key at the umask mode before setting it to 0600Posiblemente ocupada @LeeroyHannigan la tomó hoy. Abiertobug security
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 4 días
-
Export and import paths can write CR, LF and terminal escape sequences into the server logPosiblemente ocupada @LeeroyHannigan la tomó hoy. Abiertobug security
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 4 días
-
extenddb version prints the first build's commit after a rebuild in the same target directoryPosiblemente ocupada @LeeroyHannigan la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 4 días
Todos los issues de ExtendDB/extenddb
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
Rename SerVtdExt to ServtdExtAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 2 días
-
Android visitors are offered the Linux .deb on cap.so's homepage and download pagePosiblemente ocupada @patrickballard la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
CapSoftware/Cap#3677 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
DioxusLabs/blitz#1371 ·
Los mantenedores suelen responder en 1 día