yyy1000 commented on PR #10494:
URL: https://github.com/apache/datafusion/pull/10494#issuecomment-2109274023

   This is an example.
   The sql is 
   ```
   SELECT A.col_int32 FROM test AS A \
           INNER JOIN ( \
             SELECT col_int32 FROM test WHERE 1 = 0 \
           ) AS B ON A.col_int32 = B.col_int32 \
           UNION ALL \
           SELECT test.col_int32 FROM test WHERE 1 = 1 \
           UNION ALL \
           SELECT test.col_int32 FROM test WHERE 0 = 0 \
           UNION ALL \
           SELECT test.col_int32 FROM test WHERE test.col_int32 < 0 \
           UNION ALL \
           SELECT test.col_int32 FROM test WHERE 1 = 0
   ```
   
   ```
   
+----------------------------------------------------------------------------+----------------------------------------------------------------------------+
   | plan_type                                                                  
| plan                                                                       |
   
+----------------------------------------------------------------------------+----------------------------------------------------------------------------+
   | initial_logical_plan                                                       
| Union                                                                      |
   |                                                                            
|   Union                                                                    |
   |                                                                            
|     Union                                                                  |
   |                                                                            
|       Union                                                                |
   |                                                                            
|         Projection: a.col_int32                                            |
   |                                                                            
|           Inner Join:  Filter: a.col_int32 = b.col_int32                   |
   |                                                                            
|             SubqueryAlias: a                                               |
   |                                                                            
|               TableScan: test                                              |
   |                                                                            
|             SubqueryAlias: b                                               |
   |                                                                            
|               Projection: test.col_int32                                   |
   |                                                                            
|                 Filter: Int64(1) = Int64(0)                                |
   |                                                                            
|                   TableScan: test                                          |
   |                                                                            
|         Projection: test.col_int32                                         |
   |                                                                            
|           Filter: Int64(1) = Int64(1)                                      |
   |                                                                            
|             TableScan: test                                                |
   |                                                                            
|       Projection: test.col_int32                                           |
   |                                                                            
|         Filter: Int64(0) = Int64(0)                                        |
   |                                                                            
|           TableScan: test                                                  |
   |                                                                            
|     Projection: test.col_int32                                             |
   |                                                                            
|       Filter: test.col_int32 < Int64(0)                                    |
   |                                                                            
|         TableScan: test                                                    |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: Int64(1) = Int64(0)                                            |
   |                                                                            
|       TableScan: test                                                      |
   | logical_plan after apply_function_rewrites                                 
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after inline_table_scan                                       
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after type_coercion                                           
| Union                                                                      |
   |                                                                            
|   Union                                                                    |
   |                                                                            
|     Union                                                                  |
   |                                                                            
|       Union                                                                |
   |                                                                            
|         Projection: a.col_int32                                            |
   |                                                                            
|           Inner Join:  Filter: a.col_int32 = b.col_int32                   |
   |                                                                            
|             SubqueryAlias: a                                               |
   |                                                                            
|               TableScan: test                                              |
   |                                                                            
|             SubqueryAlias: b                                               |
   |                                                                            
|               Projection: test.col_int32                                   |
   |                                                                            
|                 Filter: Int64(1) = Int64(0)                                |
   |                                                                            
|                   TableScan: test                                          |
   |                                                                            
|         Projection: test.col_int32                                         |
   |                                                                            
|           Filter: Int64(1) = Int64(1)                                      |
   |                                                                            
|             TableScan: test                                                |
   |                                                                            
|       Projection: test.col_int32                                           |
   |                                                                            
|         Filter: Int64(0) = Int64(0)                                        |
   |                                                                            
|           TableScan: test                                                  |
   |                                                                            
|     Projection: test.col_int32                                             |
   |                                                                            
|       Filter: CAST(test.col_int32 AS Int64) < Int64(0)                     |
   |                                                                            
|         TableScan: test                                                    |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: Int64(1) = Int64(0)                                            |
   |                                                                            
|       TableScan: test                                                      |
   | logical_plan after count_wildcard_rule                                     
| SAME TEXT AS ABOVE                                                         |
   | analyzed_logical_plan                                                      
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after eliminate_nested_union                                  
| Union                                                                      |
   |                                                                            
|   Projection: a.col_int32                                                  |
   |                                                                            
|     Inner Join:  Filter: a.col_int32 = b.col_int32                         |
   |                                                                            
|       SubqueryAlias: a                                                     |
   |                                                                            
|         TableScan: test                                                    |
   |                                                                            
|       SubqueryAlias: b                                                     |
   |                                                                            
|         Projection: test.col_int32                                         |
   |                                                                            
|           Filter: Int64(1) = Int64(0)                                      |
   |                                                                            
|             TableScan: test                                                |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: Int64(1) = Int64(1)                                            |
   |                                                                            
|       TableScan: test                                                      |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: Int64(0) = Int64(0)                                            |
   |                                                                            
|       TableScan: test                                                      |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: CAST(test.col_int32 AS Int64) < Int64(0)                       |
   |                                                                            
|       TableScan: test                                                      |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: Int64(1) = Int64(0)                                            |
   |                                                                            
|       TableScan: test                                                      |
   | logical_plan after simplify_expressions                                    
| Union                                                                      |
   |                                                                            
|   Projection: a.col_int32                                                  |
   |                                                                            
|     Inner Join:  Filter: a.col_int32 = b.col_int32                         |
   |                                                                            
|       SubqueryAlias: a                                                     |
   |                                                                            
|         TableScan: test                                                    |
   |                                                                            
|       SubqueryAlias: b                                                     |
   |                                                                            
|         Projection: test.col_int32                                         |
   |                                                                            
|           Filter: Boolean(false)                                           |
   |                                                                            
|             TableScan: test                                                |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: Boolean(true)                                                  |
   |                                                                            
|       TableScan: test                                                      |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: Boolean(true)                                                  |
   |                                                                            
|       TableScan: test                                                      |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: CAST(test.col_int32 AS Int64) < Int64(0)                       |
   |                                                                            
|       TableScan: test                                                      |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: Boolean(false)                                                 |
   |                                                                            
|       TableScan: test                                                      |
   | logical_plan after unwrap_cast_in_comparison                               
| Union                                                                      |
   |                                                                            
|   Projection: a.col_int32                                                  |
   |                                                                            
|     Inner Join:  Filter: a.col_int32 = b.col_int32                         |
   |                                                                            
|       SubqueryAlias: a                                                     |
   |                                                                            
|         TableScan: test                                                    |
   |                                                                            
|       SubqueryAlias: b                                                     |
   |                                                                            
|         Projection: test.col_int32                                         |
   |                                                                            
|           Filter: Boolean(false)                                           |
   |                                                                            
|             TableScan: test                                                |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: Boolean(true)                                                  |
   |                                                                            
|       TableScan: test                                                      |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: Boolean(true)                                                  |
   |                                                                            
|       TableScan: test                                                      |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: test.col_int32 < Int32(0)                                      |
   |                                                                            
|       TableScan: test                                                      |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: Boolean(false)                                                 |
   |                                                                            
|       TableScan: test                                                      |
   | logical_plan after replace_distinct_aggregate                              
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after eliminate_join                                          
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after decorrelate_predicate_subquery                          
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after scalar_subquery_to_join                                 
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after extract_equijoin_predicate                              
| Union                                                                      |
   |                                                                            
|   Projection: a.col_int32                                                  |
   |                                                                            
|     Inner Join: a.col_int32 = b.col_int32                                  |
   |                                                                            
|       SubqueryAlias: a                                                     |
   |                                                                            
|         TableScan: test                                                    |
   |                                                                            
|       SubqueryAlias: b                                                     |
   |                                                                            
|         Projection: test.col_int32                                         |
   |                                                                            
|           Filter: Boolean(false)                                           |
   |                                                                            
|             TableScan: test                                                |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: Boolean(true)                                                  |
   |                                                                            
|       TableScan: test                                                      |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: Boolean(true)                                                  |
   |                                                                            
|       TableScan: test                                                      |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: test.col_int32 < Int32(0)                                      |
   |                                                                            
|       TableScan: test                                                      |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: Boolean(false)                                                 |
   |                                                                            
|       TableScan: test                                                      |
   | logical_plan after simplify_expressions                                    
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after rewrite_disjunctive_predicate                           
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after eliminate_duplicated_expr                               
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after eliminate_filter                                        
| Union                                                                      |
   |                                                                            
|   Projection: a.col_int32                                                  |
   |                                                                            
|     Inner Join: a.col_int32 = b.col_int32                                  |
   |                                                                            
|       SubqueryAlias: a                                                     |
   |                                                                            
|         TableScan: test                                                    |
   |                                                                            
|       SubqueryAlias: b                                                     |
   |                                                                            
|         Projection: test.col_int32                                         |
   |                                                                            
|           EmptyRelation                                                    |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     TableScan: test                                                        |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     TableScan: test                                                        |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: test.col_int32 < Int32(0)                                      |
   |                                                                            
|       TableScan: test                                                      |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     EmptyRelation                                                          |
   | logical_plan after eliminate_cross_join                                    
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after common_sub_expression_eliminate                         
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after eliminate_limit                                         
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after propagate_empty_relation                                
| Union                                                                      |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     TableScan: test                                                        |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     TableScan: test                                                        |
   |                                                                            
|   Projection: test.col_int32                                               |
   |                                                                            
|     Filter: test.col_int32 < Int32(0)                                      |
   |                                                                            
|       TableScan: test                                                      |
   | logical_plan after eliminate_one_union                                     
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after filter_null_join_keys                                   
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after eliminate_outer_join                                    
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after push_down_limit                                         
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after push_down_filter                                        
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after single_distinct_aggregation_to_group_by                 
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after simplify_expressions                                    
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after unwrap_cast_in_comparison                               
| SAME TEXT AS ABOVE                                                         |
   | logical_plan after Optimizer rule 'common_sub_expression_eliminate' failed 
| Schema error: No field named a.col_int32. Valid fields are test.col_int32. |
   
+----------------------------------------------------------------------------+----------------------------------------------------------------------------+
   ```


-- 
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