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

Reply via email to