>From Michael Blow <mb...@apache.org>:

Michael Blow has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20083 )


Change subject: [ASTERIXDB-3627][OTH] Primary key missing from result
......................................................................

[ASTERIXDB-3627][OTH] Primary key missing from result

- user model changes: no
- storage format changes: no
- interface changes: no

Ext-ref: MB-67595

(cherry picked from commit 80a41e247c)
Change-Id: I4d38712226778ef52aabacdcfe1e0b26e0d74bea
---
M 
asterixdb/asterix-app/src/test/java/org/apache/asterix/api/http/servlet/ConnectorApiServletTest.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslator.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/OptimizableOperatorSubTree.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/PushFieldAccessRule.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryPartitionRewriter.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SampleOperationsHelper.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroducePrimaryIndexForAggregationRule.java
R 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create-dataset-4/create-dataset-4.09.ddl.sqlpp
A 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create-dataset-4/create-dataset-4.08.query.sqlpp
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/operators/physical/BTreeSearchPOperator.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DatasetDataSource.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetRewriter.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexRewriter.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataManagerUtil.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Dataset.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ConnectorApiServlet.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
A 
asterixdb/asterix-app/src/test/resources/runtimets/results/ddl/create-dataset-4/create-dataset-4.08.adm
M 
asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/003/003.003.regexadm
M 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceLSMComponentFilterRule.java
M 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
26 files changed, 78 insertions(+), 33 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/83/20083/1

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 b965512..c83b72c 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
@@ -164,8 +164,7 @@
         if (isPrimaryIndex && formatInfo.getFormat() == 
DatasetConfig.DatasetFormat.COLUMN) {
             ARecordType datasetType = (ARecordType) 
metadataProvider.findType(dataset);
             ARecordType metaItemType = (ARecordType) 
metadataProvider.findMetaType(dataset);
-            datasetType =
-                    (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(datasetType, metaItemType, 
dataset);
+            datasetType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(datasetType, dataset);
             tupleProjectorFactory = 
IndexUtil.createTupleProjectorFactory(context, typeEnv, formatInfo,
                     projectionFiltrationInfo, datasetType, metaItemType, 
dataset.getPrimaryKeys().size());
         }
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java
index 33c5baa..887b18e 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java
@@ -194,7 +194,7 @@
             metaType = (ARecordType) 
mp.findType(dataset.getMetaItemTypeDatabaseName(),
                     dataset.getMetaItemTypeDataverseName(), 
dataset.getMetaItemTypeName());
         }
-        recType = (ARecordType) mp.findTypeForDatasetWithoutType(recType, 
metaType, dataset);
+        recType = (ARecordType) mp.findTypeForDatasetWithoutType(recType, 
dataset);

         List<Index> indexes =
                 mp.getDatasetIndexes(dataset.getDatabaseName(), 
dataset.getDataverseName(), dataset.getDatasetName());
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/PushFieldAccessRule.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/PushFieldAccessRule.java
index eb93774..31f2511 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/PushFieldAccessRule.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/PushFieldAccessRule.java
@@ -142,6 +142,7 @@
         if (pos != null) {
             String tName = dataset.getItemTypeName();
             IAType t = mp.findType(dataset.getItemTypeDatabaseName(), 
dataset.getItemTypeDataverseName(), tName);
+            t = mp.findTypeForDatasetWithoutType(t, dataset);
             if (t.getTypeTag() != ATypeTag.OBJECT) {
                 return false;
             }
@@ -338,6 +339,7 @@
             String dataTypeName = dataset.getItemTypeName();
             IAType dataType =
                     mp.findType(dataset.getItemTypeDatabaseName(), 
dataset.getItemTypeDataverseName(), dataTypeName);
+            dataType = mp.findTypeForDatasetWithoutType(dataType, dataset);
             if (dataType.getTypeTag() != ATypeTag.OBJECT) {
                 return false;
             }
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceLSMComponentFilterRule.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceLSMComponentFilterRule.java
index 9b7edc3..e64e00c 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceLSMComponentFilterRule.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroduceLSMComponentFilterRule.java
@@ -97,11 +97,14 @@
         if (dataset != null && dataset.getDatasetType() == 
DatasetType.INTERNAL) {
             filterSourceIndicator = 
DatasetUtil.getFilterSourceIndicator(dataset);
             filterFieldName = DatasetUtil.getFilterField(dataset);
-            IAType filterSourceType = filterSourceIndicator == null || 
filterSourceIndicator == 0
-                    ? mp.findType(dataset.getItemTypeDatabaseName(), 
dataset.getItemTypeDataverseName(),
-                            dataset.getItemTypeName())
-                    : mp.findType(dataset.getMetaItemTypeDatabaseName(), 
dataset.getMetaItemTypeDataverseName(),
-                            dataset.getMetaItemTypeName());
+            IAType dataType = mp.findType(dataset.getItemTypeDatabaseName(), 
dataset.getItemTypeDataverseName(),
+                    dataset.getItemTypeName());
+            dataType = mp.findTypeForDatasetWithoutType(dataType, dataset);
+            IAType metaItemType = 
mp.findType(dataset.getMetaItemTypeDatabaseName(),
+                    dataset.getMetaItemTypeDataverseName(), 
dataset.getMetaItemTypeName());
+            IAType filterSourceType =
+                    filterSourceIndicator == null || filterSourceIndicator == 
0 ? dataType : metaItemType;
+            filterSourceType = 
mp.findTypeForDatasetWithoutType(filterSourceType, dataset);

             if (filterSourceType.getTypeTag() == ATypeTag.OBJECT) {
                 itemType = (ARecordType) filterSourceType;
@@ -596,6 +599,8 @@
                     IAType recordItemType = ((MetadataProvider) 
context.getMetadataProvider()).findType(
                             dataset.getItemTypeDatabaseName(), 
dataset.getItemTypeDataverseName(),
                             dataset.getItemTypeName());
+                    recordItemType = ((MetadataProvider) 
context.getMetadataProvider())
+                            .findTypeForDatasetWithoutType(recordItemType, 
dataset);
                     ARecordType recordType = (ARecordType) recordItemType;
                     ARecordType metaRecType = (ARecordType) metaItemType;
                     int numSecondaryKeys = 
KeyFieldTypeUtil.getNumSecondaryKeys(index, recordType, metaRecType);
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroducePrimaryIndexForAggregationRule.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroducePrimaryIndexForAggregationRule.java
index a079c3f..146eb26 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroducePrimaryIndexForAggregationRule.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IntroducePrimaryIndexForAggregationRule.java
@@ -240,7 +240,7 @@
             ARecordType metaRecordType =
                     (ARecordType) ((MetadataProvider) 
context.getMetadataProvider()).findMetaType(dataset);
             recordType = (ARecordType) ((MetadataProvider) 
context.getMetadataProvider())
-                    .findTypeForDatasetWithoutType(recordType, metaRecordType, 
dataset);
+                    .findTypeForDatasetWithoutType(recordType, dataset);

             // create the operator that will replace the dataset scan/search
             AbstractUnnestMapOperator primaryIndexUnnestOperator =
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/OptimizableOperatorSubTree.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/OptimizableOperatorSubTree.java
index a6c7a32..8e3db4b 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/OptimizableOperatorSubTree.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/OptimizableOperatorSubTree.java
@@ -343,7 +343,7 @@
             ARecordType metaItemType = (ARecordType) 
metadataProvider.findType(ds.getMetaItemTypeDatabaseName(),
                     ds.getMetaItemTypeDataverseName(), 
ds.getMetaItemTypeName());

-            rType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(rType, metaItemType, ds);
+            rType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(rType, ds);

             // First index is always the primary datasource in this subtree.
             if (i == 0) {
diff --git 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
index ed62ba3..98c832a 100644
--- 
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
+++ 
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
@@ -216,7 +216,7 @@
                 dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
         IAType metaItemType = 
metadataProvider.findType(dataset.getMetaItemTypeDatabaseName(),
                 dataset.getMetaItemTypeDataverseName(), 
dataset.getMetaItemTypeName());
-        itemType = metadataProvider.findTypeForDatasetWithoutType(itemType, 
metaItemType, dataset);
+        itemType = metadataProvider.findTypeForDatasetWithoutType(itemType, 
dataset);

         DatasetDataSource targetDatasource = 
validateDatasetInfo(metadataProvider, stmt.getDatabaseName(),
                 stmt.getDataverseName(), stmt.getDatasetName(), sourceLoc);
@@ -886,7 +886,7 @@
                 dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
         IAType metaItemType = 
metadataProvider.findType(dataset.getMetaItemTypeDatabaseName(),
                 dataset.getMetaItemTypeDataverseName(), 
dataset.getMetaItemTypeName());
-        itemType = metadataProvider.findTypeForDatasetWithoutType(itemType, 
metaItemType, dataset);
+        itemType = metadataProvider.findTypeForDatasetWithoutType(itemType, 
dataset);

         INodeDomain domain = 
metadataProvider.findNodeDomain(dataset.getNodeGroupName());
         return new DatasetDataSource(sourceId, dataset, itemType, 
metaItemType, DataSource.Type.INTERNAL_DATASET,
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ConnectorApiServlet.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ConnectorApiServlet.java
index df27ff4..744e624 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ConnectorApiServlet.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/ConnectorApiServlet.java
@@ -114,6 +114,7 @@
                 String itemTypeDatabase = dataset.getItemTypeDatabaseName();
                 ARecordType recordType = (ARecordType) 
metadataProvider.findType(itemTypeDatabase,
                         dataset.getItemTypeDataverseName(), 
dataset.getItemTypeName());
+                recordType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(recordType, dataset);
                 List<List<String>> primaryKeys = dataset.getPrimaryKeys();
                 StringBuilder pkStrBuf = new StringBuilder();
                 for (List<String> keys : primaryKeys) {
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetRewriter.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetRewriter.java
index 617d59b..3e8b02a 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetRewriter.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/DatasetRewriter.java
@@ -150,6 +150,7 @@
         Dataset dataset = fetchDataset(metadata, datasetFnCall);
         IAType type = metadata.findType(dataset.getItemTypeDatabaseName(), 
dataset.getItemTypeDataverseName(),
                 dataset.getItemTypeName());
+        type = ((MetadataProvider) mp).findTypeForDatasetWithoutType(type, 
dataset);
         if (type == null) {
             throw new CompilationException(ErrorCode.COMPILATION_ERROR, 
datasetFnCall.getSourceLocation(),
                     "No type for " + dataset() + " " + 
dataset.getDatasetName());
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexRewriter.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexRewriter.java
index 46f13f1..ae5a77a 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexRewriter.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryIndexRewriter.java
@@ -159,7 +159,7 @@
         Index index = validateIndex(f, metadataProvider, loc, databaseName, 
dataverseName, datasetName, indexName);
         ARecordType dsType = (ARecordType) metadataProvider.findType(dataset);
         ARecordType metaType = DatasetUtil.getMetaType(metadataProvider, 
dataset);
-        dsType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(dsType, metaType, dataset);
+        dsType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(dsType, dataset);

         List<IAType> dsKeyTypes = 
KeyFieldTypeUtil.getPartitoningKeyTypes(dataset, dsType, metaType);
         List<Pair<IAType, Boolean>> secKeyTypes = 
KeyFieldTypeUtil.getBTreeIndexKeyTypes(index, dsType, metaType);
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryPartitionRewriter.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryPartitionRewriter.java
index 4514a30..a0810cb 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryPartitionRewriter.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/function/QueryPartitionRewriter.java
@@ -168,7 +168,7 @@
         Dataset dataset = validateDataset(metadataProvider, dbName, dvName, 
dsName, loc);
         ARecordType dsType = (ARecordType) metadataProvider.findType(dataset);
         ARecordType metaType = DatasetUtil.getMetaType(metadataProvider, 
dataset);
-        dsType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(dsType, metaType, dataset);
+        dsType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(dsType, dataset);

         List<IAType> dsKeyTypes = 
KeyFieldTypeUtil.getPartitoningKeyTypes(dataset, dsType, metaType);
         List<List<String>> primaryKeys = dataset.getPrimaryKeys();
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
index 18ffa02..30c1b8b 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
@@ -1382,7 +1382,7 @@
             }
             */
             if (!ds.hasMetaPart()) {
-                aRecordType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(aRecordType, null, ds);
+                aRecordType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(aRecordType, ds);
             }

             List<List<IAType>> indexFieldTypes = new 
ArrayList<>(indexedElementsCount);
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
index cc9f1ad..a2cbaa5 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/RebalanceUtil.java
@@ -356,7 +356,7 @@
         ARecordType itemType = (ARecordType) 
metadataProvider.findType(source.getItemTypeDatabaseName(),
                 source.getItemTypeDataverseName(), source.getItemTypeName());
         ARecordType metaType = DatasetUtil.getMetaType(metadataProvider, 
source);
-        itemType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(itemType, metaType, source);
+        itemType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(itemType, source);
         int numberOfPrimaryKeys = source.getPrimaryKeys().size();

         // The assembly cost of ALL_FIELDS_TYPE could be expensive if record 
structure is "complex"
diff --git 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/api/http/servlet/ConnectorApiServletTest.java
 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/api/http/servlet/ConnectorApiServletTest.java
index d8fb053..2389a9c 100644
--- 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/api/http/servlet/ConnectorApiServletTest.java
+++ 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/api/http/servlet/ConnectorApiServletTest.java
@@ -190,6 +190,7 @@
             String itemTypeDatabase = dataset.getItemTypeDatabaseName();
             ARecordType recordType = (ARecordType) 
metadataProvider.findType(itemTypeDatabase,
                     dataset.getItemTypeDataverseName(), 
dataset.getItemTypeName());
+            recordType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(recordType, dataset);
             // Metadata transaction commits.
             MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
             return recordType;
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create-dataset-4/create-dataset-4.08.query.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create-dataset-4/create-dataset-4.08.query.sqlpp
new file mode 100644
index 0000000..673bc80
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create-dataset-4/create-dataset-4.08.query.sqlpp
@@ -0,0 +1,22 @@
+/*
+ * 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 [a] as b from ds1 a order by a.name LIMIT 1;
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create-dataset-4/create-dataset-4.08.ddl.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create-dataset-4/create-dataset-4.09.ddl.sqlpp
similarity index 100%
rename from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create-dataset-4/create-dataset-4.08.ddl.sqlpp
rename to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create-dataset-4/create-dataset-4.09.ddl.sqlpp
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/003/003.003.regexadm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/003/003.003.regexadm
index 64695de..58a2bbc 100644
--- 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/003/003.003.regexadm
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/column/upsert/003/003.003.regexadm
@@ -1 +1 @@
-\Q{"keys":"id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"AnyObject","open":true,"fields":[]},"splits":[\E.*\Q]}\E
\ No newline at end of file
+\Q{"keys":"id","type":{"type":"org.apache.asterix.om.types.ARecordType","name":"root","open":true,"fields":[{"id":{"type":"UUID"}}]},"splits":[\E.*\Q]}\E
\ No newline at end of file
diff --git 
a/asterixdb/asterix-app/src/test/resources/runtimets/results/ddl/create-dataset-4/create-dataset-4.08.adm
 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/ddl/create-dataset-4/create-dataset-4.08.adm
new file mode 100644
index 0000000..a62b60d
--- /dev/null
+++ 
b/asterixdb/asterix-app/src/test/resources/runtimets/results/ddl/create-dataset-4/create-dataset-4.08.adm
@@ -0,0 +1 @@
+{ "b": [ { "name": "abc" } ] }
\ No newline at end of file
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DatasetDataSource.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DatasetDataSource.java
index c404496..b961421 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DatasetDataSource.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DatasetDataSource.java
@@ -163,8 +163,7 @@
                                     dataset.getMetaItemTypeDataverseName(), 
dataset.getMetaItemTypeName())
                             .getDatatype();
                 }
-                datasetType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(datasetType, metaItemType,
-                        dataset);
+                datasetType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(datasetType, dataset);
                 int numberOfPrimaryKeys = dataset.getPrimaryKeys().size();
                 ITupleProjectorFactory tupleProjectorFactory =
                         IndexUtil.createTupleProjectorFactory(context, 
typeEnv, dataset.getDatasetFormatInfo(),
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataManagerUtil.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataManagerUtil.java
index f42ded2..143b615 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataManagerUtil.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataManagerUtil.java
@@ -71,13 +71,11 @@
      * internal details.
      *
      * @param itemType     record type of the dataset
-     * @param metaItemType record type of the meta part of the dataset
      * @param dataset      the actual dataset
      * @return type computed from primary keys if dataset without type spec, 
otherwise the original itemType itself
      * @throws AlgebricksException AlgebricksException
      */
-    public static IAType findTypeForDatasetWithoutType(IAType itemType, IAType 
metaItemType, Dataset dataset)
-            throws AlgebricksException {
+    public static IAType findTypeForDatasetWithoutType(IAType itemType, 
Dataset dataset) throws AlgebricksException {
         if (dataset.getDatasetType() == DatasetConfig.DatasetType.INTERNAL) {
             InternalDatasetDetails dsDetails = (InternalDatasetDetails) 
dataset.getDatasetDetails();
             if (dsDetails.isDatasetWithoutTypeSpecification()) {
@@ -252,7 +250,7 @@
                 dataset.getItemTypeName());
         IAType metaItemType = findType(mdTxnCtx, 
dataset.getMetaItemTypeDatabaseName(),
                 dataset.getMetaItemTypeDataverseName(), 
dataset.getMetaItemTypeName());
-        itemType = findTypeForDatasetWithoutType(itemType, metaItemType, 
dataset);
+        itemType = findTypeForDatasetWithoutType(itemType, dataset);

         INodeDomain domain = findNodeDomain(clusterStateManager, mdTxnCtx, 
dataset.getNodeGroupName());
         return new DatasetDataSource(id, dataset, itemType, metaItemType, 
datasourceType, dataset.getDatasetDetails(),
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
index 941c8f7..b029137 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java
@@ -409,9 +409,8 @@
         return MetadataManagerUtil.findTypeEntity(mdTxnCtx, database, 
dataverseName, typeName);
     }

-    public IAType findTypeForDatasetWithoutType(IAType recordType, IAType 
metaRecordType, Dataset dataset)
-            throws AlgebricksException {
-        return MetadataManagerUtil.findTypeForDatasetWithoutType(recordType, 
metaRecordType, dataset);
+    public IAType findTypeForDatasetWithoutType(IAType recordType, Dataset 
dataset) throws AlgebricksException {
+        return MetadataManagerUtil.findTypeForDatasetWithoutType(recordType, 
dataset);
     }

     public IAType findType(String database, DataverseName dataverseName, 
String typeName) throws AlgebricksException {
@@ -747,6 +746,7 @@
         if (isIndexOnlyPlan) {
             ARecordType recType = (ARecordType) 
findType(dataset.getItemTypeDatabaseName(),
                     dataset.getItemTypeDataverseName(), 
dataset.getItemTypeName());
+            recType = (ARecordType) findTypeForDatasetWithoutType(recType, 
dataset);
             List<List<String>> secondaryKeyFields = 
secondaryIndexDetails.getKeyFieldNames();
             List<IAType> secondaryKeyTypes = 
secondaryIndexDetails.getKeyFieldTypes();
             Pair<IAType, Boolean> keyTypePair = 
Index.getNonNullableOpenFieldType(secondaryIndex,
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Dataset.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Dataset.java
index cae1385..b3fc1e5 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Dataset.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Dataset.java
@@ -766,7 +766,7 @@
         }
         ARecordType itemType = (ARecordType) metadataProvider.findType(this);
         ARecordType metaType = (ARecordType) 
metadataProvider.findMetaType(this);
-        itemType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(itemType, metaType, this);
+        itemType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(itemType, this);

         // Set the serde/traits for primary keys
         for (int i = 0; i < numPrimaryKeys; i++) {
@@ -830,7 +830,7 @@
             throws AlgebricksException {
         ARecordType recordType = (ARecordType) metadataProvider.findType(this);
         ARecordType metaType = (ARecordType) 
metadataProvider.findMetaType(this);
-        recordType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(recordType, metaType, this);
+        recordType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(recordType, this);

         List<List<String>> partitioningKeys = getPrimaryKeys();
         int numPrimaryKeys = partitioningKeys.size();
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 e726db7..966d777 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
@@ -338,7 +338,7 @@
                 metaDt = (ARecordType) metadataNode
                         .getDatatype(txnId, metaTypeDatabase, 
metatypeDataverseName, metatypeName).getDatatype();
             }
-            recordDt = (ARecordType) 
MetadataManagerUtil.findTypeForDatasetWithoutType(recordDt, metaDt, dataset);
+            recordDt = (ARecordType) 
MetadataManagerUtil.findTypeForDatasetWithoutType(recordDt, dataset);
             searchKeyType = new ArrayList<>(searchElementCount);
             for (int i = 0; i < searchElementCount; i++) {
                 Pair<List<List<String>>, List<List<String>>> searchElement = 
searchElements.get(i);
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java
index 0cd150e..91187ae 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/DatasetUtil.java
@@ -347,7 +347,7 @@
         if (dataset.hasMetaPart()) {
             metaItemType = (ARecordType) 
metadataProvider.findMetaType(dataset);
         }
-        itemType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(itemType, metaItemType, dataset);
+        itemType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(itemType, dataset);

         JobSpecification spec = 
RuntimeUtils.createJobSpecification(metadataProvider.getApplicationContext());
         PartitioningProperties partitioningProperties = 
metadataProvider.getPartitioningProperties(dataset);
@@ -471,7 +471,7 @@
         int numFilterFields = DatasetUtil.getFilterField(dataset) == null ? 0 
: 1;
         ARecordType itemType = (ARecordType) 
metadataProvider.findType(dataset);
         ARecordType metaItemType = (ARecordType) 
metadataProvider.findMetaType(dataset);
-        itemType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(itemType, metaItemType, dataset);
+        itemType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(itemType, dataset);

         Index primaryIndex = 
metadataProvider.getIndex(dataset.getDatabaseName(), dataset.getDataverseName(),
                 dataset.getDatasetName(), dataset.getDatasetName());
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SampleOperationsHelper.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SampleOperationsHelper.java
index e874663..7e3af78 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SampleOperationsHelper.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SampleOperationsHelper.java
@@ -130,7 +130,7 @@
         itemType = (ARecordType) 
metadataProvider.findType(dataset.getItemTypeDatabaseName(),
                 dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
         metaType = DatasetUtil.getMetaType(metadataProvider, dataset);
-        itemType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(itemType, metaType, dataset);
+        itemType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(itemType, dataset);

         recordDesc = dataset.getPrimaryRecordDescriptor(metadataProvider);
         comparatorFactories = 
dataset.getPrimaryComparatorFactories(metadataProvider, itemType, metaType);
diff --git 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
index 7e1fd48..8350141 100644
--- 
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
+++ 
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
@@ -139,7 +139,7 @@
         ARecordType recordType = (ARecordType) 
metadataProvider.findType(dataset.getItemTypeDatabaseName(),
                 dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
         this.metaType = DatasetUtil.getMetaType(metadataProvider, dataset);
-        this.itemType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(recordType, metaType, dataset);
+        this.itemType = (ARecordType) 
metadataProvider.findTypeForDatasetWithoutType(recordType, dataset);

         Pair<ARecordType, ARecordType> enforcedTypes = getEnforcedType(index, 
itemType, metaType);
         this.enforcedItemType = enforcedTypes.first;

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20083
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: phoenix
Gerrit-Change-Id: I4d38712226778ef52aabacdcfe1e0b26e0d74bea
Gerrit-Change-Number: 20083
Gerrit-PatchSet: 1
Gerrit-Owner: Michael Blow <mb...@apache.org>
Gerrit-CC: Peeyush Gupta <peeyush.gu...@couchbase.com>
Gerrit-MessageType: newchange

Reply via email to