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 <[email protected]>
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 <[email protected]>
Tested-by: Jenkins <[email protected]>
Reviewed-by: Murtadha Hubail <[email protected]>
---
.../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;
}