ASTERIXDB-1186: fixed a composite primary index search issue.

 - Providing only one field to a composite primary index search
   now works properly by broadcasting search predicates to all nodes.

Change-Id: I0f75229ea804a02e7cacd04f7269a4907668eab0
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1094
Sonar-Qube: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Reviewed-by: Taewoo Kim <wangs...@yahoo.com>


Project: http://git-wip-us.apache.org/repos/asf/asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/asterixdb/commit/52a9d992
Tree: http://git-wip-us.apache.org/repos/asf/asterixdb/tree/52a9d992
Diff: http://git-wip-us.apache.org/repos/asf/asterixdb/diff/52a9d992

Branch: refs/heads/master
Commit: 52a9d992dfadf6bb3057968416bf217c9a42dffb
Parents: fdc71eb
Author: Taewoo Kim <wangs...@yahoo.com>
Authored: Wed Aug 24 11:37:43 2016 -0700
Committer: Taewoo Kim <wangs...@yahoo.com>
Committed: Thu Aug 25 12:51:52 2016 -0700

----------------------------------------------------------------------
 .../physical/BTreeSearchPOperator.java          |   43 +-
 .../primary-composite-key-prefix-join_03.plan   |    2 +-
 .../primary-composite-key-prefix-join_04.plan   |    4 +-
 .../primary-composite-key-prefix-join_05.plan   |    4 +-
 .../primary-composite-key-prefix-join_06.plan   |    4 +-
 .../primary-composite-key-prefix-join_03.plan   |   17 +-
 .../primary-composite-key-prefix-join_04.plan   |   17 +-
 .../primary-composite-key-prefix-join_05.plan   |   17 +-
 .../primary-composite-key-prefix-join_06.plan   |   17 +-
 .../cross-dv19/cross-dv19.3.query.aql           |    1 +
 .../btree-index-composite-key-02.1.ddl.aql      |   68 +
 .../btree-index-composite-key-02.2.update.aql   |   28 +
 .../btree-index-composite-key-02.3.query.aql    |   28 +
 .../btree-index-composite-key-02.4.query.aql    |   28 +
 .../cross-dv19/cross-dv19.3.query.sqlpp         |    1 +
 .../btree-index-composite-key-02.3.adm          | 6005 ++++++++++++++++++
 .../btree-index-composite-key-02.4.adm          | 6005 ++++++++++++++++++
 .../cross-dataverse/cross-dv19/cross-dv19.3.ast |   17 +
 .../src/test/resources/runtimets/testsuite.xml  |    5 +
 .../asterix/metadata/declared/AqlIndex.java     |    7 +-
 20 files changed, 12252 insertions(+), 66 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52a9d992/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/BTreeSearchPOperator.java
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/BTreeSearchPOperator.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/BTreeSearchPOperator.java
index 69665a8..c3796ac 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/BTreeSearchPOperator.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/BTreeSearchPOperator.java
@@ -21,9 +21,11 @@ package org.apache.asterix.algebra.operators.physical;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.asterix.metadata.declared.AqlIndex;
 import org.apache.asterix.metadata.declared.AqlMetadataProvider;
 import org.apache.asterix.metadata.declared.AqlSourceId;
 import org.apache.asterix.metadata.entities.Dataset;
+import org.apache.asterix.metadata.entities.Index;
 import org.apache.asterix.om.functions.AsterixBuiltinFunctions;
 import org.apache.asterix.optimizer.rules.am.BTreeJobGenParams;
 import 
org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
@@ -146,25 +148,32 @@ public class BTreeSearchPOperator extends 
IndexSearchPOperator {
         if (requiresBroadcast) {
             // For primary indexes optimizing an equality condition we can 
reduce the broadcast requirement to hash partitioning.
             if (isPrimaryIndex && isEqCondition) {
-                StructuralPropertiesVector[] pv = new 
StructuralPropertiesVector[1];
-                ListSet<LogicalVariable> searchKeyVars = new 
ListSet<LogicalVariable>();
-                searchKeyVars.addAll(lowKeyVarList);
-                searchKeyVars.addAll(highKeyVarList);
-                // Also, add a local sorting property to enforce a sort before 
the primary-index operator.
-                List<ILocalStructuralProperty> propsLocal = new 
ArrayList<ILocalStructuralProperty>();
-                List<OrderColumn> orderColumns = new ArrayList<OrderColumn>();
-                for (LogicalVariable orderVar : searchKeyVars) {
-                    orderColumns.add(new OrderColumn(orderVar, OrderKind.ASC));
+
+                // If this is a composite primary index, then all of the keys 
should be provided.
+                Index searchIndex = ((AqlIndex) idx).getIndex();
+                int numberOfKeyFields = searchIndex.getKeyFieldNames().size();
+
+                if (numberOfKeyFields < 2
+                        || (lowKeyVarList.size() == numberOfKeyFields && 
highKeyVarList.size() == numberOfKeyFields)) {
+                    StructuralPropertiesVector[] pv = new 
StructuralPropertiesVector[1];
+                    ListSet<LogicalVariable> searchKeyVars = new ListSet<>();
+                    searchKeyVars.addAll(lowKeyVarList);
+                    searchKeyVars.addAll(highKeyVarList);
+                    // Also, add a local sorting property to enforce a sort 
before the primary-index operator.
+                    List<ILocalStructuralProperty> propsLocal = new 
ArrayList<>();
+                    List<OrderColumn> orderColumns = new ArrayList<>();
+                    for (LogicalVariable orderVar : searchKeyVars) {
+                        orderColumns.add(new OrderColumn(orderVar, 
OrderKind.ASC));
+                    }
+                    propsLocal.add(new LocalOrderProperty(orderColumns));
+                    pv[0] = new StructuralPropertiesVector(new 
UnorderedPartitionedProperty(searchKeyVars, domain),
+                            propsLocal);
+                    return new PhysicalRequirements(pv, 
IPartitioningRequirementsCoordinator.NO_COORDINATION);
                 }
-                propsLocal.add(new LocalOrderProperty(orderColumns));
-                pv[0] = new StructuralPropertiesVector(new 
UnorderedPartitionedProperty(searchKeyVars, domain),
-                        propsLocal);
-                return new PhysicalRequirements(pv, 
IPartitioningRequirementsCoordinator.NO_COORDINATION);
-            } else {
-                StructuralPropertiesVector[] pv = new 
StructuralPropertiesVector[1];
-                pv[0] = new StructuralPropertiesVector(new 
BroadcastPartitioningProperty(domain), null);
-                return new PhysicalRequirements(pv, 
IPartitioningRequirementsCoordinator.NO_COORDINATION);
             }
+            StructuralPropertiesVector[] pv = new 
StructuralPropertiesVector[1];
+            pv[0] = new StructuralPropertiesVector(new 
BroadcastPartitioningProperty(domain), null);
+            return new PhysicalRequirements(pv, 
IPartitioningRequirementsCoordinator.NO_COORDINATION);
         } else {
             return super.getRequiredPropertiesForChildren(op, reqdByParent, 
context);
         }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52a9d992/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_03.plan
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_03.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_03.plan
index 33e6c10..5814a93 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_03.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_03.plan
@@ -6,7 +6,7 @@
           -- STREAM_SELECT  |PARTITIONED|
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
               -- BTREE_SEARCH  |PARTITIONED|
-                -- HASH_PARTITION_MERGE_EXCHANGE MERGE:[$$12(ASC), $$13(ASC)] 
HASH:[$$12]  |PARTITIONED|
+                -- BROADCAST_EXCHANGE  |PARTITIONED|
                   -- DATASOURCE_SCAN  |PARTITIONED|
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                       -- EMPTY_TUPLE_SOURCE  |PARTITIONED|

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52a9d992/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_04.plan
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_04.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_04.plan
index 721af36..5814a93 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_04.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_04.plan
@@ -6,7 +6,7 @@
           -- STREAM_SELECT  |PARTITIONED|
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
               -- BTREE_SEARCH  |PARTITIONED|
-                -- HASH_PARTITION_MERGE_EXCHANGE MERGE:[$$12(ASC), $$13(ASC)] 
HASH:[$$12]  |PARTITIONED|
+                -- BROADCAST_EXCHANGE  |PARTITIONED|
                   -- DATASOURCE_SCAN  |PARTITIONED|
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
+                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52a9d992/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_05.plan
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_05.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_05.plan
index 721af36..5814a93 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_05.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_05.plan
@@ -6,7 +6,7 @@
           -- STREAM_SELECT  |PARTITIONED|
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
               -- BTREE_SEARCH  |PARTITIONED|
-                -- HASH_PARTITION_MERGE_EXCHANGE MERGE:[$$12(ASC), $$13(ASC)] 
HASH:[$$12]  |PARTITIONED|
+                -- BROADCAST_EXCHANGE  |PARTITIONED|
                   -- DATASOURCE_SCAN  |PARTITIONED|
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
+                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52a9d992/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_06.plan
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_06.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_06.plan
index 721af36..5814a93 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_06.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-prefix-join_06.plan
@@ -6,7 +6,7 @@
           -- STREAM_SELECT  |PARTITIONED|
             -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
               -- BTREE_SEARCH  |PARTITIONED|
-                -- HASH_PARTITION_MERGE_EXCHANGE MERGE:[$$12(ASC), $$13(ASC)] 
HASH:[$$12]  |PARTITIONED|
+                -- BROADCAST_EXCHANGE  |PARTITIONED|
                   -- DATASOURCE_SCAN  |PARTITIONED|
                     -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
+                      -- EMPTY_TUPLE_SOURCE  |PARTITIONED|

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52a9d992/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_03.plan
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_03.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_03.plan
index 0fe5859..8bd7dc4 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_03.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_03.plan
@@ -8,14 +8,11 @@
               -- STREAM_PROJECT  |PARTITIONED|
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   -- BTREE_SEARCH  |PARTITIONED|
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-                        -- HASH_PARTITION_EXCHANGE [$$22]  |PARTITIONED|
+                    -- BROADCAST_EXCHANGE  |PARTITIONED|
+                      -- ASSIGN  |PARTITIONED|
+                        -- ASSIGN  |PARTITIONED|
                           -- STREAM_PROJECT  |PARTITIONED|
-                            -- ASSIGN  |PARTITIONED|
-                              -- ASSIGN  |PARTITIONED|
-                                -- STREAM_PROJECT  |PARTITIONED|
-                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    -- DATASOURCE_SCAN  |PARTITIONED|
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
+                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                              -- DATASOURCE_SCAN  |PARTITIONED|
+                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52a9d992/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_04.plan
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_04.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_04.plan
index 0fe5859..8bd7dc4 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_04.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_04.plan
@@ -8,14 +8,11 @@
               -- STREAM_PROJECT  |PARTITIONED|
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   -- BTREE_SEARCH  |PARTITIONED|
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-                        -- HASH_PARTITION_EXCHANGE [$$22]  |PARTITIONED|
+                    -- BROADCAST_EXCHANGE  |PARTITIONED|
+                      -- ASSIGN  |PARTITIONED|
+                        -- ASSIGN  |PARTITIONED|
                           -- STREAM_PROJECT  |PARTITIONED|
-                            -- ASSIGN  |PARTITIONED|
-                              -- ASSIGN  |PARTITIONED|
-                                -- STREAM_PROJECT  |PARTITIONED|
-                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    -- DATASOURCE_SCAN  |PARTITIONED|
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
+                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                              -- DATASOURCE_SCAN  |PARTITIONED|
+                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52a9d992/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_05.plan
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_05.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_05.plan
index 0fe5859..8bd7dc4 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_05.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_05.plan
@@ -8,14 +8,11 @@
               -- STREAM_PROJECT  |PARTITIONED|
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   -- BTREE_SEARCH  |PARTITIONED|
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-                        -- HASH_PARTITION_EXCHANGE [$$22]  |PARTITIONED|
+                    -- BROADCAST_EXCHANGE  |PARTITIONED|
+                      -- ASSIGN  |PARTITIONED|
+                        -- ASSIGN  |PARTITIONED|
                           -- STREAM_PROJECT  |PARTITIONED|
-                            -- ASSIGN  |PARTITIONED|
-                              -- ASSIGN  |PARTITIONED|
-                                -- STREAM_PROJECT  |PARTITIONED|
-                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    -- DATASOURCE_SCAN  |PARTITIONED|
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
+                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                              -- DATASOURCE_SCAN  |PARTITIONED|
+                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52a9d992/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_06.plan
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_06.plan
 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_06.plan
index 0fe5859..8bd7dc4 100644
--- 
a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_06.plan
+++ 
b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-prefix-join_06.plan
@@ -8,14 +8,11 @@
               -- STREAM_PROJECT  |PARTITIONED|
                 -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                   -- BTREE_SEARCH  |PARTITIONED|
-                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                      -- STABLE_SORT [$$22(ASC)]  |PARTITIONED|
-                        -- HASH_PARTITION_EXCHANGE [$$22]  |PARTITIONED|
+                    -- BROADCAST_EXCHANGE  |PARTITIONED|
+                      -- ASSIGN  |PARTITIONED|
+                        -- ASSIGN  |PARTITIONED|
                           -- STREAM_PROJECT  |PARTITIONED|
-                            -- ASSIGN  |PARTITIONED|
-                              -- ASSIGN  |PARTITIONED|
-                                -- STREAM_PROJECT  |PARTITIONED|
-                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                    -- DATASOURCE_SCAN  |PARTITIONED|
-                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
-                                        -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
\ No newline at end of file
+                            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                              -- DATASOURCE_SCAN  |PARTITIONED|
+                                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
+                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52a9d992/asterixdb/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/cross-dv19/cross-dv19.3.query.aql
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/cross-dv19/cross-dv19.3.query.aql
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/cross-dv19/cross-dv19.3.query.aql
index 2a5277c..2017742 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/cross-dv19/cross-dv19.3.query.aql
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries/cross-dataverse/cross-dv19/cross-dv19.3.query.aql
@@ -24,5 +24,6 @@
 
 for $l in dataset('Metadata.Dataset')
 where $l.DataverseName='test1' or $l.DataverseName='test2' or 
$l.DataverseName='TwitterData'
+order by $l.DataverseName, $l.DatasetName, $l.DatatypeDataverseName
 return $l
 

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52a9d992/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key-02/btree-index-composite-key-02.1.ddl.aql
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key-02/btree-index-composite-key-02.1.ddl.aql
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key-02/btree-index-composite-key-02.1.ddl.aql
new file mode 100644
index 0000000..c193cc5
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key-02/btree-index-composite-key-02.1.ddl.aql
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/*
+ * Description     : Test that BTree index is used in query plan.
+ *                 : define two BTree indexes - composite key 
(l_orderkey,l_linenumber) on LineItem
+ *                 : single key (o_orderkey) on Orders
+ *                 : predicate => where $l.l_orderkey = $o.o_orderkey
+ *                 : Outer - $l (LineItem), Inner - $l (Orders)
+ * Expected Result : Success
+ * Issue           : ASTERIXDB-1186
+ */
+
+drop dataverse test if exists;
+create dataverse test;
+use dataverse test;
+
+create type LineItemType as
+{
+  l_orderkey: int64,
+  l_partkey: int64,
+  l_suppkey: int64,
+  l_linenumber: int32,
+  l_quantity: int32,
+  l_extendedprice: double,
+  l_discount: double,
+  l_tax: double,
+  l_returnflag: string,
+  l_linestatus: string,
+  l_shipdate: string,
+  l_commitdate: string,
+  l_receiptdate: string,
+  l_shipinstruct: string,
+  l_shipmode: string,
+  l_comment: string
+}
+
+create type OrderType as
+{
+  o_orderkey: int64,
+  o_custkey: int64,
+  o_orderstatus: string,
+  o_totalprice: double,
+  o_orderdate: string,
+  o_orderpriority: string,
+  o_clerk: string,
+  o_shippriority: int32,
+  o_comment: string
+}
+
+create dataset LineItem(LineItemType) primary key l_orderkey, l_linenumber;
+create dataset Orders(OrderType) primary key o_orderkey;

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52a9d992/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key-02/btree-index-composite-key-02.2.update.aql
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key-02/btree-index-composite-key-02.2.update.aql
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key-02/btree-index-composite-key-02.2.update.aql
new file mode 100644
index 0000000..567ee98
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key-02/btree-index-composite-key-02.2.update.aql
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+use dataverse test;
+
+load dataset LineItem
+using localfs
+(("path"="asterix_nc1://data/tpch0.001/lineitem.tbl"),("format"="delimited-text"),("delimiter"="|"))
 pre-sorted;
+
+load dataset Orders
+using localfs
+(("path"="asterix_nc1://data/tpch0.001/orders.tbl"),("format"="delimited-text"),("delimiter"="|"))
 pre-sorted;

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52a9d992/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key-02/btree-index-composite-key-02.3.query.aql
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key-02/btree-index-composite-key-02.3.query.aql
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key-02/btree-index-composite-key-02.3.query.aql
new file mode 100644
index 0000000..8377159
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key-02/btree-index-composite-key-02.3.query.aql
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+use dataverse test;
+
+// Outer - $l (LineItem), Inner - $o (Orders)
+for $l in dataset('LineItem')
+for $o in dataset('Orders')
+where $l.l_orderkey /*+ indexnl */ = $o.o_orderkey
+order by $o.o_orderkey,$l.l_orderkey
+return
+{ "o_orderkey": $o.o_orderkey, "l_orderkey": $l.l_orderkey  }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52a9d992/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key-02/btree-index-composite-key-02.4.query.aql
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key-02/btree-index-composite-key-02.4.query.aql
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key-02/btree-index-composite-key-02.4.query.aql
new file mode 100644
index 0000000..dc911fc
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries/index-selection/btree-index-composite-key-02/btree-index-composite-key-02.4.query.aql
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+use dataverse test;
+
+// Outer - $o (Orders), Inner - $l (LineItem)
+for $o in dataset('Orders')
+for $l in dataset('LineItem')
+where $l.l_orderkey /*+ indexnl */ = $o.o_orderkey
+order by $o.o_orderkey,$l.l_orderkey
+return
+{ "o_orderkey": $o.o_orderkey, "l_orderkey": $l.l_orderkey  }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/52a9d992/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/cross-dataverse/cross-dv19/cross-dv19.3.query.sqlpp
----------------------------------------------------------------------
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/cross-dataverse/cross-dv19/cross-dv19.3.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/cross-dataverse/cross-dv19/cross-dv19.3.query.sqlpp
index 4d91114..2c5c6a4 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/cross-dataverse/cross-dv19/cross-dv19.3.query.sqlpp
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/cross-dataverse/cross-dv19/cross-dv19.3.query.sqlpp
@@ -25,4 +25,5 @@
 select element l
 from  `Metadata.Dataset` as l
 where ((l.DataverseName = 'test1') or (l.DataverseName = 'test2') or 
(l.DataverseName = 'TwitterData'))
+order by l.DataverseName, l.DatasetName, l.DatatypeDataverseName
 ;

Reply via email to