Inquiry Regarding Table Aliases in SQL Parsing

2023-11-02 Thread David Lin
Hey there,


I'm new to the Calcite framework and I'm trying to separate table names and
aliases as well as  store their mapping from SQL parsing.


When 'AS' is in play (like in Select * from table1 AS t1, table2 AS t2,
table3), I'm good to go using SqlKind.AS in SqlCall with its two operands
to spot table names and aliases.


But, in a query like Select * from table1 t1, table2 t2, table3 where the
keyword 'AS' isn't used, I'm a bit lost in figuring out the table names and
aliases. Any tips on handling this? Thanks a bunch!

-David


Re: Inquiry Regarding Table Aliases in SQL Parsing

2023-11-02 Thread Hongyu Guo
In Calcite, when parsing tables with aliases, the keyword "AS" is optional.
This means that `table1 as t1` and `table1 t1` will generate the same
SqlCall.

I am not sure if you make your mapping logic after the parsing or after
RelToSql. Please note that the alias information may be lost during the
validation, planning, and toSql processes. Therefore, I advise you to make
your mapping after the SQL parsing stage.

Best,
Hongyu

On Thu, Nov 2, 2023 at 3:45 PM David Lin  wrote:

> Hey there,
>
>
> I'm new to the Calcite framework and I'm trying to separate table names and
> aliases as well as  store their mapping from SQL parsing.
>
>
> When 'AS' is in play (like in Select * from table1 AS t1, table2 AS t2,
> table3), I'm good to go using SqlKind.AS in SqlCall with its two operands
> to spot table names and aliases.
>
>
> But, in a query like Select * from table1 t1, table2 t2, table3 where the
> keyword 'AS' isn't used, I'm a bit lost in figuring out the table names and
> aliases. Any tips on handling this? Thanks a bunch!
>
> -David
>