This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git


The following commit(s) were added to refs/heads/master by this push:
     new fb5bb82  [NO ISSUE][COMP] Make marked SELECTs immovable.
fb5bb82 is described below

commit fb5bb823607b85e6b703f651d2aedafbc260e386
Author: Glenn <[email protected]>
AuthorDate: Thu Oct 1 13:54:29 2020 -0700

    [NO ISSUE][COMP] Make marked SELECTs immovable.
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    - Fixed issue where a SELECT marked as immovable was allowed to be
    pushed down (see 
"LangExpressionToPlanTranslator.constructSubplanOperatorForBranch"
    for one use).
    - Update resulting plan for an optimizer test that has changed as a result.
    
    Change-Id: I4b3e18aa1b74c50496a5158570d892dcd82356df
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/8205
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Dmitry Lychagin <[email protected]>
---
 .../tpcds/query-ASTERIXDB-1581-correlated.plan     | 270 +++++++++++----------
 .../rewriter/rules/PushSelectDownRule.java         |   2 +-
 2 files changed, 138 insertions(+), 134 deletions(-)

diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581-correlated.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581-correlated.plan
index 2eaaf05..2cc0fe3 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581-correlated.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/tpcds/query-ASTERIXDB-1581-correlated.plan
@@ -47,39 +47,36 @@
                                                         }
                                                   -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
                                                     -- STREAM_PROJECT  
|PARTITIONED|
-                                                      -- ASSIGN  |PARTITIONED|
-                                                        -- ONE_TO_ONE_EXCHANGE 
 |PARTITIONED|
-                                                          -- REPLICATE  
|PARTITIONED|
-                                                            -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                              -- 
STREAM_PROJECT  |PARTITIONED|
+                                                      -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
+                                                        -- HYBRID_HASH_JOIN 
[$$130][$$140]  |PARTITIONED|
+                                                          -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                            -- STREAM_PROJECT  
|PARTITIONED|
+                                                              -- ASSIGN  
|PARTITIONED|
                                                                 -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                  -- 
HYBRID_HASH_JOIN [$$168][$$169]  |PARTITIONED|
+                                                                  -- REPLICATE 
 |PARTITIONED|
                                                                     -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                      -- 
BTREE_SEARCH  |PARTITIONED|
+                                                                        -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                          -- 
ASSIGN  |PARTITIONED|
+                                                                            -- 
EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                                          -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                            -- STREAM_PROJECT  
|PARTITIONED|
+                                                              -- ASSIGN  
|PARTITIONED|
+                                                                -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                  -- REPLICATE 
 |PARTITIONED|
+                                                                    -- 
HASH_PARTITION_EXCHANGE [$$185]  |PARTITIONED|
                                                                       -- 
STREAM_PROJECT  |PARTITIONED|
                                                                         -- 
ASSIGN  |PARTITIONED|
-                                                                          -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                            -- 
REPLICATE  |PARTITIONED|
+                                                                          -- 
STREAM_PROJECT  |PARTITIONED|
+                                                                            -- 
ASSIGN  |PARTITIONED|
                                                                               
-- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
 -- BTREE_SEARCH  |PARTITIONED|
+                                                                               
 -- REPLICATE  |PARTITIONED|
                                                                                
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
     -- ASSIGN  |PARTITIONED|
-                                                                               
       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                    -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                      -- 
STREAM_PROJECT  |PARTITIONED|
-                                                                        -- 
ASSIGN  |PARTITIONED|
-                                                                          -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                            -- 
REPLICATE  |PARTITIONED|
-                                                                              
-- HASH_PARTITION_EXCHANGE [$$185]  |PARTITIONED|
-                                                                               
 -- STREAM_PROJECT  |PARTITIONED|
-                                                                               
   -- ASSIGN  |PARTITIONED|
-                                                                               
     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
       -- REPLICATE  |PARTITIONED|
-                                                                               
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
           -- STREAM_PROJECT  |PARTITIONED|
-                                                                               
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
               -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                               
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
                   -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                                                               
     -- STREAM_PROJECT  |PARTITIONED|
+                                                                               
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
         -- DATASOURCE_SCAN  |PARTITIONED|
+                                                                               
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
             -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
                                               -- HASH_PARTITION_EXCHANGE 
[$$151]  |PARTITIONED|
                                                 -- ASSIGN  |PARTITIONED|
                                                   -- STREAM_PROJECT  
|PARTITIONED|
@@ -96,37 +93,41 @@
                                                                         -- 
STREAM_PROJECT  |PARTITIONED|
                                                                           -- 
STREAM_SELECT  |PARTITIONED|
                                                                             -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                              
-- PRE_CLUSTERED_GROUP_BY[$$184]  |PARTITIONED|
-                                                                               
       {
-                                                                               
         -- AGGREGATE  |LOCAL|
-                                                                               
           -- AGGREGATE  |LOCAL|
-                                                                               
             -- STREAM_SELECT  |LOCAL|
-                                                                               
               -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                                                               
       }
+                                                                              
-- REPLICATE  |PARTITIONED|
                                                                                
 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
   -- STREAM_PROJECT  |PARTITIONED|
+                                                                               
   -- PRE_CLUSTERED_GROUP_BY[$$184]  |PARTITIONED|
+                                                                               
           {
+                                                                               
             -- AGGREGATE  |LOCAL|
+                                                                               
               -- AGGREGATE  |LOCAL|
+                                                                               
                 -- STREAM_SELECT  |LOCAL|
+                                                                               
                   -- NESTED_TUPLE_SOURCE  |LOCAL|
+                                                                               
           }
                                                                                
     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
       -- HYBRID_HASH_JOIN [$$184][$$185]  |PARTITIONED|
+                                                                               
       -- STREAM_PROJECT  |PARTITIONED|
                                                                                
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
           -- REPLICATE  |PARTITIONED|
+                                                                               
           -- HYBRID_HASH_JOIN [$$184][$$185]  |PARTITIONED|
                                                                                
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
               -- BTREE_SEARCH  |PARTITIONED|
+                                                                               
               -- REPLICATE  |PARTITIONED|
                                                                                
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
                   -- ASSIGN  |PARTITIONED|
-                                                                               
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                               
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
           -- REPLICATE  |PARTITIONED|
-                                                                               
             -- HASH_PARTITION_EXCHANGE [$$185]  |PARTITIONED|
-                                                                               
               -- STREAM_PROJECT  |PARTITIONED|
-                                                                               
                 -- ASSIGN  |PARTITIONED|
-                                                                               
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
                     -- REPLICATE  |PARTITIONED|
-                                                                               
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
                         -- STREAM_PROJECT  |PARTITIONED|
+                                                                               
                   -- BTREE_SEARCH  |PARTITIONED|
+                                                                               
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
                       -- ASSIGN  |PARTITIONED|
+                                                                               
                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                                                               
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
               -- REPLICATE  |PARTITIONED|
+                                                                               
                 -- HASH_PARTITION_EXCHANGE [$$185]  |PARTITIONED|
+                                                                               
                   -- STREAM_PROJECT  |PARTITIONED|
+                                                                               
                     -- ASSIGN  |PARTITIONED|
+                                                                               
                       -- STREAM_PROJECT  |PARTITIONED|
+                                                                               
                         -- ASSIGN  |PARTITIONED|
                                                                                
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
                             -- DATASOURCE_SCAN  |PARTITIONED|
+                                                                               
                             -- REPLICATE  |PARTITIONED|
                                                                                
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                                                               
                                 -- STREAM_PROJECT  |PARTITIONED|
+                                                                               
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
                                     -- DATASOURCE_SCAN  |PARTITIONED|
+                                                                               
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
                                                         -- 
HASH_PARTITION_EXCHANGE [$$142]  |PARTITIONED|
                                                           -- STREAM_PROJECT  
|PARTITIONED|
                                                             -- ASSIGN  
|PARTITIONED|
@@ -146,77 +147,32 @@
                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                       -- HYBRID_HASH_JOIN [$$145][$$144]  
|PARTITIONED|
                                         -- HASH_PARTITION_EXCHANGE [$$145]  
|PARTITIONED|
-                                          -- PRE_CLUSTERED_GROUP_BY[$$164]  
|PARTITIONED|
-                                                  {
-                                                    -- AGGREGATE  |LOCAL|
-                                                      -- AGGREGATE  |LOCAL|
-                                                        -- AGGREGATE  |LOCAL|
-                                                          -- STREAM_SELECT  
|LOCAL|
-                                                            -- 
NESTED_TUPLE_SOURCE  |LOCAL|
-                                                  }
-                                            -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
-                                              -- STABLE_SORT [$$164(ASC)]  
|PARTITIONED|
-                                                -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
+                                          -- STREAM_PROJECT  |PARTITIONED|
+                                            -- ASSIGN  |PARTITIONED|
+                                              -- STREAM_PROJECT  |PARTITIONED|
+                                                -- STREAM_SELECT  |PARTITIONED|
                                                   -- STREAM_PROJECT  
|PARTITIONED|
-                                                    -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
-                                                      -- HYBRID_HASH_JOIN 
[$$164][$$167]  |PARTITIONED|
-                                                        -- ONE_TO_ONE_EXCHANGE 
 |PARTITIONED|
-                                                          -- STREAM_PROJECT  
|PARTITIONED|
-                                                            -- STREAM_SELECT  
|PARTITIONED|
-                                                              -- 
STREAM_PROJECT  |PARTITIONED|
-                                                                -- ASSIGN  
|PARTITIONED|
-                                                                  -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    -- 
PRE_CLUSTERED_GROUP_BY[$$168]  |PARTITIONED|
-                                                                            {
-                                                                              
-- AGGREGATE  |LOCAL|
-                                                                               
 -- AGGREGATE  |LOCAL|
-                                                                               
   -- STREAM_SELECT  |LOCAL|
-                                                                               
     -- NESTED_TUPLE_SOURCE  |LOCAL|
-                                                                            }
-                                                                      -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                        -- 
REPLICATE  |PARTITIONED|
-                                                                          -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                            -- 
STREAM_PROJECT  |PARTITIONED|
-                                                                              
-- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
 -- HYBRID_HASH_JOIN [$$168][$$169]  |PARTITIONED|
-                                                                               
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
     -- STREAM_PROJECT  |PARTITIONED|
-                                                                               
       -- ASSIGN  |PARTITIONED|
-                                                                               
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
           -- REPLICATE  |PARTITIONED|
-                                                                               
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
               -- BTREE_SEARCH  |PARTITIONED|
-                                                                               
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
                   -- ASSIGN  |PARTITIONED|
-                                                                               
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                               
   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
     -- STREAM_PROJECT  |PARTITIONED|
-                                                                               
       -- ASSIGN  |PARTITIONED|
-                                                                               
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
           -- REPLICATE  |PARTITIONED|
-                                                                               
             -- HASH_PARTITION_EXCHANGE [$$185]  |PARTITIONED|
-                                                                               
               -- STREAM_PROJECT  |PARTITIONED|
-                                                                               
                 -- ASSIGN  |PARTITIONED|
-                                                                               
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
                     -- REPLICATE  |PARTITIONED|
-                                                                               
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
                         -- STREAM_PROJECT  |PARTITIONED|
-                                                                               
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
                             -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                               
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
                                 -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                        -- 
HASH_PARTITION_EXCHANGE [$$167]  |PARTITIONED|
-                                                          -- ASSIGN  
|PARTITIONED|
-                                                            -- STREAM_PROJECT  
|PARTITIONED|
+                                                    -- ASSIGN  |PARTITIONED|
+                                                      -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
+                                                        -- 
PRE_CLUSTERED_GROUP_BY[$$164]  |PARTITIONED|
+                                                                {
+                                                                  -- AGGREGATE 
 |LOCAL|
+                                                                    -- 
AGGREGATE  |LOCAL|
+                                                                      -- 
AGGREGATE  |LOCAL|
+                                                                        -- 
STREAM_SELECT  |LOCAL|
+                                                                          -- 
NESTED_TUPLE_SOURCE  |LOCAL|
+                                                                }
+                                                          -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                            -- STABLE_SORT 
[$$164(ASC)]  |PARTITIONED|
                                                               -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                -- 
HYBRID_HASH_JOIN [$$181][$$180]  |PARTITIONED|
+                                                                -- 
STREAM_PROJECT  |PARTITIONED|
                                                                   -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                    -- 
REPLICATE  |PARTITIONED|
-                                                                      -- 
HASH_PARTITION_EXCHANGE [$$181]  |PARTITIONED|
+                                                                    -- 
HYBRID_HASH_JOIN [$$164][$$167]  |PARTITIONED|
+                                                                      -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                         -- 
STREAM_PROJECT  |PARTITIONED|
                                                                           -- 
ASSIGN  |PARTITIONED|
-                                                                            -- 
STREAM_PROJECT  |PARTITIONED|
-                                                                              
-- STREAM_SELECT  |PARTITIONED|
+                                                                            -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                              
-- REPLICATE  |PARTITIONED|
                                                                                
 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                
   -- PRE_CLUSTERED_GROUP_BY[$$184]  |PARTITIONED|
                                                                                
           {
@@ -241,27 +197,75 @@
                                                                                
                 -- HASH_PARTITION_EXCHANGE [$$185]  |PARTITIONED|
                                                                                
                   -- STREAM_PROJECT  |PARTITIONED|
                                                                                
                     -- ASSIGN  |PARTITIONED|
-                                                                               
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
                         -- REPLICATE  |PARTITIONED|
+                                                                               
                       -- STREAM_PROJECT  |PARTITIONED|
+                                                                               
                         -- ASSIGN  |PARTITIONED|
                                                                                
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
                             -- STREAM_PROJECT  |PARTITIONED|
+                                                                               
                             -- REPLICATE  |PARTITIONED|
                                                                                
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
                                 -- DATASOURCE_SCAN  |PARTITIONED|
+                                                                               
                                 -- STREAM_PROJECT  |PARTITIONED|
                                                                                
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
                                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
-                                                                  -- 
HASH_PARTITION_EXCHANGE [$$180]  |PARTITIONED|
-                                                                    -- 
STREAM_PROJECT  |PARTITIONED|
-                                                                      -- 
ASSIGN  |PARTITIONED|
-                                                                        -- 
STREAM_PROJECT  |PARTITIONED|
-                                                                          -- 
ASSIGN  |PARTITIONED|
+                                                                               
                                     -- DATASOURCE_SCAN  |PARTITIONED|
+                                                                               
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
                                         -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                                                      -- 
HASH_PARTITION_EXCHANGE [$$167]  |PARTITIONED|
+                                                                        -- 
ASSIGN  |PARTITIONED|
+                                                                          -- 
STREAM_PROJECT  |PARTITIONED|
                                                                             -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                              
-- REPLICATE  |PARTITIONED|
+                                                                              
-- HYBRID_HASH_JOIN [$$181][$$180]  |PARTITIONED|
                                                                                
 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
   -- REPLICATE  |PARTITIONED|
+                                                                               
     -- HASH_PARTITION_EXCHANGE [$$181]  |PARTITIONED|
+                                                                               
       -- STREAM_PROJECT  |PARTITIONED|
+                                                                               
         -- ASSIGN  |PARTITIONED|
+                                                                               
           -- STREAM_PROJECT  |PARTITIONED|
+                                                                               
             -- STREAM_SELECT  |PARTITIONED|
+                                                                               
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
                 -- REPLICATE  |PARTITIONED|
+                                                                               
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
                     -- PRE_CLUSTERED_GROUP_BY[$$184]  |PARTITIONED|
+                                                                               
                             {
+                                                                               
                               -- AGGREGATE  |LOCAL|
+                                                                               
                                 -- AGGREGATE  |LOCAL|
+                                                                               
                                   -- STREAM_SELECT  |LOCAL|
+                                                                               
                                     -- NESTED_TUPLE_SOURCE  |LOCAL|
+                                                                               
                             }
+                                                                               
                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
                         -- STREAM_PROJECT  |PARTITIONED|
+                                                                               
                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
                             -- HYBRID_HASH_JOIN [$$184][$$185]  |PARTITIONED|
+                                                                               
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
                                 -- REPLICATE  |PARTITIONED|
+                                                                               
                                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
                                     -- BTREE_SEARCH  |PARTITIONED|
+                                                                               
                                       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
                                         -- ASSIGN  |PARTITIONED|
+                                                                               
                                           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                                                               
                               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
                                 -- REPLICATE  |PARTITIONED|
+                                                                               
                                   -- HASH_PARTITION_EXCHANGE [$$185]  
|PARTITIONED|
+                                                                               
                                     -- STREAM_PROJECT  |PARTITIONED|
+                                                                               
                                       -- ASSIGN  |PARTITIONED|
+                                                                               
                                         -- STREAM_PROJECT  |PARTITIONED|
+                                                                               
                                           -- ASSIGN  |PARTITIONED|
+                                                                               
                                             -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
+                                                                               
                                               -- REPLICATE  |PARTITIONED|
+                                                                               
                                                 -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
+                                                                               
                                                   -- STREAM_PROJECT  
|PARTITIONED|
+                                                                               
                                                     -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
+                                                                               
                                                       -- DATASOURCE_SCAN  
|PARTITIONED|
+                                                                               
                                                         -- ONE_TO_ONE_EXCHANGE 
 |PARTITIONED|
+                                                                               
                                                           -- 
EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                                                               
 -- HASH_PARTITION_EXCHANGE [$$180]  |PARTITIONED|
                                                                                
   -- STREAM_PROJECT  |PARTITIONED|
-                                                                               
     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
       -- DATASOURCE_SCAN  |PARTITIONED|
-                                                                               
         -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                               
           -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
+                                                                               
     -- ASSIGN  |PARTITIONED|
+                                                                               
       -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
         -- REPLICATE  |PARTITIONED|
+                                                                               
           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
             -- STREAM_PROJECT  |PARTITIONED|
+                                                                               
               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
                 -- DATASOURCE_SCAN  |PARTITIONED|
+                                                                               
                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                                                               
                     -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
                                         -- HASH_PARTITION_EXCHANGE [$$144]  
|PARTITIONED|
                                           -- STREAM_PROJECT  |PARTITIONED|
                                             -- ASSIGN  |PARTITIONED|
@@ -274,4 +278,4 @@
                                                           -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                             -- DATASOURCE_SCAN 
 |PARTITIONED|
                                                               -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                                                -- 
EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
+                                                                -- 
EMPTY_TUPLE_SOURCE  |PARTITIONED|
diff --git 
a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSelectDownRule.java
 
b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSelectDownRule.java
index 29998c2..04cba02 100644
--- 
a/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSelectDownRule.java
+++ 
b/hyracks-fullstack/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushSelectDownRule.java
@@ -44,7 +44,7 @@ public class PushSelectDownRule implements 
IAlgebraicRewriteRule {
     public boolean rewritePre(Mutable<ILogicalOperator> opRef, 
IOptimizationContext context)
             throws AlgebricksException {
         AbstractLogicalOperator op = (AbstractLogicalOperator) 
opRef.getValue();
-        if (op.getOperatorTag() != LogicalOperatorTag.SELECT) {
+        if (op.getOperatorTag() != LogicalOperatorTag.SELECT || 
!OperatorPropertiesUtil.isMovable(op)) {
             return false;
         }
 

Reply via email to