Slice with a stride and no upper bound (`arr[1: :4]`) is displayed as `arr[1::4]`, which doesn't parse
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 70/100
Direção de pesquisa
O bug está em como Subscript::Slice é impresso quando upper_bound está ausente, mas há um stride definido. Comece pela implementação de Display em src/ast/mod.rs, onde os dois dois-pontos são escritos lado a lado. Verifique o tratamento de slices do parser para [1: :4] e [1:-:4] para descobrir qual grafia precisa fazer o round-trip. Está concluído quando as três consultas de reprodução da issue são analisadas novamente, com um teste de round-trip adicionado junto aos testes de slice existentes em tests/sqlparser_common.rs.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- Rust
- Estrelas
- 3.5k
- Forks
- 801
- Merge médio
- 2d 19h
- PRs com merge (30d)
- 108
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Sem guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de apache/datafusion-sqlparser-rs
-
DuckDB PostgreSQL Prolific Author
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
apache/datafusion-sqlparser-rs#2803 ·
Mantenedores costumam responder em até 1 dia
-
Databricks Prolific Author Spark
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
apache/datafusion-sqlparser-rs#2801 ·
Mantenedores costumam responder em até 1 dia
-
PostgreSQL: support FOR NO KEY UPDATE and FOR KEY SHARE row-locking clausesTalvez livre de novo Um pull request para esta issue foi fechado sem ser mesclado. AbertaPostgreSQL
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
apache/datafusion-sqlparser-rs#2778 ·
Mantenedores costumam responder em até 1 dia
-
`SHOW ... ILIKE '<pattern>'` is displayed without quotesTalvez livre de novo Um pull request para esta issue foi fechado sem ser mesclado. AbertaProlific Author
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
apache/datafusion-sqlparser-rs#2759 ·
Mantenedores costumam responder em até 1 dia
-
Should `DELETE + LIMIT` be supported by the generic dialect ?Talvez livre de novo Um pull request para esta issue foi fechado sem ser mesclado. AbertaDuckDB MySQL PostgreSQL
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
apache/datafusion-sqlparser-rs#2615 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de apache/datafusion-sqlparser-rs
Issues semelhantes
-
🐞 bug 🧩 bevy_gantz_egui
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
nannou-org/gantz#500 ·
Mantenedores costumam responder em até 1 dia
-
[Feature]: Fedora 45 repoAbertaenhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
metasequoiaime/msime#10989 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
fritzprix/libr-agent#2612 ·
Mantenedores costumam responder em até 1 dia
-
crate: spate-core priority: low
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
NSPG13/agent-bounties#1749 ·
Mantenedores costumam responder em até 1 dia