Slice with a stride and no upper bound (`arr[1: :4]`) is displayed as `arr[1::4]`, which doesn't parse
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 70/100
Direzione di ricerca
Il bug riguarda il modo in cui Subscript::Slice viene stampato quando upper_bound è assente ma è impostato uno stride; inizia dall'implementazione di Display in src/ast/mod.rs, dove i due due punti sono scritti uno accanto all'altro. Controlla la gestione degli slice nel parser per [1: :4] e [1:-:4] per capire quale forma deve sopravvivere al round-trip. È completato quando le tre query di riproduzione della issue vengono di nuovo analizzate correttamente, con un test di round-trip aggiunto accanto ai test sugli slice esistenti in tests/sqlparser_common.rs.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Subscript::Slice with upper_bound: None and a stride prints the two colons next to each other, and the tokenizer then reads :: (cast):
SELECT ([1, 2, 3, 4, 5, 6, 7, 8, 9])[1: :4]
-> displays as: SELECT ([1, 2, 3, 4, 5, 6, 7, 8, 9])[1::4]
-> reparse: Expected: a data type name, found: 4 at Line: 1, Column: 41
SELECT ([1, 2, 3, 4, 5, 6, 7, 8, 9])[: :4]
-> displays as: SELECT ([1, 2, 3, 4, 5, 6, 7, 8, 9])[::4]
-> reparse: Expected: an expression, found: :: at Line: 1, Column: 38
SELECT ([1, 2, 3, 4, 5, 6, 7, 8, 9])[1:-:4]
-> round-trips (fine)
DuckDB documents [1:-:4] for this (https://duckdb.org/docs/stable/sql/functions/list#slicing), but it also runs [1: :4] (returns [1, 5, 9]), and the parser accepts it. Something like [1: :4] in Display would round-trip.
Tested with DuckDbDialect on main ce12f1f6 (also 0.63.0 and 0.58.0).
Found with a property-based fuzzer (round trip check); I used AI assistance for triage and verified every case above.
- Lingua principale
- Rust
- Stelle
- 3.5k
- Fork
- 801
- Merge medio
- 2g 19h
- PR unite (30g)
- 108
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna 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 apache/datafusion-sqlparser-rs
-
DuckDB PostgreSQL Prolific Author
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
apache/datafusion-sqlparser-rs#2803 ·
I maintainer di solito rispondono entro 1 giorno
-
Databricks Prolific Author Spark
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
apache/datafusion-sqlparser-rs#2801 ·
I maintainer di solito rispondono entro 1 giorno
-
PostgreSQL: support FOR NO KEY UPDATE and FOR KEY SHARE row-locking clausesForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. ApertaPostgreSQL
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
apache/datafusion-sqlparser-rs#2778 ·
I maintainer di solito rispondono entro 1 giorno
-
`SHOW ... ILIKE '<pattern>'` is displayed without quotesForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. ApertaProlific Author
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
apache/datafusion-sqlparser-rs#2759 ·
I maintainer di solito rispondono entro 1 giorno
-
Should `DELETE + LIMIT` be supported by the generic dialect ?Forse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. ApertaDuckDB MySQL PostgreSQL
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
apache/datafusion-sqlparser-rs#2615 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di apache/datafusion-sqlparser-rs
Issue simili
-
A match arm above the largest i64 is compared as 0Forse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 83/100
DioxusLabs/dioxus#6063 ·
I maintainer di solito rispondono entro 1 giorno
-
`nsh-core` fails to compile when taffy's default `calc` feature is enabled elsewhere in the graphAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
longbridge/nsh#966 ·
I maintainer di solito rispondono entro 1 giorno
-
Windows docs: pin a tested ConPTY version for Kitty graphics; 1.25.260930003 corrupts large uploadsAperta
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
raphamorim/rio#2021 ·
I maintainer di solito rispondono entro 1 giorno
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
non7top/sigstore-shell#38 ·
I maintainer di solito rispondono entro 1 giorno