[ 
https://issues.apache.org/jira/browse/SPARK-33798?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17252185#comment-17252185
 ] 

Yuming Wang commented on SPARK-33798:
-------------------------------------


{noformat}
=== Metrics of Analyzer/Optimizer Rules ===
Total number of runs: 8160599
Total time: 384.166067212 seconds

Rule                                                                            
                   Effective Time / Total Time                     Effective 
Runs / Total Runs                    

org.apache.spark.sql.catalyst.optimizer.Optimizer$OptimizeSubqueries            
                   39693600575 / 46725545597                       1125 / 27003 
                                  
org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations                
                   31810498644 / 32443489761                       11315 / 
77746                                  
org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveSubquery                 
                   20255122691 / 21209087230                       1260 / 77578 
                                  
org.apache.spark.sql.catalyst.optimizer.ColumnPruning                           
                   3662408905 / 14865979018                        6250 / 64063 
                                  
org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveAggregateFunctions       
                   3839545719 / 8615434071                         535 / 77559  
                                  
org.apache.spark.sql.execution.datasources.FindDataSourceTable                  
                   5926386338 / 6266041323                         3133 / 77413 
                                  
org.apache.spark.sql.catalyst.optimizer.PushDownPredicates                      
                   1004935400 / 5318937518                         3059 / 64077 
                                  
org.apache.spark.sql.catalyst.optimizer.PruneFilters                            
                   20196806 / 5197169487                           165 / 50348  
                                  
org.apache.spark.sql.catalyst.optimizer.RemoveNoopOperators                     
                   382393781 / 4495401710                          2631 / 63636 
                                  
org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences               
                   2223564118 / 4457762727                         18153 / 
77660                                  
org.apache.spark.sql.catalyst.analysis.Analyzer$AddMetadataColumns              
                   0 / 4449402746                                  0 / 77746    
                                  
org.apache.spark.sql.catalyst.optimizer.CollapseProject                         
                   1632101108 / 4327933620                         7632 / 50775 
                                  
org.apache.spark.sql.catalyst.optimizer.RemoveDispensableExpressions            
                   1410614 / 3723070497                            14 / 37060   
                                  
org.apache.spark.sql.catalyst.optimizer.SimplifyCasts                           
                   858952677 / 3679387506                          4398 / 37060 
                                  
org.apache.spark.sql.catalyst.optimizer.ConstantFolding                         
                   882780177 / 3584991204                          3906 / 37060 
                                  
org.apache.spark.sql.catalyst.optimizer.CollapseRepartition                     
                   0 / 3525788470                                  0 / 37487    
                                  
org.apache.spark.sql.catalyst.optimizer.CombineUnions                           
                   14386207 / 3484693787                           48 / 51202   
                                  
org.apache.spark.sql.catalyst.optimizer.UnwrapCastInBinaryComparison            
                   46878113 / 3445978351                           125 / 37060  
                                  
org.apache.spark.sql.catalyst.optimizer.LikeSimplification                      
                   1794827 / 3415501538                            7 / 37060    
                                  
org.apache.spark.sql.catalyst.optimizer.OptimizeJsonExprs                       
                   0 / 3313864979                                  0 / 37060    
                                  
org.apache.spark.sql.catalyst.optimizer.BooleanSimplification                   
                   20310663 / 3306249541                           86 / 37060   
                                  
org.apache.spark.sql.catalyst.optimizer.NullPropagation                         
                   60290890 / 3192991337                           429 / 37487  
                                  
org.apache.spark.sql.catalyst.optimizer.EliminateOuterJoin                      
                   390401546 / 3189932899                          310 / 37487  
                                  
org.apache.spark.sql.catalyst.optimizer.CollapseWindow                          
                   0 / 3098148291                                  0 / 37487    
                                  
org.apache.spark.sql.catalyst.optimizer.EliminateResolvedHint                   
                   0 / 3084228124                                  0 / 13715    
                                  
org.apache.spark.sql.catalyst.optimizer.ReorderJoin                             
                   24282784 / 3080214384                           37 / 37487   
                                  
org.apache.spark.sql.catalyst.optimizer.SimplifyBinaryComparison                
                   6555738 / 3076719247                            28 / 37060   
                                  
org.apache.spark.sql.catalyst.optimizer.ReorderAssociativeOperator              
                   0 / 3038611489                                  0 / 37060    
                                  
org.apache.spark.sql.catalyst.optimizer.OptimizeIn                              
                   1377857 / 3014960087                            8 / 37487    
                                  
org.apache.spark.sql.catalyst.optimizer.SimplifyConditionals                    
                   14895081 / 2965371144                           187 / 37060  
                                  
org.apache.spark.sql.catalyst.optimizer.PushFoldableIntoBranches                
                   5542395 / 2958097009                            15 / 37060   
                                  

{noformat}


> Simplify EqualTo(CaseWhen/If, Literal) always false
> ---------------------------------------------------
>
>                 Key: SPARK-33798
>                 URL: https://issues.apache.org/jira/browse/SPARK-33798
>             Project: Spark
>          Issue Type: Improvement
>          Components: SQL
>    Affects Versions: 3.2.0
>            Reporter: Yuming Wang
>            Assignee: Yuming Wang
>            Priority: Major
>             Fix For: 3.2.0
>
>
> Simplify CaseWhen/If with EqualTo if all values are Literal and always false, 
> this is a real case from production:
> {code:sql}
> create table t1 using parquet as select * from range(100);
> create table t2 using parquet as select * from range(200);
> create temp view v1 as                                                        
>      
> select 'a' as event_type, * from t1                                           
>      
> union all                                                                     
>      
> select CASE WHEN id = 1 THEN 'b' WHEN id = 3 THEN 'c' end as event_type, * 
> from t2 
> explain select * from v1 where event_type = 'a';
> {code}
> Before this PR:
> {noformat}
> == Physical Plan ==
> Union
> :- *(1) Project [a AS event_type#30533, id#30535L]
> :  +- *(1) ColumnarToRow
> :     +- FileScan parquet default.t1[id#30535L] Batched: true, DataFilters: 
> [], Format: Parquet
> +- *(2) Project [CASE WHEN (id#30536L = 1) THEN b WHEN (id#30536L = 3) THEN c 
> END AS event_type#30534, id#30536L]
>    +- *(2) Filter (CASE WHEN (id#30536L = 1) THEN b WHEN (id#30536L = 3) THEN 
> c END = a)
>       +- *(2) ColumnarToRow
>          +- FileScan parquet default.t2[id#30536L] Batched: true, 
> DataFilters: [(CASE WHEN (id#30536L = 1) THEN b WHEN (id#30536L = 3) THEN c 
> END = a)], Format: Parquet
> {noformat}
> After this PR:
> {noformat}
> == Physical Plan ==
> *(1) Project [a AS event_type#8, id#4L]
> +- *(1) ColumnarToRow
>    +- FileScan parquet default.t1[id#4L] Batched: true, DataFilters: [], 
> Format: Parquet
> {noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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

Reply via email to