This is an automated email from the ASF dual-hosted git repository.
dlych pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
The following commit(s) were added to refs/heads/master by this push:
new 9134456 [NO-ISSUE][IDX] Updated metadata for array indexes w/o
SELECTs.
9134456 is described below
commit 9134456c10f529548b1aa2c69e05f54083be817c
Author: Glenn <[email protected]>
AuthorDate: Tue Apr 13 13:48:37 2021 -0700
[NO-ISSUE][IDX] Updated metadata for array indexes w/o SELECTs.
- user mode changes: no
- storage format changes: no
- interface changes: no
For indexes like:
CREATE INDEX idxA ON datasetA (UNNEST field)
We no longer store the metadata record with a ProjectList if a SELECT
clause is not included.
Change-Id: I95b98525582ab93381ac46b594bd51d947991951
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/11044
Integration-Tests: Jenkins <[email protected]>
Tested-by: Jenkins <[email protected]>
Reviewed-by: Dmitry Lychagin <[email protected]>
---
.../metadata/closed/use-case-1/use-case-1.1.adm | 2 +-
.../metadata/closed/use-case-2/use-case-2.1.adm | 2 +-
.../metadata/closed/use-case-4/use-case-4.1.adm | 2 +-
.../with-3-level-record-path.1.adm | 2 +-
.../with-composite-sk/with-composite-sk.1.adm | 2 +-
.../with-composite-sk/with-composite-sk.2.adm | 2 +-
.../metadata/open/use-case-1/use-case-1.1.adm | 2 +-
.../metadata/open/use-case-2/use-case-2.1.adm | 2 +-
.../metadata/open/use-case-4/use-case-4.1.adm | 2 +-
.../with-3-level-record-path.1.adm | 2 +-
.../open/with-composite-sk/with-composite-sk.1.adm | 2 +-
.../IndexTupleTranslator.java | 50 +++++++++++-----------
.../asterix/metadata/utils/ArrayIndexUtil.java | 2 +-
13 files changed, 37 insertions(+), 37 deletions(-)
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/use-case-1/use-case-1.1.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/use-case-1/use-case-1.1.adm
index 27cc984..d27a32c 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/use-case-1/use-case-1.1.adm
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/use-case-1/use-case-1.1.adm
@@ -1 +1 @@
-{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [ "dates" ] ],
"ProjectList": [ null ] } ] }
+{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [ "dates" ] ] }
] }
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/use-case-2/use-case-2.1.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/use-case-2/use-case-2.1.adm
index 8f0aa97..c4530db 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/use-case-2/use-case-2.1.adm
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/use-case-2/use-case-2.1.adm
@@ -1 +1 @@
-{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [
"checkin_times", "dates" ] ], "ProjectList": [ null ] } ] }
+{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [
"checkin_times", "dates" ] ] } ] }
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/use-case-4/use-case-4.1.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/use-case-4/use-case-4.1.adm
index a04b36e..40c3a46 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/use-case-4/use-case-4.1.adm
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/use-case-4/use-case-4.1.adm
@@ -1 +1 @@
-{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [
"checkin_times" ], [ "dates" ] ], "ProjectList": [ null ] } ] }
+{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [
"checkin_times" ], [ "dates" ] ] } ] }
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/with-3-level-record-path/with-3-level-record-path.1.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/with-3-level-record-path/with-3-level-record-path.1.adm
index 27ae1aa..7b80b06 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/with-3-level-record-path/with-3-level-record-path.1.adm
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/with-3-level-record-path/with-3-level-record-path.1.adm
@@ -1 +1 @@
-{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [
"checkin_data", "checkin_temporal", "checkin_times", "dates" ] ],
"ProjectList": [ null ] } ] }
+{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [
"checkin_data", "checkin_temporal", "checkin_times", "dates" ] ] } ] }
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/with-composite-sk/with-composite-sk.1.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/with-composite-sk/with-composite-sk.1.adm
index cc5313c..18b7416 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/with-composite-sk/with-composite-sk.1.adm
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/with-composite-sk/with-composite-sk.1.adm
@@ -1 +1 @@
-{ "SearchKey": [ ], "SearchKeyElements": [ [ [ "business_id" ] ], {
"UnnestList": [ [ "dates" ] ], "ProjectList": [ null ] } ] }
+{ "SearchKey": [ ], "SearchKeyElements": [ [ [ "business_id" ] ], {
"UnnestList": [ [ "dates" ] ] } ] }
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/with-composite-sk/with-composite-sk.2.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/with-composite-sk/with-composite-sk.2.adm
index dcdc307..5957674 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/with-composite-sk/with-composite-sk.2.adm
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/closed/with-composite-sk/with-composite-sk.2.adm
@@ -1 +1 @@
-{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [ "dates" ] ],
"ProjectList": [ null ] }, [ [ "business_id" ] ] ] }
+{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [ "dates" ] ] },
[ [ "business_id" ] ] ] }
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/use-case-1/use-case-1.1.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/use-case-1/use-case-1.1.adm
index 59b8bc5..6e71e97 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/use-case-1/use-case-1.1.adm
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/use-case-1/use-case-1.1.adm
@@ -1 +1 @@
-{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [ "dates" ] ],
"ProjectList": [ null ] } ], "SearchKeyType": [ [ "string" ] ] }
+{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [ "dates" ] ] }
], "SearchKeyType": [ [ "string" ] ] }
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/use-case-2/use-case-2.1.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/use-case-2/use-case-2.1.adm
index daab11d..6eb8776 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/use-case-2/use-case-2.1.adm
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/use-case-2/use-case-2.1.adm
@@ -1 +1 @@
-{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [
"checkin_times", "dates" ] ], "ProjectList": [ null ] } ], "SearchKeyType": [ [
"string" ] ] }
\ No newline at end of file
+{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [
"checkin_times", "dates" ] ] } ], "SearchKeyType": [ [ "string" ] ] }
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/use-case-4/use-case-4.1.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/use-case-4/use-case-4.1.adm
index 099446c..d74ae4a 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/use-case-4/use-case-4.1.adm
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/use-case-4/use-case-4.1.adm
@@ -1 +1 @@
-{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [
"checkin_times" ], [ "dates" ] ], "ProjectList": [ null ] } ], "SearchKeyType":
[ [ "string" ] ] }
+{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [
"checkin_times" ], [ "dates" ] ] } ], "SearchKeyType": [ [ "string" ] ] }
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/with-3-level-record-path/with-3-level-record-path.1.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/with-3-level-record-path/with-3-level-record-path.1.adm
index 4fafc3e..a1aeffe 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/with-3-level-record-path/with-3-level-record-path.1.adm
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/with-3-level-record-path/with-3-level-record-path.1.adm
@@ -1 +1 @@
-{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [
"checkin_data", "checkin_temporal", "checkin_times", "dates" ] ],
"ProjectList": [ null ] } ], "SearchKeyType": [ [ "string" ] ] }
\ No newline at end of file
+{ "SearchKey": [ ], "SearchKeyElements": [ { "UnnestList": [ [
"checkin_data", "checkin_temporal", "checkin_times", "dates" ] ] } ],
"SearchKeyType": [ [ "string" ] ] }
\ No newline at end of file
diff --git
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/with-composite-sk/with-composite-sk.1.adm
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/with-composite-sk/with-composite-sk.1.adm
index 9a94949..a2eea1e 100644
---
a/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/with-composite-sk/with-composite-sk.1.adm
+++
b/asterixdb/asterix-app/src/test/resources/runtimets/results/array-index/metadata/open/with-composite-sk/with-composite-sk.1.adm
@@ -1 +1 @@
-{ "SearchKey": [ ], "SearchKeyElements": [ [ [ "business_id" ] ], {
"UnnestList": [ [ "dates" ] ], "ProjectList": [ null ] } ], "SearchKeyType": [
[ "string" ], [ "string" ] ] }
+{ "SearchKey": [ ], "SearchKeyElements": [ [ [ "business_id" ] ], {
"UnnestList": [ [ "dates" ] ] } ], "SearchKeyType": [ [ "string" ], [ "string"
] ] }
diff --git
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslator.java
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslator.java
index b1ec182..32764b2 100644
---
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslator.java
+++
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslator.java
@@ -204,25 +204,23 @@ public class IndexTupleTranslator extends
AbstractTupleTranslator<Index> {
}
int projectFieldPos =
complexSearchKeyRecordType.getFieldIndex(COMPLEXSEARCHKEY_PROJECT_FIELD_NAME);
- if (projectFieldPos < 0) {
- throw new
AsterixException(ErrorCode.METADATA_ERROR, complexSearchKeyRecord.toJSON());
- }
- AOrderedList projectFieldList =
- (AOrderedList)
complexSearchKeyRecord.getValueByPos(projectFieldPos);
- List<List<String>> projectList = new
ArrayList<>(projectFieldList.size());
- IACursor projectFieldListCursor =
projectFieldList.getCursor();
- while (projectFieldListCursor.next()) {
- if
(projectFieldListCursor.get().getType().getTypeTag().equals(ATypeTag.NULL)) {
- projectList.add(null);
- break;
+ List<List<String>> projectList = new ArrayList<>();
+ if (projectFieldPos >= 0) {
+ AOrderedList projectFieldList =
+ (AOrderedList)
complexSearchKeyRecord.getValueByPos(projectFieldPos);
+ projectList = new
ArrayList<>(projectFieldList.size());
+ IACursor projectFieldListCursor =
projectFieldList.getCursor();
+ while (projectFieldListCursor.next()) {
+ AOrderedList innerList = (AOrderedList)
projectFieldListCursor.get();
+ List<String> projectPath = new
ArrayList<>(innerList.size());
+ IACursor innerListCursor =
innerList.getCursor();
+ while (innerListCursor.next()) {
+ projectPath.add(((AString)
innerListCursor.get()).getStringValue());
+ }
+ projectList.add(projectPath);
}
- AOrderedList innerList = (AOrderedList)
projectFieldListCursor.get();
- List<String> projectPath = new
ArrayList<>(innerList.size());
- IACursor innerListCursor =
innerList.getCursor();
- while (innerListCursor.next()) {
- projectPath.add(((AString)
innerListCursor.get()).getStringValue());
- }
- projectList.add(projectPath);
+ } else {
+ projectList.add(null);
}
searchElement = new Pair<>(unnestList,
projectList);
break;
@@ -573,13 +571,15 @@ public class IndexTupleTranslator extends
AbstractTupleTranslator<Index> {
listBuilder.write(itemValue.getDataOutput(), true);
complexSearchKeyNameRecordBuilder.addField(nameValue,
itemValue);
- nameValue.reset();
- aString.setValue(COMPLEXSEARCHKEY_PROJECT_FIELD_NAME);
- stringSerde.serialize(aString, nameValue.getDataOutput());
- buildSearchKeyNameList(element.getProjectList());
- itemValue.reset();
- listBuilder.write(itemValue.getDataOutput(), true);
- complexSearchKeyNameRecordBuilder.addField(nameValue,
itemValue);
+ if (element.getProjectList().get(0) != null) {
+ nameValue.reset();
+ aString.setValue(COMPLEXSEARCHKEY_PROJECT_FIELD_NAME);
+ stringSerde.serialize(aString, nameValue.getDataOutput());
+ buildSearchKeyNameList(element.getProjectList());
+ itemValue.reset();
+ listBuilder.write(itemValue.getDataOutput(), true);
+ complexSearchKeyNameRecordBuilder.addField(nameValue,
itemValue);
+ }
itemValue.reset();
complexSearchKeyNameRecordBuilder.write(itemValue.getDataOutput(), true);
diff --git
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/ArrayIndexUtil.java
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/ArrayIndexUtil.java
index af97101..f4dfe56 100644
---
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/ArrayIndexUtil.java
+++
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/ArrayIndexUtil.java
@@ -208,7 +208,7 @@ public class ArrayIndexUtil {
depthIndicatorPrefix.add(1);
}
- if (projectList == null || projectList.isEmpty()) {
+ if (projectList == null) {
// Stop here. The prefix is the indicator itself.
return depthIndicatorPrefix;