@@ -86,6 +86,7 @@ def __init__(self):
8686 RelConverter .add_plugin_class (logical .LogicalTableScanPlugin , replace = False )
8787 RelConverter .add_plugin_class (logical .LogicalUnionPlugin , replace = False )
8888 RelConverter .add_plugin_class (logical .LogicalValuesPlugin , replace = False )
89+ RelConverter .add_plugin_class (logical .LogicalWindowPlugin , replace = False )
8990 RelConverter .add_plugin_class (logical .SamplePlugin , replace = False )
9091 RelConverter .add_plugin_class (custom .AnalyzeTablePlugin , replace = False )
9192 RelConverter .add_plugin_class (custom .CreateExperimentPlugin , replace = False )
@@ -108,7 +109,6 @@ def __init__(self):
108109 RexConverter .add_plugin_class (core .RexCallPlugin , replace = False )
109110 RexConverter .add_plugin_class (core .RexInputRefPlugin , replace = False )
110111 RexConverter .add_plugin_class (core .RexLiteralPlugin , replace = False )
111- RexConverter .add_plugin_class (core .RexOverPlugin , replace = False )
112112
113113 InputUtil .add_plugin_class (input_utils .DaskInputPlugin , replace = False )
114114 InputUtil .add_plugin_class (input_utils .PandasInputPlugin , replace = False )
@@ -427,7 +427,7 @@ def sql(
427427 cc = dc .column_container
428428 cc = cc .rename (
429429 {
430- df_col : df_col if not df_col . startswith ( "EXPR$" ) else select_name
430+ df_col : select_name
431431 for df_col , select_name in zip (cc .columns , select_names )
432432 }
433433 )
@@ -711,12 +711,18 @@ def _get_ral(self, sql):
711711 sqlNode = generator .getSqlNode (sql )
712712 sqlNodeClass = get_java_class (sqlNode )
713713
714- if sqlNodeClass .startswith ("com.dask.sql.parser." ):
715- rel = sqlNode
716- rel_string = ""
717- else :
714+ select_names = None
715+ rel = sqlNode
716+ rel_string = ""
717+
718+ if not sqlNodeClass .startswith ("com.dask.sql.parser." ):
718719 validatedSqlNode = generator .getValidatedNode (sqlNode )
719720 nonOptimizedRelNode = generator .getRelationalAlgebra (validatedSqlNode )
721+ # Optimization might remove some alias projects. Make sure to keep them here.
722+ select_names = [
723+ str (name )
724+ for name in nonOptimizedRelNode .getRowType ().getFieldNames ()
725+ ]
720726 rel = generator .getOptimizedRelationalAlgebra (nonOptimizedRelNode )
721727 rel_string = str (generator .getRelationalAlgebraString (rel ))
722728 except (ValidationException , SqlParseException ) as e :
@@ -741,13 +747,14 @@ def _get_ral(self, sql):
741747 if sqlNodeClass == "org.apache.calcite.sql.SqlSelect" :
742748 select_names = [
743749 self ._to_sql_string (s , default_dialect = default_dialect )
744- for s in sqlNode .getSelectList ()
750+ if current_name .startswith ("EXPR$" )
751+ else current_name
752+ for s , current_name in zip (sqlNode .getSelectList (), select_names )
745753 ]
746754 else :
747755 logger .debug (
748756 "Not extracting output column names as the SQL is not a SELECT call"
749757 )
750- select_names = None
751758
752759 logger .debug (f"Extracted relational algebra:\n { rel_string } " )
753760 return rel , select_names , rel_string
0 commit comments