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

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

Ext-ref: MB-67595

Change-Id: I4d38712226778ef52aabacdcfe1e0b26e0d74bea
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20040
Reviewed-by: Ali Alsuliman <ali.al.solaiman@gmail.com>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
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 ad0cd5f..c8af10e 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;