abdullah alamoudi has submitted this change and it was merged. Change subject: [ASTERIXDB-920] Fix BTree Composite Key Search ......................................................................
[ASTERIXDB-920] Fix BTree Composite Key Search - user model changes: no - storage format changes: no - interface changes: no Details: When we search a primary BTree with composite keys, we should always add another select operator to filter out results, unless only the last key is a range search. The reason is that when we search a BTree, we iterate from the start index (based on the composite low range) to the end index (based on the composite high range). However, during the iteration, there could be a lot of false positives. This patch fixes this bug by preserving the select operator in case of composite keys. Change-Id: I8654e52aec59601c533255cd57c2824612066fc0 Reviewed-on: https://asterix-gerrit.ics.uci.edu/2227 Sonar-Qube: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Contrib: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> Reviewed-by: abdullah alamoudi <[email protected]> --- M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java M asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-join_01.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-join_02.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-15.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-16.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-19.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-20.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-join_01.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-join_02.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-15.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-16.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-19.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-20.plan M asterixdb/asterix-app/src/test/resources/optimizerts/results/skip-index/dont-skip-primary-index.plan A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-low-high/composite-low-high.1.ddl.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-low-high/composite-low-high.2.update.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-low-high/composite-low-high.3.query.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-920/query-ASTERIXDB-920.1.ddl.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-920/query-ASTERIXDB-920.2.update.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-920/query-ASTERIXDB-920.3.query.sqlpp A asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/composite-low-high/composite-low-high.1.adm A asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/query-ASTERIXDB-920/query-ASTERIXDB-920.1.adm M asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml 23 files changed, 339 insertions(+), 85 deletions(-) Approvals: abdullah alamoudi: Looks good to me, approved Jenkins: Verified; No violations found; ; Verified Objections: Anon. E. Moose #1000171: Violations found diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java index ddc93f8..29d00d0 100644 --- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java +++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/BTreeAccessMethod.java @@ -416,22 +416,21 @@ return null; } - // If the select condition contains mixed open/closed intervals on multiple keys, then we make all intervals - // closed to obtain a superset of answers and leave the original selection in place. + // if we have composite search keys, we should always need a post-processing to ensure the correctness + // of search results because of the way a BTree is searched, unless only the last key is a range search. + // During a BTree search, we iterate from the start index + // (based on the low keys) to the end index (based on the high keys). During the iteration, + // we can encounter a lot of false positives boolean primaryIndexPostProccessingIsNeeded = false; - for (int i = 1; i < numSecondaryKeys; ++i) { - if (lowKeyInclusive[i] != lowKeyInclusive[0]) { - Arrays.fill(lowKeyInclusive, true); + for (int i = 0; i < numSecondaryKeys - 1; i++) { + if (!LimitType.EQUAL.equals(lowKeyLimits[i]) || !LimitType.EQUAL.equals(highKeyLimits[i])) { primaryIndexPostProccessingIsNeeded = true; - break; } } - for (int i = 1; i < numSecondaryKeys; ++i) { - if (highKeyInclusive[i] != highKeyInclusive[0]) { - Arrays.fill(highKeyInclusive, true); - primaryIndexPostProccessingIsNeeded = true; - break; - } + + if (primaryIndexPostProccessingIsNeeded) { + Arrays.fill(lowKeyInclusive, true); + Arrays.fill(highKeyInclusive, true); } // determine cases when prefix search could be applied diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-join_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-join_01.plan index 00b6d92..5814a93 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-join_01.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-join_01.plan @@ -3,9 +3,10 @@ -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- BTREE_SEARCH |PARTITIONED| - -- BROADCAST_EXCHANGE |PARTITIONED| - -- DATASOURCE_SCAN |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- EMPTY_TUPLE_SOURCE |PARTITIONED| \ No newline at end of file + -- STREAM_SELECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- BROADCAST_EXCHANGE |PARTITIONED| + -- DATASOURCE_SCAN |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- EMPTY_TUPLE_SOURCE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-join_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-join_02.plan index 00b6d92..5814a93 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-join_02.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index-join/primary-composite-key-join_02.plan @@ -3,9 +3,10 @@ -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- BTREE_SEARCH |PARTITIONED| - -- BROADCAST_EXCHANGE |PARTITIONED| - -- DATASOURCE_SCAN |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- EMPTY_TUPLE_SOURCE |PARTITIONED| \ No newline at end of file + -- STREAM_SELECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- BROADCAST_EXCHANGE |PARTITIONED| + -- DATASOURCE_SCAN |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- EMPTY_TUPLE_SOURCE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-15.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-15.plan index 6f13ebb..279cc83 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-15.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-15.plan @@ -1,8 +1,9 @@ -- DISTRIBUTE_RESULT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- BTREE_SEARCH |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- ASSIGN |PARTITIONED| - -- EMPTY_TUPLE_SOURCE |PARTITIONED| + -- STREAM_SELECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- EMPTY_TUPLE_SOURCE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-16.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-16.plan index 6f13ebb..279cc83 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-16.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-16.plan @@ -1,8 +1,9 @@ -- DISTRIBUTE_RESULT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- BTREE_SEARCH |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- ASSIGN |PARTITIONED| - -- EMPTY_TUPLE_SOURCE |PARTITIONED| + -- STREAM_SELECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- EMPTY_TUPLE_SOURCE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-19.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-19.plan index 6f13ebb..279cc83 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-19.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-19.plan @@ -1,8 +1,9 @@ -- DISTRIBUTE_RESULT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- BTREE_SEARCH |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- ASSIGN |PARTITIONED| - -- EMPTY_TUPLE_SOURCE |PARTITIONED| + -- STREAM_SELECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- EMPTY_TUPLE_SOURCE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-20.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-20.plan index 6f13ebb..279cc83 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-20.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/btree-index/btree-primary-20.plan @@ -1,8 +1,9 @@ -- DISTRIBUTE_RESULT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- BTREE_SEARCH |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- ASSIGN |PARTITIONED| - -- EMPTY_TUPLE_SOURCE |PARTITIONED| + -- STREAM_SELECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- EMPTY_TUPLE_SOURCE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-join_01.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-join_01.plan index bea4cf8..e9588f2 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-join_01.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-join_01.plan @@ -3,14 +3,17 @@ -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- BTREE_SEARCH |PARTITIONED| - -- BROADCAST_EXCHANGE |PARTITIONED| - -- STREAM_PROJECT |PARTITIONED| - -- ASSIGN |PARTITIONED| - -- ASSIGN |PARTITIONED| + -- STREAM_SELECT |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- BROADCAST_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- DATASOURCE_SCAN |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- EMPTY_TUPLE_SOURCE |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| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-join_02.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-join_02.plan index bea4cf8..e9588f2 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-join_02.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index-join/primary-composite-key-join_02.plan @@ -3,14 +3,17 @@ -- STREAM_PROJECT |PARTITIONED| -- ASSIGN |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- BTREE_SEARCH |PARTITIONED| - -- BROADCAST_EXCHANGE |PARTITIONED| - -- STREAM_PROJECT |PARTITIONED| - -- ASSIGN |PARTITIONED| - -- ASSIGN |PARTITIONED| + -- STREAM_SELECT |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- BROADCAST_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- DATASOURCE_SCAN |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- EMPTY_TUPLE_SOURCE |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| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-15.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-15.plan index 6f13ebb..77ee34d 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-15.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-15.plan @@ -1,8 +1,13 @@ -- DISTRIBUTE_RESULT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- BTREE_SEARCH |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- STREAM_SELECT |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- ASSIGN |PARTITIONED| -- ASSIGN |PARTITIONED| - -- EMPTY_TUPLE_SOURCE |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- EMPTY_TUPLE_SOURCE |PARTITIONED| \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-16.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-16.plan index 6f13ebb..77ee34d 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-16.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-16.plan @@ -1,8 +1,13 @@ -- DISTRIBUTE_RESULT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- BTREE_SEARCH |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- STREAM_SELECT |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- ASSIGN |PARTITIONED| -- ASSIGN |PARTITIONED| - -- EMPTY_TUPLE_SOURCE |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- EMPTY_TUPLE_SOURCE |PARTITIONED| \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-19.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-19.plan index 6f13ebb..9782637 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-19.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-19.plan @@ -1,8 +1,13 @@ -- DISTRIBUTE_RESULT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- BTREE_SEARCH |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- STREAM_SELECT |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- ASSIGN |PARTITIONED| -- ASSIGN |PARTITIONED| - -- EMPTY_TUPLE_SOURCE |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- EMPTY_TUPLE_SOURCE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-20.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-20.plan index 6f13ebb..9782637 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-20.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/nested-index/btree-index/btree-primary-20.plan @@ -1,8 +1,13 @@ -- DISTRIBUTE_RESULT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- BTREE_SEARCH |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- STREAM_SELECT |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- ASSIGN |PARTITIONED| -- ASSIGN |PARTITIONED| - -- EMPTY_TUPLE_SOURCE |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- EMPTY_TUPLE_SOURCE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/skip-index/dont-skip-primary-index.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/skip-index/dont-skip-primary-index.plan index 6f13ebb..279cc83 100644 --- a/asterixdb/asterix-app/src/test/resources/optimizerts/results/skip-index/dont-skip-primary-index.plan +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/skip-index/dont-skip-primary-index.plan @@ -1,8 +1,9 @@ -- DISTRIBUTE_RESULT |PARTITIONED| -- ONE_TO_ONE_EXCHANGE |PARTITIONED| -- STREAM_PROJECT |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- BTREE_SEARCH |PARTITIONED| - -- ONE_TO_ONE_EXCHANGE |PARTITIONED| - -- ASSIGN |PARTITIONED| - -- EMPTY_TUPLE_SOURCE |PARTITIONED| + -- STREAM_SELECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- EMPTY_TUPLE_SOURCE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-low-high/composite-low-high.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-low-high/composite-low-high.1.ddl.sqlpp new file mode 100644 index 0000000..735666b --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-low-high/composite-low-high.1.ddl.sqlpp @@ -0,0 +1,43 @@ +/* + * 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 : This test case is to verify composite key search with low and high ranges + * Expected Res : Success + * Date : 22 Dec 2017 + */ + +drop dataverse test if exists; +create dataverse test; + +use test; + +create type PointType as closed { +x:int, +y:int +}; + + +drop nodegroup group_test if exists; +create nodegroup group_test on + asterix_nc1 +; + +create dataset Points(PointType) +primary key x, y +on group_test; diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-low-high/composite-low-high.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-low-high/composite-low-high.2.update.sqlpp new file mode 100644 index 0000000..a8b70cd --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-low-high/composite-low-high.2.update.sqlpp @@ -0,0 +1,38 @@ +/* + * 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 test; + +insert into Points +{"x": 9, "y": 15}; + +insert into Points +{"x": 15, "y": 40}; + +insert into Points +{"x": 20, "y": 50}; + +insert into Points +{"x": 50, "y": 200}; + +insert into Points +{"x": 60, "y": 40}; + +insert into Points +{"x": 101, "y": 80}; \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-low-high/composite-low-high.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-low-high/composite-low-high.3.query.sqlpp new file mode 100644 index 0000000..777499c --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/composite-low-high/composite-low-high.3.query.sqlpp @@ -0,0 +1,27 @@ +/* + * 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 test; + +select value p +from Points p +where p.x>10 and p.x<100 +and p.y>10 and p.y<100 +order by p.x; \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-920/query-ASTERIXDB-920.1.ddl.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-920/query-ASTERIXDB-920.1.ddl.sqlpp new file mode 100644 index 0000000..9ad7c4e --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-920/query-ASTERIXDB-920.1.ddl.sqlpp @@ -0,0 +1,40 @@ +/* + * 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 : This test case is to verify the fix for ASTERIXDB-920 + : https://issues.apache.org/jira/browse/ASTERIXDB-920 + * Expected Res : Success + * Date : 14 Dec 2017 + */ + +drop dataverse test if exists; +create dataverse test; + +use test; + +create type FacebookMessageType as closed { +messageid: int32, +authorid: int32, +in_response_to: int32?, +sender_location: point?, +message: string +}; + +create dataset FacebookMessages(FacebookMessageType) +primary key messageid, authorid; diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-920/query-ASTERIXDB-920.2.update.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-920/query-ASTERIXDB-920.2.update.sqlpp new file mode 100644 index 0000000..2ba8569 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-920/query-ASTERIXDB-920.2.update.sqlpp @@ -0,0 +1,32 @@ +/* + * 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 test; + +insert into FacebookMessages +{"messageid":5,"authorid":6,"in_response_to":2,"sender_location":point("34.7,90.76"), +"message":"msg3"}; + +insert into FacebookMessages +{"messageid":6,"authorid":-1,"in_response_to":3,"sender_location":point("34.7,90.76"), +"message":"msg2"}; + +insert into FacebookMessages +{"messageid":6,"authorid":8,"in_response_to":4,"sender_location":point("34.7,90.76"), +"message":"msg3"}; \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-920/query-ASTERIXDB-920.3.query.sqlpp b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-920/query-ASTERIXDB-920.3.query.sqlpp new file mode 100644 index 0000000..fa01455 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/composite-key/query-ASTERIXDB-920/query-ASTERIXDB-920.3.query.sqlpp @@ -0,0 +1,26 @@ +/* + * 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 test; + +select value msg +from FacebookMessages msg +where msg.messageid>5 +and msg.authorid>0; diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/composite-low-high/composite-low-high.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/composite-low-high/composite-low-high.1.adm new file mode 100644 index 0000000..8c4166d --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/composite-low-high/composite-low-high.1.adm @@ -0,0 +1,3 @@ +{ "x": 15, "y": 40 } +{ "x": 20, "y": 50 } +{ "x": 60, "y": 40 } \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/query-ASTERIXDB-920/query-ASTERIXDB-920.1.adm b/asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/query-ASTERIXDB-920/query-ASTERIXDB-920.1.adm new file mode 100644 index 0000000..f63ad37 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/runtimets/results/composite-key/query-ASTERIXDB-920/query-ASTERIXDB-920.1.adm @@ -0,0 +1 @@ +{ "messageid": 6, "authorid": 8, "in_response_to": 4, "sender_location": point("34.7,90.76"), "message": "msg3" } \ No newline at end of file diff --git a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml index 789d41f..809ce70 100644 --- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml @@ -9330,4 +9330,16 @@ </compilation-unit> </test-case> </test-group> + <test-group name="composite-key"> + <test-case FilePath="composite-key"> + <compilation-unit name="query-ASTERIXDB-920"> + <output-dir compare="Text">query-ASTERIXDB-920</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="composite-key"> + <compilation-unit name="composite-low-high"> + <output-dir compare="Text">composite-low-high</output-dir> + </compilation-unit> + </test-case> + </test-group> </test-suite> -- To view, visit https://asterix-gerrit.ics.uci.edu/2227 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: I8654e52aec59601c533255cd57c2824612066fc0 Gerrit-PatchSet: 7 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Luo Chen <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Luo Chen <[email protected]> Gerrit-Reviewer: Taewoo Kim <[email protected]> Gerrit-Reviewer: abdullah alamoudi <[email protected]>
