Skip to content

Nested alias doesn't work #537

Description

@waitingkuo

from apache/datafusion#2867

while we have nested alias, the outer doesn't work

use sqlparser::dialect::GenericDialect;use sqlparser::parser::Parser;fnmain(){let dialect = GenericDialect{};// or AnsiDialectlet sql = "SELECT __t404.__c394, __t404.__c395, __t404.__c396, __t404.__c397 FROM (( (SELECT test1.c0 AS __c394, test1.c1 AS __c395, test1.c2 AS __c396, test1.c3 AS __c397 FROM (test1)) __t398 INNER JOIN (SELECT test1.c0 AS __c399, test1.c1 AS __c400, test1.c2 AS __c401, test1.c3 AS __c402 FROM (test1)) __t403 ON __t398.__c395 = __t403.__c401) __t404) WHERE __t404.__c395 != __t404.__c396; ";let ast = Parser::parse_sql(&dialect, sql).unwrap();println!("AST: {:?}", ast);}
➜ sp git:(master) ✗ cargo run
Compiling sp v0.1.0 (/Users/willy/willy/df-workspace/sp)
Finished dev [unoptimized + debuginfo] target(s) in 0.30s
Running `target/debug/sp`
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: ParserError("Expected ), found: __t404")', src/main.rs:26:48
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

while this works

use sqlparser::dialect::GenericDialect;use sqlparser::parser::Parser;fnmain(){let dialect = GenericDialect{};// or AnsiDialect/*  let sql = "SELECT a, b, 123, myfunc(b) \ FROM table_1 \ WHERE a > b AND b < 100 \ ORDER BY a DESC, b"; */let sql = "SELECT __c394, __c395, __c396, __c397 FROM (( (SELECT test1.c0 AS __c394, test1.c1 AS __c395, test1.c2 AS __c396, test1.c3 AS __c397 FROM (test1)) __t398 INNER JOIN (SELECT test1.c0 AS __c399, test1.c1 AS __c400, test1.c2 AS __c401, test1.c3 AS __c402 FROM (test1)) __t403 ON __t398.__c395 = __t403.__c401) ) WHERE __c395 != __c396; ";let ast = Parser::parse_sql(&dialect, sql).unwrap();println!("AST: {:?}", ast);}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions