@@ -69,7 +69,7 @@ use datafusion_sql::planner::{ContextProvider, ParserOptions, PlannerContext, Sq
69
69
use itertools:: Itertools ;
70
70
use log:: { debug, info} ;
71
71
use object_store:: ObjectStore ;
72
- use sqlparser:: ast:: ExprWithAlias as SQLExprWithAlias ;
72
+ use sqlparser:: ast:: { Expr as SQLExpr , ExprWithAlias as SQLExprWithAlias } ;
73
73
use sqlparser:: dialect:: dialect_from_str;
74
74
use std:: any:: Any ;
75
75
use std:: collections:: hash_map:: Entry ;
@@ -483,11 +483,25 @@ impl SessionState {
483
483
484
484
/// parse a sql string into a sqlparser-rs AST [`SQLExpr`].
485
485
///
486
+ /// discard the alias information.
487
+ ///
486
488
/// See [`Self::create_logical_expr`] for parsing sql to [`Expr`].
487
489
pub fn sql_to_expr (
488
490
& self ,
489
491
sql : & str ,
490
492
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 ,
491
505
) -> datafusion_common:: Result < SQLExprWithAlias > {
492
506
let dialect = dialect_from_str ( dialect) . ok_or_else ( || {
493
507
plan_datafusion_err ! (
@@ -591,7 +605,7 @@ impl SessionState {
591
605
) -> datafusion_common:: Result < Expr > {
592
606
let dialect = self . config . options ( ) . sql_parser . dialect . as_str ( ) ;
593
607
594
- let sql_expr = self . sql_to_expr ( sql, dialect) ?;
608
+ let sql_expr = self . sql_to_expr_with_alias ( sql, dialect) ?;
595
609
596
610
let provider = SessionContextProvider {
597
611
state : self ,
@@ -1872,7 +1886,7 @@ mod tests {
1872
1886
let schema = Schema :: new ( vec ! [ Field :: new( "a" , DataType :: Int32 , true ) ] ) ;
1873
1887
let df_schema = DFSchema :: try_from ( schema) ?;
1874
1888
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) ?;
1876
1890
1877
1891
let query = SqlToRel :: new_with_options ( & provider, state. get_parser_options ( ) ) ;
1878
1892
query. sql_to_expr ( sql_expr, & df_schema, & mut PlannerContext :: new ( ) )
0 commit comments