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;
 

Reply via email to