Scan does not check that ExpressionAttributeValues numbers are numbers
Los mantenedores suelen responder en 2 días
Evaluación
Este issue todavía no se ha evaluado.
Descripción
What ExtendDB does
Scan does not check that the N values in ExpressionAttributeValues are numbers. Run on a release SQLite binary built from the fix for the same check on Query; the Scan path there is the same as on main (744ea291):
| request | ExtendDB |
|---|---|
FilterExpression: "a = :n", :n = {"N": "bob"} |
200, Count: 0 |
the same with :n an L, an M or an NS holding bob |
200, Count: 0 |
:n = {"N": "1e200"}, a 39-digit number, or {"N": ""} |
200, Count: 0 |
:n = {"N": "bob"} unused, FilterExpression: "a = :p" |
ValidationException Value provided in ExpressionAttributeValues unused in expressions: keys: {:n} |
FilterExpression: "a = :n", :n = {"N": "bob"}, a table that does not exist |
ResourceNotFoundException |
Limit: 0 with :n = {"N": "bob"} |
ValidationException 1 validation error detected: Value '0' at 'limit' failed to satisfy constraint: Member must have value greater than or equal to 1 |
What DynamoDB does
Measured 2026-10-24 at 21:06 UTC in us-east-1, admin principal, client retries off, each request twice with the same answer:
| request | DynamoDB |
|---|---|
FilterExpression: "a = :n", :n = {"N": "bob"} |
ValidationException The parameter cannot be converted to a numeric value: bob |
the same with :n an L, an M or an NS holding bob |
the same message |
:n = {"N": "bob"} unused, FilterExpression: "a = :p" |
the same message |
FilterExpression: "a = :n", :n = {"N": "bob"}, a table that does not exist |
the same message |
:n = {"N": "1e200"} |
Number overflow. Attempting to store a number with magnitude larger than supported range |
:n a 39-digit number |
Attempting to store more than 38 significant digits in a Number |
:n = {"N": ""} |
The parameter cannot be converted to a numeric value: |
Limit: 0 with :n = {"N": "bob"} |
ValidationException 1 validation error detected: Value at 'Limit' failed to satisfy constraint: Member must have value greater than or equal to 1 |
So the service checks every number in a Scan's ExpressionAttributeValues, nested ones included, after Limit and before the table lookup, whether or not an expression reads the value. Its Limit message names 'Limit' with no value.
Fix
Run the Query request-time number check (validate_expression_attribute_value_numbers in crates/engine/src/query_key_values.rs, once that change merges) on Scan too, after the Limit check and before the table lookup, and use the service's Limit text.
- Lenguaje dominante
- Rust
- Estrellas
- 517
- Forks
- 60
- Merge medio
- 2 d 23 h
- PR fusionados (30 d)
- 25
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
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 2 días
-
[storage.cassandra] accepts unknown keys silentlyPosiblemente ocupada @LeeroyHannigan la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
ExtendDB/extenddb#540 · 1 asignado ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 2 días
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 2 días
Todos los issues de ExtendDB/extenddb
Issues similares
-
nn::linear: weight initialization depends on `bias` because the bias is created before the weightPosiblemente ocupada @monfortema la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
LaurentMazare/tch-rs#1067 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
FavioVazquez/mollify#62 ·
-
C-enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
obi1kenobi/cargo-semver-checks#1785 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 61/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
fendouai/awesome-deepseek-harness#125 ·
Los mantenedores suelen responder en 4 días