MySQL caret binds below multiplication, changing a DataFusion query result
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
- #2701 de @princejain756 — fechado sem integrar
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 72/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Domínio
- backend-api-design, databases
Direção de pesquisa
Start with the generic precedence table in src/dialect/mod.rs and the MySQL dialect in src/dialect/mysql.rs, then compare their handling of Caret and MulDivModOp. Reproduce the expression from the issue using the MySQL dialect and inspect existing parser tests for precedence cases. Done when the MySQL expression groups as (2 ^ 3) * 4 and returns 4, with a regression test covering the precedence.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Reproduction
With datafusion==55.0.0:
from datafusion import SessionConfig, SessionContext
config = SessionConfig().set("datafusion.sql_parser.dialect", "MySQL")
batches = SessionContext(config).sql("SELECT 2 ^ 3 * 4").collect()
print(batches[0].column(0).to_pylist())
Observed on 2026-10-19: [14]. MySQL's precedence table ranks bitwise ^ above *, so the expression groups as (2 ^ 3) * 4 and yields 4. The observed result corresponds to 2 ^ (3 * 4).
The generic precedence table gives Caret a lower value than MulDivModOp, and the MySQL dialect does not override caret precedence. The same relative tiers remain on the default branch as of 2026-10-19. This is a MySQL-dialect parser discrepancy with an observed downstream query-result difference in DataFusion.
- Linguagem predominante
- Rust
- Estrelas
- 3.5k
- Forks
- 805
- Merge médio
- 2d 3h
- PRs com merge (30d)
- 116
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
-
PostgreSQL
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
apache/datafusion-sqlparser-rs#2862 ·
Mantenedores costumam responder em até 1 dia
-
PostgreSQL
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
apache/datafusion-sqlparser-rs#2861 ·
Mantenedores costumam responder em até 1 dia
-
PostgreSQL
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 77/100
apache/datafusion-sqlparser-rs#2858 ·
Mantenedores costumam responder em até 1 dia
-
PostgreSQL
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
apache/datafusion-sqlparser-rs#2857 ·
Mantenedores costumam responder em até 1 dia
-
DuckDB Prolific Author
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
apache/datafusion-sqlparser-rs#2807 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de apache/datafusion-sqlparser-rs
Issues semelhantes
-
area:schema documentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
ElectronicWave/Elemental#252 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
dekobon/big-code-analysis#1887 ·
Mantenedores costumam responder em até 1 dia
-
Shell中文符号输入异常Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 82/100
Mantenedores costumam responder em até 1 dia