You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@arrow.apache.org by GitBox <gi...@apache.org> on 2022/07/10 19:27:23 UTC

[GitHub] [arrow-datafusion] waitingkuo commented on issue #2867: Error parsing valid SQL with aliases

waitingkuo commented on issue #2867:
URL: https://github.com/apache/arrow-datafusion/issues/2867#issuecomment-1179784547

   i tried it on sqlparser-rs, it doesn't work
   
   ``` rust
   use sqlparser::dialect::GenericDialect;
   use sqlparser::parser::Parser;
   
   fn main() {
   
       let dialect = GenericDialect {}; // or AnsiDialect
   
       let 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);
   } 
   ```
   
   ``` bash
   ➜  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
   ```
   
    
   
   looks like the outer alias doesn't work. the following sql works
   ``` 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;
   0 rows in set. Query took 0.004 seconds.
   ```
   
   
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org