Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Scan does not check that ExpressionAttributeValues numbers are numbers

Abierto
#545 0 comentarios 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 2 días

@LeeroyHannigan ya está trabajando en esto.

Desde el 25/10/2026.

  • #562 de @LeeroyHannigan — abierto

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

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ExtendDB/extenddb

Todos los issues de ExtendDB/extenddb

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.