apache / apache/datafusion-sqlparser-rs
Cannot parse table alias or cte alias in Postgres dialect
- Vorherrschende Sprache
- Rust
- Sterne
- 3.5k
- Forks
- 772
- Ø Merge
- 4 T. 9 Std.
- Gemergte PRs (30 T.)
- 17
Beschreibung
Sorry for bothering you.
I'm using sqlparser = "0.40.0"
This is my code:
```rust
use sqlparser::dialect::PostgreSqlDialect;
use sqlparser::parser::{Parser, ParserError};
fn main() {
let dialect = PostgreSqlDialect {};
let sql1 = r#"
WITH existing AS (SELECT test_table.id FROM test_tables AS test_table WHERE (a = 12) AND (b = 34)),
inserted AS (INSERT INTO test_tables AS test_table (id, a, b, c) VALUES (DEFAULT, 56, 78, 90) ON CONFLICT (a, b)
DO UPDATE SET c = EXCLUDED.c WHERE (test_table.c != EXCLUDED.c)) SELECT c FROM existing"#;
let sql2 = "INSERT INTO test_tables AS test_table (id, a) VALUES (DEFAULT, 123) ON CONFLICT DO NOTHING RETURNING id";
let ast1 = Parser::parse_sql(&dialect, sql1);
match ast1 {
Ok(_) => {
}
Err(e) => {
println!("fail ast1: {}", e);
}
}
let ast2 = Parser::parse_sql(&dialect, sql2);
match ast2 {
Ok(_) => {
}
Err(e) => {
println!("fail ast2: {}", e);
}
}
}
```
error output:
```bash
fail ast1: sql parser error: Expected SELECT, VALUES, or a subquery in the query body, found: AS at Line: 3, Column 43
fail ast2: sql parser error: Expected SELECT, VALUES, or a subquery in the query body, found: AS at Line: 1, Column 25
```
Thank you!
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginne mit den Aufrufen von PostgreSqlDialect und Parser::parse_sql im Reproducer und führe sowohl sql1 als auch sql2 aus, um die Fehler bei der Alias-Analyse zu bestätigen. Verfolge, wie INSERT-Anweisungen und CTE-Abfragekörper Aliase behandeln; abgeschlossen ist die Aufgabe, wenn beide PostgreSQL-Anweisungen ohne die gemeldeten Fehler erfolgreich geparst werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- postgresql, rust
- Bereich
- databases
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 42/100