This is an automated email from the ASF dual-hosted git repository. mhubail pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
The following commit(s) were added to refs/heads/master by this push: new 0cc88e8c14 [NO ISSUE] [MISC] Misc. Changes 0cc88e8c14 is described below commit 0cc88e8c14dca2fc2bddff378e0d04ab2c0ef7f7 Author: Ritik Raj <raj.ritik9...@gmail.com> AuthorDate: Thu Feb 15 02:46:11 2024 +0530 [NO ISSUE] [MISC] Misc. Changes Details: 1. Resolving Dataset Creation Issue in case of Standalone collection Extensions 2. added record field to addMeta in DataParserFactory for Extensions Change-Id: I30d4b7633cef47fcbb9d340407f0fc5483c647a5 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18164 Integration-Tests: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu> Reviewed-by: Murtadha Hubail <mhub...@apache.org> --- .../org/apache/asterix/app/translator/QueryTranslator.java | 7 ++++++- .../asterix/external/api/IRecordWithMetadataParser.java | 2 +- .../external/dataflow/FeedWithMetaDataFlowController.java | 2 +- .../asterix/external/parser/RecordWithMetadataParser.java | 2 +- .../asterix/external/parser/test/RecordWithMetaTest.java | 2 +- .../asterix/metadata/declared/MetadataManagerUtil.java | 12 ++++++------ 6 files changed, 16 insertions(+), 11 deletions(-) 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 30c7127e34..f20a03194d 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 @@ -981,7 +981,7 @@ public class QueryTranslator extends AbstractLangTranslator implements IStatemen compactionPolicy = StorageConstants.DEFAULT_FILTERED_DATASET_COMPACTION_POLICY_NAME; compactionPolicyProperties = StorageConstants.DEFAULT_COMPACTION_POLICY_PROPERTIES; } - boolean isDatasetWithoutTypeSpec = aRecordType.getFieldNames().length == 0 && metaRecType == null; + boolean isDatasetWithoutTypeSpec = isDatasetWithoutTypeSpec(dd, aRecordType, metaRecType); // Validate dataset properties if the format is COLUMN ColumnPropertiesValidationUtil.validate(sourceLoc, datasetFormatInfo.getFormat(), compactionPolicy, filterField); @@ -1108,6 +1108,11 @@ public class QueryTranslator extends AbstractLangTranslator implements IStatemen return Optional.of(dataset); } + protected boolean isDatasetWithoutTypeSpec(DatasetDecl datasetDecl, ARecordType aRecordType, + ARecordType metaRecType) { + return aRecordType.getFieldNames().length == 0 && metaRecType == null; + } + protected IDataset createDataset(DatasetDecl dd, String database, DataverseName dataverseName, String datasetName, String itemTypeDatabase, DataverseName itemTypeDataverseName, String itemTypeName, String metaItemTypeDatabase, DataverseName metaItemTypeDataverseName, String metaItemTypeName, diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordWithMetadataParser.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordWithMetadataParser.java index 751541d1b1..e04be9a4e1 100644 --- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordWithMetadataParser.java +++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordWithMetadataParser.java @@ -24,7 +24,7 @@ import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder; public interface IRecordWithMetadataParser<T> extends IRecordDataParser<T> { - public void parseMeta(DataOutput out) throws HyracksDataException; + void parseMeta(DataOutput out, IRawRecord<? extends T> record) throws HyracksDataException; void appendLastParsedPrimaryKeyToTuple(ArrayTupleBuilder tb) throws HyracksDataException; } diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FeedWithMetaDataFlowController.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FeedWithMetaDataFlowController.java index 74bfe2671b..b78c27067c 100644 --- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FeedWithMetaDataFlowController.java +++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/dataflow/FeedWithMetaDataFlowController.java @@ -39,7 +39,7 @@ public class FeedWithMetaDataFlowController<T> extends FeedRecordDataFlowControl @Override protected void addMetaPart(ArrayTupleBuilder tb, IRawRecord<? extends T> record) throws HyracksDataException { - dataParser.parseMeta(tb.getDataOutput()); + dataParser.parseMeta(tb.getDataOutput(), record); tb.addFieldEndOffset(); } } diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithMetadataParser.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithMetadataParser.java index d799f22753..073c5e293a 100644 --- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithMetadataParser.java +++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithMetadataParser.java @@ -88,7 +88,7 @@ public class RecordWithMetadataParser<T, O> implements IRecordWithMetadataParser } @Override - public void parseMeta(DataOutput out) throws HyracksDataException { + public void parseMeta(DataOutput out, IRawRecord<? extends T> record) throws HyracksDataException { try { if (rwm.getRecord().size() == 0) { out.writeByte(ATypeTag.SERIALIZED_MISSING_TYPE_TAG); diff --git a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/parser/test/RecordWithMetaTest.java b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/parser/test/RecordWithMetaTest.java index 994325e1d5..4bf91743a1 100644 --- a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/parser/test/RecordWithMetaTest.java +++ b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/parser/test/RecordWithMetaTest.java @@ -128,7 +128,7 @@ public class RecordWithMetaTest { tb.reset(); if (parser.parse(record, tb.getDataOutput())) { tb.addFieldEndOffset(); - parser.parseMeta(tb.getDataOutput()); + parser.parseMeta(tb.getDataOutput(), record); tb.addFieldEndOffset(); parser.appendLastParsedPrimaryKeyToTuple(tb); //print tuple 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 8a8351749c..f42ded21d6 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 @@ -66,8 +66,8 @@ public class MetadataManagerUtil { } /** - * Checks if a dataset is created without type specification and has no meta part. For such datasets, - * creates and returns a record type based on the primary key and primary key types information included in the + * Checks if a dataset is created without type specification and has no meta part or if the datasetWithoutTypeSpecification is true. + * For such datasets, creates and returns a record type based on the primary key and primary key types information included in the * internal details. * * @param itemType record type of the dataset @@ -78,11 +78,11 @@ public class MetadataManagerUtil { */ public static IAType findTypeForDatasetWithoutType(IAType itemType, IAType metaItemType, Dataset dataset) throws AlgebricksException { - ARecordType recordType = (ARecordType) itemType; - if (recordType.getFieldNames().length == 0 && metaItemType == null - && dataset.getDatasetType() == DatasetConfig.DatasetType.INTERNAL) { + if (dataset.getDatasetType() == DatasetConfig.DatasetType.INTERNAL) { InternalDatasetDetails dsDetails = (InternalDatasetDetails) dataset.getDatasetDetails(); - return findType(dsDetails.getPrimaryKey(), dsDetails.getPrimaryKeyType()); + if (dsDetails.isDatasetWithoutTypeSpecification()) { + return findType(dsDetails.getPrimaryKey(), dsDetails.getPrimaryKeyType()); + } } return itemType; }