[BUG] Preserve DynamoDB N and NS numeric fidelity during decoding
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
Direzione di ricerca
Individua l’implementazione di DynamoItemMapper e i test round-trip esistenti per read, query, update e number-set. Inizia tracciando il modo in cui le stringhe N e NS diventano nodi Jackson, quindi verifica che i decimali ad alta precisione, le forme esponenziali e gli interi fuori intervallo preservino i propri valori numerici durante la decodifica e la ricodifica. Il limite numerico portabile deve essere esplicito, come richiesto dai criteri di accettazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug description
DynamoItemMapper currently decodes DynamoDB N and NS strings through Java primitive parsers. Decimal values are converted through Double.parseDouble(...), which can silently lose DynamoDB's native decimal precision, and integral values outside the long range cannot be represented by the current fallback.
The behavior affects read/query/update result fidelity and predates #105, so it should be fixed independently of partial update.
Provider
- Azure Cosmos DB
- Amazon DynamoDB
- Google Cloud Spanner
- Not provider-specific
Reproduction steps
- Store an
Nvalue with more precision than binary64 can represent, such as a 38-digit DynamoDB decimal. - Store a valid DynamoDB integral value outside the Java
longrange. - Read the item or decode the same values through an
NSattribute. - Compare the returned Jackson nodes with the native numeric strings.
Expected behaviour
The mapper preserves native DynamoDB numeric fidelity (for example with DecimalNode/BigIntegerNode) until the portable API applies its explicitly documented numeric contract.
Actual behaviour
Decimal values can be silently rounded to binary64, and large integral values can fail during primitive parsing.
Acceptance criteria
-
Nand every member ofNSdecode without binary64 precision loss. - Valid DynamoDB integers outside the Java
longrange are handled deterministically. - Encoding the decoded node back to DynamoDB preserves the numeric value.
- Read, query, and partial-update round-trip tests cover high-precision decimals, exponent forms, large positive/negative integers, and number sets.
- Integration with the future portable numeric boundary is explicit rather than an accidental mapper conversion.
Additional context
Related umbrella issues: #37 and #64.
- Lingua principale
- Java
- Stelle
- 7
- Fork
- 7
- Merge medio
- 1g 19h
- PR unite (30g)
- 3
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di microsoft/multiclouddb-sdk-for-java
-
Portable document key fields differ across Cosmos/Dynamo and read/query (id vs sortKey)Forse già presa @allenkim0129 l’ha presa 12 giorni fa. Aperta
microsoft/multiclouddb-sdk-for-java#121 · 1 assegnatario ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 28/100
Tutte le issue di microsoft/multiclouddb-sdk-for-java
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
PhasetransCrystal/FPSMatch#47 ·
I maintainer di solito rispondono entro 1 giorno
-
Remove unactionable info logApertabug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 76/100
apache/maven-toolchains-plugin#205 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug] Dated CSV export filenames use the UTC day rather than the operator dayForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
apache/rocketmq-dashboard#6896 ·
I maintainer di solito rispondono entro 3 giorni