This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 80a41e247ce465994bc9d3b053cd8ab1db0f6308
Author: Peeyush Gupta <[email protected]>
AuthorDate: Wed Jul 9 15:38:09 2025 -0700

    [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 <[email protected]>
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
---
 .../algebra/operators/physical/BTreeSearchPOperator.java  |  3 +--
 .../rules/IntroduceSecondaryIndexInsertDeleteRule.java    |  2 +-
 .../asterix/optimizer/rules/PushFieldAccessRule.java      |  2 ++
 .../rules/am/IntroduceLSMComponentFilterRule.java         | 15 ++++++++++-----
 .../rules/am/IntroducePrimaryIndexForAggregationRule.java |  2 +-
 .../optimizer/rules/am/OptimizableOperatorSubTree.java    |  2 +-
 .../translator/LangExpressionToPlanTranslator.java        |  4 ++--
 .../asterix/api/http/server/ConnectorApiServlet.java      |  1 +
 .../org/apache/asterix/app/function/DatasetRewriter.java  |  1 +
 .../apache/asterix/app/function/QueryIndexRewriter.java   |  2 +-
 .../asterix/app/function/QueryPartitionRewriter.java      |  2 +-
 .../apache/asterix/app/translator/QueryTranslator.java    |  2 +-
 .../main/java/org/apache/asterix/utils/RebalanceUtil.java |  2 +-
 .../asterix/api/http/servlet/ConnectorApiServletTest.java |  1 +
 ...set-4.08.ddl.sqlpp => create-dataset-4.08.query.sqlpp} |  3 +--
 ...taset-4.08.ddl.sqlpp => create-dataset-4.09.ddl.sqlpp} |  0
 .../runtimets/results/column/upsert/003/003.003.regexadm  |  2 +-
 .../results/ddl/create-dataset-4/create-dataset-4.08.adm  |  1 +
 .../asterix/metadata/declared/DatasetDataSource.java      |  3 +--
 .../asterix/metadata/declared/MetadataManagerUtil.java    |  6 ++----
 .../asterix/metadata/declared/MetadataProvider.java       |  6 +++---
 .../org/apache/asterix/metadata/entities/Dataset.java     |  4 ++--
 .../entitytupletranslators/IndexTupleTranslator.java      |  2 +-
 .../org/apache/asterix/metadata/utils/DatasetUtil.java    |  4 ++--
 .../asterix/metadata/utils/SampleOperationsHelper.java    |  2 +-
 .../metadata/utils/SecondaryIndexOperationsHelper.java    |  2 +-
 26 files changed, 41 insertions(+), 35 deletions(-)

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 b965512407..c83b72c8b4 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 @@ public class BTreeSearchPOperator extends 
IndexSearchPOperator {
         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 33c5baa6c2..887b18ebd6 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 @@ public class IntroduceSecondaryIndexInsertDeleteRule 
implements IAlgebraicRewrit
             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 eb93774f3c..31f2511667 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 @@ public class PushFieldAccessRule implements 
IAlgebraicRewriteRule {
         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 @@ public class PushFieldAccessRule implements 
IAlgebraicRewriteRule {
             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 9b7edc3570..e64e00cd9f 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 @@ public class IntroduceLSMComponentFilterRule implements 
IAlgebraicRewriteRule {
         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 @@ public class IntroduceLSMComponentFilterRule implements 
IAlgebraicRewriteRule {
                     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 a079c3fe0b..146eb2668e 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 @@ public class IntroducePrimaryIndexForAggregationRule 
implements IAlgebraicRewrit
             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 a6c7a32a99..8e3db4b76f 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 @@ public class OptimizableOperatorSubTree {
             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 ed62ba3100..98c832a41b 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 @@ abstract class LangExpressionToPlanTranslator
                 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 @@ abstract class LangExpressionToPlanTranslator
                 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 df27ff436c..744e624617 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 @@ public class ConnectorApiServlet extends AbstractServlet {
                 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 617d59b41f..3e8b02adcf 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 @@ public class DatasetRewriter implements 
IFunctionToDataSourceRewriter, IResultTy
         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 46f13f1db7..ae5a77aed6 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 @@ public class QueryIndexRewriter extends FunctionRewriter 
implements IResultTypeC
         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 4514a30362..a0810cb0ca 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 @@ public class QueryPartitionRewriter extends 
FunctionRewriter implements IResultT
         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 ad0cd5f0e8..c8af10e137 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 @@ public class QueryTranslator extends 
AbstractLangTranslator implements IStatemen
             }
             */
             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 cc9f1ada72..a2cbaa5d79 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 @@ public class RebalanceUtil {
         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 d8fb05351a..2389a9ca68 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 @@ public class ConnectorApiServletTest {
             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.ddl.sqlpp
 
b/asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create-dataset-4/create-dataset-4.08.query.sqlpp
similarity index 94%
copy from 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create-dataset-4/create-dataset-4.08.ddl.sqlpp
copy to 
asterixdb/asterix-app/src/test/resources/runtimets/queries_sqlpp/ddl/create-dataset-4/create-dataset-4.08.query.sqlpp
index b42598a471..673bc80eaa 100644
--- 
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.08.query.sqlpp
@@ -19,5 +19,4 @@
 
 use test;
 
-drop dataverse 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 64695de098..58a2bbc662 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 0000000000..a62b60d0d0
--- /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 c404496f06..b961421db2 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 @@ public class DatasetDataSource extends DataSource {
                                     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 f42ded21d6..143b615ba3 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 @@ public class MetadataManagerUtil {
      * 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 @@ public class MetadataManagerUtil {
                 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 941c8f7890..b0291375b2 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 @@ public class MetadataProvider implements 
IMetadataProvider<DataSourceId, String>
         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 @@ public class MetadataProvider implements 
IMetadataProvider<DataSourceId, String>
         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 cae1385ae9..b3fc1e533a 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 @@ public class Dataset implements IMetadataEntity<Dataset>, 
IDataset {
         }
         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 @@ public class Dataset implements IMetadataEntity<Dataset>, 
IDataset {
             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 e726db7b92..966d777d71 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 @@ public class IndexTupleTranslator extends 
AbstractTupleTranslator<Index> {
                 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 0cd150ec04..91187ae171 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 @@ public class DatasetUtil {
         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 @@ public class DatasetUtil {
         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 e87466386d..7e3af78b59 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 @@ public class SampleOperationsHelper implements 
ISecondaryIndexOperationsHelper {
         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 7e1fd484f1..8350141153 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 @@ public abstract class SecondaryIndexOperationsHelper 
implements ISecondaryIndexO
         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;


Reply via email to