[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;