@@ -69,7 +69,7 @@ use datafusion_sql::planner::{ContextProvider, ParserOptions, PlannerContext, Sq
6969use itertools:: Itertools ;
7070use log:: { debug, info} ;
7171use object_store:: ObjectStore ;
72- use sqlparser:: ast:: ExprWithAlias as SQLExprWithAlias ;
72+ use sqlparser:: ast:: { Expr as SQLExpr , ExprWithAlias as SQLExprWithAlias } ;
7373use sqlparser:: dialect:: dialect_from_str;
7474use std:: any:: Any ;
7575use std:: collections:: hash_map:: Entry ;
@@ -483,11 +483,25 @@ impl SessionState {
483483
484484 /// parse a sql string into a sqlparser-rs AST [`SQLExpr`].
485485 ///
486+ /// discard the alias information.
487+ ///
486488 /// See [`Self::create_logical_expr`] for parsing sql to [`Expr`].
487489 pub fn sql_to_expr (
488490 & self ,
489491 sql : & str ,
490492 dialect : & str ,
493+ ) -> datafusion_common:: Result < SQLExpr > {
494+ self . sql_to_expr_with_alias ( sql, dialect)
495+ . map ( |expr| expr. expr )
496+ }
497+
498+ /// parse a sql string into a sqlparser-rs AST [`SQLExprWithAlias`].
499+ ///
500+ /// keep the alias information if there is any.
501+ pub fn sql_to_expr_with_alias (
502+ & self ,
503+ sql : & str ,
504+ dialect : & str ,
491505 ) -> datafusion_common:: Result < SQLExprWithAlias > {
492506 let dialect = dialect_from_str ( dialect) . ok_or_else ( || {
493507 plan_datafusion_err ! (
@@ -591,7 +605,7 @@ impl SessionState {
591605 ) -> datafusion_common:: Result < Expr > {
592606 let dialect = self . config . options ( ) . sql_parser . dialect . as_str ( ) ;
593607
594- let sql_expr = self . sql_to_expr ( sql, dialect) ?;
608+ let sql_expr = self . sql_to_expr_with_alias ( sql, dialect) ?;
595609
596610 let provider = SessionContextProvider {
597611 state : self ,
@@ -1872,7 +1886,7 @@ mod tests {
18721886 let schema = Schema :: new ( vec ! [ Field :: new( "a" , DataType :: Int32 , true ) ] ) ;
18731887 let df_schema = DFSchema :: try_from ( schema) ?;
18741888 let dialect = state. config . options ( ) . sql_parser . dialect . as_str ( ) ;
1875- let sql_expr = state. sql_to_expr ( sql, dialect) ?. expr ;
1889+ let sql_expr = state. sql_to_expr ( sql, dialect) ?;
18761890
18771891 let query = SqlToRel :: new_with_options ( & provider, state. get_parser_options ( ) ) ;
18781892 query. sql_to_expr ( sql_expr, & df_schema, & mut PlannerContext :: new ( ) )
0 commit comments