ozankabak commented on code in PR #14109:
URL: https://github.com/apache/datafusion/pull/14109#discussion_r1914337061


##########
datafusion/optimizer/src/push_down_filter.rs:
##########
@@ -1001,23 +1002,34 @@ impl OptimizerRule for PushDownFilter {
                 // multiple window functions, each with potentially different 
partition keys.
                 // Therefore, we need to ensure that any potential partition 
key returned is used in
                 // ALL window functions. Otherwise, filters cannot be pushed 
by through that column.
+                let extract_partition_keys = |func: &WindowFunction| {
+                    func.partition_by
+                        .iter()
+                        .map(|c| 
Column::from_qualified_name(c.schema_name().to_string()))
+                        .collect::<HashSet<_>>()
+                };
                 let potential_partition_keys = window
                     .window_expr
                     .iter()
                     .map(|e| {
-                        if let Expr::WindowFunction(window_expression) = e {
-                            window_expression
-                                .partition_by
-                                .iter()
-                                .map(|c| {
-                                    Column::from_qualified_name(
-                                        c.schema_name().to_string(),
-                                    )
-                                })
-                                .collect::<HashSet<_>>()
-                        } else {
-                            // window functions expressions are only 
Expr::WindowFunction
-                            unreachable!()
+                        match e {
+                            Expr::WindowFunction(window_func) => {
+                                extract_partition_keys(window_func)
+                            }
+                            Expr::Alias(alias) => {
+                                if let Expr::WindowFunction(window_func) =
+                                    alias.expr.as_ref()
+                                {
+                                    extract_partition_keys(window_func)
+                                } else {
+                                    // window functions expressions are only 
Expr::WindowFunction
+                                    unreachable!()

Review Comment:
   Sounds good. I think there are few of those in the codebase and it would 
make a good first issue to remove these unreachable panics and replace them 
with internal errors. Let's create an issue for this



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to