Jianfeng Jia has uploaded a new change for review. https://asterix-gerrit.ics.uci.edu/1093
Change subject: Add tests for ASTERIXDB-1300 ...................................................................... Add tests for ASTERIXDB-1300 The intersection for multiple-secondary indexes will follow the skip-index hint. Change-Id: I797bdb37fda1c29c9cfc45efb6fbcba4e7b6c29e --- A asterixdb/asterix-app/src/test/resources/optimizerts/queries/multi-indexes/skip-one-index.aql A asterixdb/asterix-app/src/test/resources/optimizerts/queries/multi-indexes/skip-two-index.aql A asterixdb/asterix-app/src/test/resources/optimizerts/results/multi-indexes/skip-one-index.plan A asterixdb/asterix-app/src/test/resources/optimizerts/results/multi-indexes/skip-two-index.plan 4 files changed, 143 insertions(+), 0 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/93/1093/1 diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/multi-indexes/skip-one-index.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/multi-indexes/skip-one-index.aql new file mode 100644 index 0000000..7383edc --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/multi-indexes/skip-one-index.aql @@ -0,0 +1,49 @@ +/* + * 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. + */ + +drop dataverse test if exists; +create dataverse test; +use dataverse test; + +create type tTweet as closed { + id: int32, + location: point, + message: string, + create_at: datetime, + misc: string +} + +create dataset dsTweet(tTweet) primary key id; + +create index ngram_index on dsTweet(message) type ngram(3); +create index time_index on dsTweet(create_at) type btree; +create index location_index on dsTweet(location) type rtree; + +write output to nc1:"rttest/btree-rtree-ngram-intersect.adm"; + +let $region := create-rectangle(create-point(-128.43007812500002,20.298506037222175), create-point(-64.26992187500002,54.56902589732035)) +let $ts_start := datetime("2015-11-11T00:00:00Z") +let $ts_end := datetime("2015-12-18T23:59:59Z") +let $keyword := "hello" +for $t in dataset dsTweet +where $t.create_at >= $ts_start and $t.create_at < $ts_end + and /* +skip-index */ spatial-intersect($t.location, $region) + and contains($t.message, $keyword) +return $t + diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/queries/multi-indexes/skip-two-index.aql b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/multi-indexes/skip-two-index.aql new file mode 100644 index 0000000..de0807f --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/queries/multi-indexes/skip-two-index.aql @@ -0,0 +1,53 @@ +/* + * 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 : Tests three types of secondary indexes should trigger intersection rule + * Success : Yes + */ + +drop dataverse test if exists; +create dataverse test; +use dataverse test; + +create type tTweet as closed { + id: int32, + location: point, + message: string, + create_at: datetime, + misc: string +} + +create dataset dsTweet(tTweet) primary key id; + +create index ngram_index on dsTweet(message) type ngram(3); +create index time_index on dsTweet(create_at) type btree; +create index location_index on dsTweet(location) type rtree; + +write output to nc1:"rttest/btree-rtree-ngram-intersect.adm"; + +let $region := create-rectangle(create-point(-128.43007812500002,20.298506037222175), create-point(-64.26992187500002,54.56902589732035)) +let $ts_start := datetime("2015-11-11T00:00:00Z") +let $ts_end := datetime("2015-12-18T23:59:59Z") +let $keyword := "hello" +for $t in dataset dsTweet +where $t.create_at /* +skip-index */ >= $ts_start and $t.create_at /* +skip-index */ < $ts_end + and /* +skip-index */ spatial-intersect($t.location, $region) + and contains($t.message, $keyword) +return $t + diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/multi-indexes/skip-one-index.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/multi-indexes/skip-one-index.plan new file mode 100644 index 0000000..d4e03b8 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/multi-indexes/skip-one-index.plan @@ -0,0 +1,26 @@ +-- DISTRIBUTE_RESULT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- STREAM_SELECT |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- INTERSECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- STABLE_SORT [$$29(ASC)] |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| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- STABLE_SORT [$$31(ASC)] |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- EMPTY_TUPLE_SOURCE |PARTITIONED| diff --git a/asterixdb/asterix-app/src/test/resources/optimizerts/results/multi-indexes/skip-two-index.plan b/asterixdb/asterix-app/src/test/resources/optimizerts/results/multi-indexes/skip-two-index.plan new file mode 100644 index 0000000..05b78b8 --- /dev/null +++ b/asterixdb/asterix-app/src/test/resources/optimizerts/results/multi-indexes/skip-two-index.plan @@ -0,0 +1,15 @@ +-- DISTRIBUTE_RESULT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- STREAM_SELECT |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- STREAM_PROJECT |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- BTREE_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- STABLE_SORT [$$27(ASC)] |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- LENGTH_PARTITIONED_INVERTED_INDEX_SEARCH |PARTITIONED| + -- ONE_TO_ONE_EXCHANGE |PARTITIONED| + -- ASSIGN |PARTITIONED| + -- EMPTY_TUPLE_SOURCE |PARTITIONED| -- To view, visit https://asterix-gerrit.ics.uci.edu/1093 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I797bdb37fda1c29c9cfc45efb6fbcba4e7b6c29e Gerrit-PatchSet: 1 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Jianfeng Jia <[email protected]>
