DuckDB: `f(a == b)` is displayed as `f(a = b)`, which reparses as a named argument
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
Start with how BinaryOperator::Eq is displayed, and with the DuckDB dialect's supports_named_fn_args_with_eq_operator flag (#1182) that makes a = b inside a call a named argument. Reproduce SELECT coalesce(a == b) FROM t as a round trip and compare the AST before and after. Before changing anything, check with maintainers whether this counts as accepted normalisation, since the thread has no answer yet. Done means the round trip keeps Unnamed(BinaryOp { a Eq b }), or the maintainers have documented why it does not.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
== is parsed as BinaryOperator::Eq and displayed as =. Inside a function call with DuckDbDialect, a = b is a named argument (supports_named_fn_args_with_eq_operator, #1182), so the output means something else:
SELECT coalesce(a == b) FROM t
-> AST arg: Unnamed(BinaryOp { a Eq b })
-> displays as: SELECT coalesce(a = b) FROM t
-> reparse arg: Named { name: a, arg: b, operator: Equals }
SELECT a == b FROM t
-> displays as SELECT a = b FROM t, same AST (fine)
DuckDB documents = and == as equal (https://duckdb.org/docs/stable/sql/expressions/comparison_operators) and evaluates coalesce(a == b) as a comparison. This may count as accepted normalisation; the only effect is the AST change inside call arguments.
Tested 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.
- Lenguaje dominante
- Rust
- Estrellas
- 3.5k
- Forks
- 805
- Merge medio
- 2 d 3 h
- PR fusionados (30 d)
- 116
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/datafusion-sqlparser-rs
-
Redshift
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
apache/datafusion-sqlparser-rs#2959 ·
Los mantenedores suelen responder en 1 día
-
Redshift
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
apache/datafusion-sqlparser-rs#2958 ·
Los mantenedores suelen responder en 1 día
-
PostgreSQL
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
apache/datafusion-sqlparser-rs#2862 ·
Los mantenedores suelen responder en 1 día
-
PostgreSQL
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
apache/datafusion-sqlparser-rs#2861 ·
Los mantenedores suelen responder en 1 día
-
PostgreSQL
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
apache/datafusion-sqlparser-rs#2858 ·
Los mantenedores suelen responder en 1 día
Todos los issues de apache/datafusion-sqlparser-rs
Issues similares
-
area:schema documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
ElectronicWave/Elemental#252 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
dekobon/big-code-analysis#1887 ·
Los mantenedores suelen responder en 1 día
-
Shell中文符号输入异常Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día