[ 
https://issues.apache.org/jira/browse/ASTERIXDB-2761?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chen Luo updated ASTERIXDB-2761:
--------------------------------
    Description: 
When testing a query (TPC-H Q3), I found out that sometimes the join keys are 
not sorted if the index-nested loop join was choosen. The DDLs are attached 
below.

{code:sql}
The example query:
use tpch;
SELECT l_orderkey AS l_orderkey,
       sum(l.l_extendedprice * (1 - l.l_discount)) AS revenue,
       o_orderdate AS o_orderdate,
       o_shippriority AS o_shippriority
FROM  Customer AS c,
      Orders AS o,
      LineItem AS l
where c.c_mktsegment = 'BUILDING' AND c.c_custkey = o.o_custkey
AND {color:red}o.o_orderkey /*+ indexnl */= l.l_orderkey {color}
AND o.o_orderdate < '1995-03-15' AND l.l_shipdate > '1995-03-15'
/* +hash */
GROUP BY l.l_orderkey AS l_orderkey,
         o.o_orderdate AS o_orderdate,
         o.o_shippriority AS o_shippriority
ORDER BY revenue DESC,o_orderdate
LIMIT 10;
{code}

The optimized query plan is attached below. The LineItem table was searched 
directly using o_orderkeys without sorting them first.
{code}
distribute result [$$105]
-- DISTRIBUTE_RESULT  |UNPARTITIONED|
  exchange
  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
    limit 10
    -- STREAM_LIMIT  |UNPARTITIONED|
      project ([$$105])
      -- STREAM_PROJECT  |PARTITIONED|
        assign [$$105] <- [{"l_orderkey": $$l_orderkey, "revenue": $$117, 
"o_orderdate": $$o_orderdate, "o_shippriority": $$o_shippriority}]
        -- ASSIGN  |PARTITIONED|
          exchange
          -- SORT_MERGE_EXCHANGE [$$117(DESC), $$o_orderdate(ASC) ]  
|PARTITIONED|
            limit 10
            -- STREAM_LIMIT  |PARTITIONED|
              exchange
              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                order (topK: 10) (DESC, $$117) (ASC, $$o_orderdate)
                -- STABLE_SORT [topK: 10] [$$117(DESC), $$o_orderdate(ASC)]  
|PARTITIONED|
                  exchange
                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                    group by ([$$l_orderkey := $$125; $$o_orderdate := $$126; 
$$o_shippriority := $$127]) decor ([]) {
                              aggregate [$$117] <- 
[global-sql-sum-serial($$124)]
                              -- AGGREGATE  |LOCAL|
                                nested tuple source
                                -- NESTED_TUPLE_SOURCE  |LOCAL|
                           }
                    -- EXTERNAL_GROUP_BY[$$125, $$126, $$127]  |PARTITIONED|
                      exchange
                      -- HASH_PARTITION_EXCHANGE [$$125, $$126, $$127]  
|PARTITIONED|
                        group by ([$$125 := $$113; $$126 := $$110; $$127 := 
$$108]) decor ([]) {
                                  aggregate [$$124] <- 
[local-sql-sum-serial(numeric-multiply($$122, numeric-subtract(1, $$123)))]
                                  -- AGGREGATE  |LOCAL|
                                    nested tuple source
                                    -- NESTED_TUPLE_SOURCE  |LOCAL|
                               }
                        -- EXTERNAL_GROUP_BY[$$113, $$110, $$108]  |PARTITIONED|
                          exchange
                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                            project ([$$122, $$123, $$113, $$110, $$108])
                            -- STREAM_PROJECT  |PARTITIONED|
                              select (gt($$l.getField(10), "1995-03-15"))
                              -- STREAM_SELECT  |PARTITIONED|
                                assign [$$123, $$122] <- [$$l.getField(6), 
$$l.getField(5)]
                                -- ASSIGN  |PARTITIONED|
                                  project ([$$108, $$110, $$113, $$l])
                                  -- STREAM_PROJECT  |PARTITIONED|
                                    exchange
                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                      unnest-map [$$113, $$114, $$l] <- 
index-search("LineItem", 0, "tpch", "LineItem", TRUE, TRUE, 1, $$112, 1, $$112, 
TRUE, TRUE, TRUE)
                                      -- BTREE_SEARCH  |PARTITIONED|
                                        exchange
                                        -- BROADCAST_EXCHANGE  |PARTITIONED|
                                          project ([$$112, $$108, $$110])
                                          -- STREAM_PROJECT  |PARTITIONED|
                                            exchange
                                            -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
                                              join (eq($$111, $$119))
                                              -- HYBRID_HASH_JOIN 
[$$111][$$119]  |PARTITIONED|
                                                exchange
                                                -- HASH_PARTITION_EXCHANGE 
[$$111]  |PARTITIONED|
                                                  project ([$$111])
                                                  -- STREAM_PROJECT  
|PARTITIONED|
                                                    select (eq($$c.getField(6), 
"BUILDING"))
                                                    -- STREAM_SELECT  
|PARTITIONED|
                                                      exchange
                                                      -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
                                                        data-scan []<-[$$111, 
$$c] <- tpch.Customer
                                                        -- DATASOURCE_SCAN  
|PARTITIONED|
                                                          exchange
                                                          -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                            empty-tuple-source
                                                            -- 
EMPTY_TUPLE_SOURCE  |PARTITIONED|
                                                exchange
                                                -- HASH_PARTITION_EXCHANGE 
[$$119]  |PARTITIONED|
                                                  union ($$141, $$133, $$112) 
($$143, $$131, $$108) ($$144, $$129, $$110) ($$145, $$130, $$119)
                                                  -- UNION_ALL  |PARTITIONED|
                                                    exchange
                                                    -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
                                                      project ([$$141, $$143, 
$$144, $$145])
                                                      -- STREAM_PROJECT  
|PARTITIONED|
                                                        exchange
                                                        -- 
RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
                                                          select (lt($$144, 
"1995-03-15"))
                                                          -- STREAM_SELECT  
|PARTITIONED|
                                                            project ([$$141, 
$$143, $$145, $$144])
                                                            -- STREAM_PROJECT  
|PARTITIONED|
                                                              assign [$$143, 
$$145, $$144] <- [$$142.getField(7), $$142.getField(1), $$142.getField(4)]
                                                              -- ASSIGN  
|PARTITIONED|
                                                                exchange
                                                                -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                  unnest-map 
[$$141, $$142] <- index-search("Orders", 0, "tpch", "Orders", FALSE, FALSE, 1, 
$$133, 1, $$133, TRUE, TRUE, TRUE)
                                                                  -- 
BTREE_SEARCH  |PARTITIONED|
                                                                    exchange
                                                                    -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                      split 
($$134)
                                                                      -- SPLIT  
|PARTITIONED|
                                                                        exchange
                                                                        -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                          
project ([$$129, $$130, $$131, $$133, $$134])
                                                                          -- 
STREAM_PROJECT  |PARTITIONED|
                                                                            
exchange
                                                                            -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                              
unnest-map [$$129, $$130, $$131, $$132, $$133, $$134] <- 
index-search("orderDateIdx", 0, "tpch", "Orders", FALSE, FALSE, 0, 1, $$128, 
TRUE, FALSE, FALSE)
                                                                              
-- BTREE_SEARCH  |PARTITIONED|
                                                                                
exchange
                                                                                
-- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                
  assign [$$128] <- ["1995-03-15"]
                                                                                
  -- ASSIGN  |PARTITIONED|
                                                                                
    empty-tuple-source
                                                                                
    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
                                                    exchange
                                                    -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
                                                      project ([$$133, $$131, 
$$129, $$130])
                                                      -- STREAM_PROJECT  
|PARTITIONED|
                                                        exchange
                                                        -- 
RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
                                                          project ([$$129, 
$$130, $$131, $$133])
                                                          -- STREAM_PROJECT  
|PARTITIONED|
                                                            exchange
                                                            -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                              split ($$134)
                                                              -- SPLIT  
|PARTITIONED|
                                                                exchange
                                                                -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                  project 
([$$129, $$130, $$131, $$133, $$134])
                                                                  -- 
STREAM_PROJECT  |PARTITIONED|
                                                                    exchange
                                                                    -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                      
unnest-map [$$129, $$130, $$131, $$132, $$133, $$134] <- 
index-search("orderDateIdx", 0, "tpch", "Orders", FALSE, FALSE, 0, 1, $$128, 
TRUE, FALSE, FALSE)
                                                                      -- 
BTREE_SEARCH  |PARTITIONED|
                                                                        exchange
                                                                        -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                          
assign [$$128] <- ["1995-03-15"]
                                                                          -- 
ASSIGN  |PARTITIONED|
                                                                            
empty-tuple-source
                                                                            -- 
EMPTY_TUPLE_SOURCE  |PARTITIONED|
{code}


  was:
When testing a query (TPC-H Q3), I found out that sometimes the join keys are 
not sorted if the index-nested loop join was choosen. The DDLs are attached 
below.

{code:sql}
The example query:
use tpch;
SELECT l_orderkey AS l_orderkey,
       sum(l.l_extendedprice * (1 - l.l_discount)) AS revenue,
       o_orderdate AS o_orderdate,
       o_shippriority AS o_shippriority
FROM  Customer AS c,
      Orders AS o,
      LineItem AS l
where c.c_mktsegment = 'BUILDING' AND c.c_custkey = o.o_custkey
AND {color:red}o.o_orderkey /*+ indexnl */= l.l_orderkey {color}
AND o.o_orderdate < '1995-03-15' AND l.l_shipdate > '1995-03-15'
/* +hash */
GROUP BY l.l_orderkey AS l_orderkey,
         o.o_orderdate AS o_orderdate,
         o.o_shippriority AS o_shippriority
ORDER BY revenue DESC,o_orderdate
LIMIT 10;
}
{code}

The optimized query plan is attached below. The LineItem table was searched 
directly using o_orderkeys without sorting them first.
{code}
distribute result [$$105]
-- DISTRIBUTE_RESULT  |UNPARTITIONED|
  exchange
  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
    limit 10
    -- STREAM_LIMIT  |UNPARTITIONED|
      project ([$$105])
      -- STREAM_PROJECT  |PARTITIONED|
        assign [$$105] <- [{"l_orderkey": $$l_orderkey, "revenue": $$117, 
"o_orderdate": $$o_orderdate, "o_shippriority": $$o_shippriority}]
        -- ASSIGN  |PARTITIONED|
          exchange
          -- SORT_MERGE_EXCHANGE [$$117(DESC), $$o_orderdate(ASC) ]  
|PARTITIONED|
            limit 10
            -- STREAM_LIMIT  |PARTITIONED|
              exchange
              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                order (topK: 10) (DESC, $$117) (ASC, $$o_orderdate)
                -- STABLE_SORT [topK: 10] [$$117(DESC), $$o_orderdate(ASC)]  
|PARTITIONED|
                  exchange
                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                    group by ([$$l_orderkey := $$125; $$o_orderdate := $$126; 
$$o_shippriority := $$127]) decor ([]) {
                              aggregate [$$117] <- 
[global-sql-sum-serial($$124)]
                              -- AGGREGATE  |LOCAL|
                                nested tuple source
                                -- NESTED_TUPLE_SOURCE  |LOCAL|
                           }
                    -- EXTERNAL_GROUP_BY[$$125, $$126, $$127]  |PARTITIONED|
                      exchange
                      -- HASH_PARTITION_EXCHANGE [$$125, $$126, $$127]  
|PARTITIONED|
                        group by ([$$125 := $$113; $$126 := $$110; $$127 := 
$$108]) decor ([]) {
                                  aggregate [$$124] <- 
[local-sql-sum-serial(numeric-multiply($$122, numeric-subtract(1, $$123)))]
                                  -- AGGREGATE  |LOCAL|
                                    nested tuple source
                                    -- NESTED_TUPLE_SOURCE  |LOCAL|
                               }
                        -- EXTERNAL_GROUP_BY[$$113, $$110, $$108]  |PARTITIONED|
                          exchange
                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                            project ([$$122, $$123, $$113, $$110, $$108])
                            -- STREAM_PROJECT  |PARTITIONED|
                              select (gt($$l.getField(10), "1995-03-15"))
                              -- STREAM_SELECT  |PARTITIONED|
                                assign [$$123, $$122] <- [$$l.getField(6), 
$$l.getField(5)]
                                -- ASSIGN  |PARTITIONED|
                                  project ([$$108, $$110, $$113, $$l])
                                  -- STREAM_PROJECT  |PARTITIONED|
                                    exchange
                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                      unnest-map [$$113, $$114, $$l] <- 
index-search("LineItem", 0, "tpch", "LineItem", TRUE, TRUE, 1, $$112, 1, $$112, 
TRUE, TRUE, TRUE)
                                      -- BTREE_SEARCH  |PARTITIONED|
                                        exchange
                                        -- BROADCAST_EXCHANGE  |PARTITIONED|
                                          project ([$$112, $$108, $$110])
                                          -- STREAM_PROJECT  |PARTITIONED|
                                            exchange
                                            -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
                                              join (eq($$111, $$119))
                                              -- HYBRID_HASH_JOIN 
[$$111][$$119]  |PARTITIONED|
                                                exchange
                                                -- HASH_PARTITION_EXCHANGE 
[$$111]  |PARTITIONED|
                                                  project ([$$111])
                                                  -- STREAM_PROJECT  
|PARTITIONED|
                                                    select (eq($$c.getField(6), 
"BUILDING"))
                                                    -- STREAM_SELECT  
|PARTITIONED|
                                                      exchange
                                                      -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
                                                        data-scan []<-[$$111, 
$$c] <- tpch.Customer
                                                        -- DATASOURCE_SCAN  
|PARTITIONED|
                                                          exchange
                                                          -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                            empty-tuple-source
                                                            -- 
EMPTY_TUPLE_SOURCE  |PARTITIONED|
                                                exchange
                                                -- HASH_PARTITION_EXCHANGE 
[$$119]  |PARTITIONED|
                                                  union ($$141, $$133, $$112) 
($$143, $$131, $$108) ($$144, $$129, $$110) ($$145, $$130, $$119)
                                                  -- UNION_ALL  |PARTITIONED|
                                                    exchange
                                                    -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
                                                      project ([$$141, $$143, 
$$144, $$145])
                                                      -- STREAM_PROJECT  
|PARTITIONED|
                                                        exchange
                                                        -- 
RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
                                                          select (lt($$144, 
"1995-03-15"))
                                                          -- STREAM_SELECT  
|PARTITIONED|
                                                            project ([$$141, 
$$143, $$145, $$144])
                                                            -- STREAM_PROJECT  
|PARTITIONED|
                                                              assign [$$143, 
$$145, $$144] <- [$$142.getField(7), $$142.getField(1), $$142.getField(4)]
                                                              -- ASSIGN  
|PARTITIONED|
                                                                exchange
                                                                -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                  unnest-map 
[$$141, $$142] <- index-search("Orders", 0, "tpch", "Orders", FALSE, FALSE, 1, 
$$133, 1, $$133, TRUE, TRUE, TRUE)
                                                                  -- 
BTREE_SEARCH  |PARTITIONED|
                                                                    exchange
                                                                    -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                      split 
($$134)
                                                                      -- SPLIT  
|PARTITIONED|
                                                                        exchange
                                                                        -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                          
project ([$$129, $$130, $$131, $$133, $$134])
                                                                          -- 
STREAM_PROJECT  |PARTITIONED|
                                                                            
exchange
                                                                            -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                              
unnest-map [$$129, $$130, $$131, $$132, $$133, $$134] <- 
index-search("orderDateIdx", 0, "tpch", "Orders", FALSE, FALSE, 0, 1, $$128, 
TRUE, FALSE, FALSE)
                                                                              
-- BTREE_SEARCH  |PARTITIONED|
                                                                                
exchange
                                                                                
-- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                                
  assign [$$128] <- ["1995-03-15"]
                                                                                
  -- ASSIGN  |PARTITIONED|
                                                                                
    empty-tuple-source
                                                                                
    -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
                                                    exchange
                                                    -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
                                                      project ([$$133, $$131, 
$$129, $$130])
                                                      -- STREAM_PROJECT  
|PARTITIONED|
                                                        exchange
                                                        -- 
RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
                                                          project ([$$129, 
$$130, $$131, $$133])
                                                          -- STREAM_PROJECT  
|PARTITIONED|
                                                            exchange
                                                            -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                              split ($$134)
                                                              -- SPLIT  
|PARTITIONED|
                                                                exchange
                                                                -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                  project 
([$$129, $$130, $$131, $$133, $$134])
                                                                  -- 
STREAM_PROJECT  |PARTITIONED|
                                                                    exchange
                                                                    -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                      
unnest-map [$$129, $$130, $$131, $$132, $$133, $$134] <- 
index-search("orderDateIdx", 0, "tpch", "Orders", FALSE, FALSE, 0, 1, $$128, 
TRUE, FALSE, FALSE)
                                                                      -- 
BTREE_SEARCH  |PARTITIONED|
                                                                        exchange
                                                                        -- 
ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                                          
assign [$$128] <- ["1995-03-15"]
                                                                          -- 
ASSIGN  |PARTITIONED|
                                                                            
empty-tuple-source
                                                                            -- 
EMPTY_TUPLE_SOURCE  |PARTITIONED|
{code}



> Join keys not sorted in index nested loop join
> ----------------------------------------------
>
>                 Key: ASTERIXDB-2761
>                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-2761
>             Project: Apache AsterixDB
>          Issue Type: Bug
>          Components: COMP - Compiler
>            Reporter: Chen Luo
>            Priority: Minor
>         Attachments: tpch_ddl.sql
>
>
> When testing a query (TPC-H Q3), I found out that sometimes the join keys are 
> not sorted if the index-nested loop join was choosen. The DDLs are attached 
> below.
> {code:sql}
> The example query:
> use tpch;
> SELECT l_orderkey AS l_orderkey,
>        sum(l.l_extendedprice * (1 - l.l_discount)) AS revenue,
>        o_orderdate AS o_orderdate,
>        o_shippriority AS o_shippriority
> FROM  Customer AS c,
>       Orders AS o,
>       LineItem AS l
> where c.c_mktsegment = 'BUILDING' AND c.c_custkey = o.o_custkey
> AND {color:red}o.o_orderkey /*+ indexnl */= l.l_orderkey {color}
> AND o.o_orderdate < '1995-03-15' AND l.l_shipdate > '1995-03-15'
> /* +hash */
> GROUP BY l.l_orderkey AS l_orderkey,
>          o.o_orderdate AS o_orderdate,
>          o.o_shippriority AS o_shippriority
> ORDER BY revenue DESC,o_orderdate
> LIMIT 10;
> {code}
> The optimized query plan is attached below. The LineItem table was searched 
> directly using o_orderkeys without sorting them first.
> {code}
> distribute result [$$105]
> -- DISTRIBUTE_RESULT  |UNPARTITIONED|
>   exchange
>   -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
>     limit 10
>     -- STREAM_LIMIT  |UNPARTITIONED|
>       project ([$$105])
>       -- STREAM_PROJECT  |PARTITIONED|
>         assign [$$105] <- [{"l_orderkey": $$l_orderkey, "revenue": $$117, 
> "o_orderdate": $$o_orderdate, "o_shippriority": $$o_shippriority}]
>         -- ASSIGN  |PARTITIONED|
>           exchange
>           -- SORT_MERGE_EXCHANGE [$$117(DESC), $$o_orderdate(ASC) ]  
> |PARTITIONED|
>             limit 10
>             -- STREAM_LIMIT  |PARTITIONED|
>               exchange
>               -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                 order (topK: 10) (DESC, $$117) (ASC, $$o_orderdate)
>                 -- STABLE_SORT [topK: 10] [$$117(DESC), $$o_orderdate(ASC)]  
> |PARTITIONED|
>                   exchange
>                   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                     group by ([$$l_orderkey := $$125; $$o_orderdate := $$126; 
> $$o_shippriority := $$127]) decor ([]) {
>                               aggregate [$$117] <- 
> [global-sql-sum-serial($$124)]
>                               -- AGGREGATE  |LOCAL|
>                                 nested tuple source
>                                 -- NESTED_TUPLE_SOURCE  |LOCAL|
>                            }
>                     -- EXTERNAL_GROUP_BY[$$125, $$126, $$127]  |PARTITIONED|
>                       exchange
>                       -- HASH_PARTITION_EXCHANGE [$$125, $$126, $$127]  
> |PARTITIONED|
>                         group by ([$$125 := $$113; $$126 := $$110; $$127 := 
> $$108]) decor ([]) {
>                                   aggregate [$$124] <- 
> [local-sql-sum-serial(numeric-multiply($$122, numeric-subtract(1, $$123)))]
>                                   -- AGGREGATE  |LOCAL|
>                                     nested tuple source
>                                     -- NESTED_TUPLE_SOURCE  |LOCAL|
>                                }
>                         -- EXTERNAL_GROUP_BY[$$113, $$110, $$108]  
> |PARTITIONED|
>                           exchange
>                           -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                             project ([$$122, $$123, $$113, $$110, $$108])
>                             -- STREAM_PROJECT  |PARTITIONED|
>                               select (gt($$l.getField(10), "1995-03-15"))
>                               -- STREAM_SELECT  |PARTITIONED|
>                                 assign [$$123, $$122] <- [$$l.getField(6), 
> $$l.getField(5)]
>                                 -- ASSIGN  |PARTITIONED|
>                                   project ([$$108, $$110, $$113, $$l])
>                                   -- STREAM_PROJECT  |PARTITIONED|
>                                     exchange
>                                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                                       unnest-map [$$113, $$114, $$l] <- 
> index-search("LineItem", 0, "tpch", "LineItem", TRUE, TRUE, 1, $$112, 1, 
> $$112, TRUE, TRUE, TRUE)
>                                       -- BTREE_SEARCH  |PARTITIONED|
>                                         exchange
>                                         -- BROADCAST_EXCHANGE  |PARTITIONED|
>                                           project ([$$112, $$108, $$110])
>                                           -- STREAM_PROJECT  |PARTITIONED|
>                                             exchange
>                                             -- ONE_TO_ONE_EXCHANGE  
> |PARTITIONED|
>                                               join (eq($$111, $$119))
>                                               -- HYBRID_HASH_JOIN 
> [$$111][$$119]  |PARTITIONED|
>                                                 exchange
>                                                 -- HASH_PARTITION_EXCHANGE 
> [$$111]  |PARTITIONED|
>                                                   project ([$$111])
>                                                   -- STREAM_PROJECT  
> |PARTITIONED|
>                                                     select 
> (eq($$c.getField(6), "BUILDING"))
>                                                     -- STREAM_SELECT  
> |PARTITIONED|
>                                                       exchange
>                                                       -- ONE_TO_ONE_EXCHANGE  
> |PARTITIONED|
>                                                         data-scan []<-[$$111, 
> $$c] <- tpch.Customer
>                                                         -- DATASOURCE_SCAN  
> |PARTITIONED|
>                                                           exchange
>                                                           -- 
> ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                                                             empty-tuple-source
>                                                             -- 
> EMPTY_TUPLE_SOURCE  |PARTITIONED|
>                                                 exchange
>                                                 -- HASH_PARTITION_EXCHANGE 
> [$$119]  |PARTITIONED|
>                                                   union ($$141, $$133, $$112) 
> ($$143, $$131, $$108) ($$144, $$129, $$110) ($$145, $$130, $$119)
>                                                   -- UNION_ALL  |PARTITIONED|
>                                                     exchange
>                                                     -- ONE_TO_ONE_EXCHANGE  
> |PARTITIONED|
>                                                       project ([$$141, $$143, 
> $$144, $$145])
>                                                       -- STREAM_PROJECT  
> |PARTITIONED|
>                                                         exchange
>                                                         -- 
> RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
>                                                           select (lt($$144, 
> "1995-03-15"))
>                                                           -- STREAM_SELECT  
> |PARTITIONED|
>                                                             project ([$$141, 
> $$143, $$145, $$144])
>                                                             -- STREAM_PROJECT 
>  |PARTITIONED|
>                                                               assign [$$143, 
> $$145, $$144] <- [$$142.getField(7), $$142.getField(1), $$142.getField(4)]
>                                                               -- ASSIGN  
> |PARTITIONED|
>                                                                 exchange
>                                                                 -- 
> ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                                                                   unnest-map 
> [$$141, $$142] <- index-search("Orders", 0, "tpch", "Orders", FALSE, FALSE, 
> 1, $$133, 1, $$133, TRUE, TRUE, TRUE)
>                                                                   -- 
> BTREE_SEARCH  |PARTITIONED|
>                                                                     exchange
>                                                                     -- 
> ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                                                                       split 
> ($$134)
>                                                                       -- 
> SPLIT  |PARTITIONED|
>                                                                         
> exchange
>                                                                         -- 
> ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                                                                           
> project ([$$129, $$130, $$131, $$133, $$134])
>                                                                           -- 
> STREAM_PROJECT  |PARTITIONED|
>                                                                             
> exchange
>                                                                             
> -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                                                                               
> unnest-map [$$129, $$130, $$131, $$132, $$133, $$134] <- 
> index-search("orderDateIdx", 0, "tpch", "Orders", FALSE, FALSE, 0, 1, $$128, 
> TRUE, FALSE, FALSE)
>                                                                               
> -- BTREE_SEARCH  |PARTITIONED|
>                                                                               
>   exchange
>                                                                               
>   -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                                                                               
>     assign [$$128] <- ["1995-03-15"]
>                                                                               
>     -- ASSIGN  |PARTITIONED|
>                                                                               
>       empty-tuple-source
>                                                                               
>       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
>                                                     exchange
>                                                     -- ONE_TO_ONE_EXCHANGE  
> |PARTITIONED|
>                                                       project ([$$133, $$131, 
> $$129, $$130])
>                                                       -- STREAM_PROJECT  
> |PARTITIONED|
>                                                         exchange
>                                                         -- 
> RANDOM_PARTITION_EXCHANGE  |PARTITIONED|
>                                                           project ([$$129, 
> $$130, $$131, $$133])
>                                                           -- STREAM_PROJECT  
> |PARTITIONED|
>                                                             exchange
>                                                             -- 
> ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                                                               split ($$134)
>                                                               -- SPLIT  
> |PARTITIONED|
>                                                                 exchange
>                                                                 -- 
> ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                                                                   project 
> ([$$129, $$130, $$131, $$133, $$134])
>                                                                   -- 
> STREAM_PROJECT  |PARTITIONED|
>                                                                     exchange
>                                                                     -- 
> ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                                                                       
> unnest-map [$$129, $$130, $$131, $$132, $$133, $$134] <- 
> index-search("orderDateIdx", 0, "tpch", "Orders", FALSE, FALSE, 0, 1, $$128, 
> TRUE, FALSE, FALSE)
>                                                                       -- 
> BTREE_SEARCH  |PARTITIONED|
>                                                                         
> exchange
>                                                                         -- 
> ONE_TO_ONE_EXCHANGE  |PARTITIONED|
>                                                                           
> assign [$$128] <- ["1995-03-15"]
>                                                                           -- 
> ASSIGN  |PARTITIONED|
>                                                                             
> empty-tuple-source
>                                                                             
> -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
> {code}



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

Reply via email to