apache / apache/datafusion-sqlparser-rs
MSSQL: Issue with CTE anchors
- Lenguaje dominante
- Rust
- Estrellas
- 3.5k
- Forks
- 772
- Merge medio
- 4 d 9 h
- PR fusionados (30 d)
- 17
Descripción
Hi, the following is a valid MSSQL syntax
When parsed with the `sql-parser-rs`
```sql
WITH RecursiveCTE AS (
-- Anchor member
SELECT TOP 1
[ID],
CAST([Amount] AS NUMERIC) AS [Amount],
CAST([Balance] AS NUMERIC) AS [Balance],
(SELECT TOP 1 [FixedValue] FROM [Settings] ORDER BY [ID] DESC) AS [Constant]
FROM [Transactions]
ORDER BY [ID] ASC
UNION ALL
-- Recursive member
SELECT
[ID] + 1 AS [ID],
CAST([Amount] * 0.8 AS NUMERIC) AS [Amount],
CAST(([Amount] * 0.8 - [Constant]) AS NUMERIC) AS [Balance],
[Constant]
FROM RecursiveCTE
WHERE [Balance] > 0
)
SELECT [ID], [Balance]
FROM RecursiveCTE
ORDER BY [ID] ASC;
```
it gives the following error
```bash
sql parser error: Expected: ), found: UNION at Line: 11, Column: 5
```
https://learn.microsoft.com/en-us/sql/t-sql/queries/with-common-table-expression-transact-sql
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Línea de trabajo
Comienza reproduciendo la consulta CTE de MSSQL proporcionada en sql-parser-rs y compara el manejo de CTE del parser con la documentación de Microsoft enlazada. Rastrea el punto de entrada del parser que informa de unexpected UNION y, a continuación, añade una prueba de regresión que demuestre que la consulta se analiza correctamente.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- rust, sql
- Área
- databases
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 48/100