abdullah alamoudi has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/1349
Change subject: Enable extension of IDataFormat
......................................................................
Enable extension of IDataFormat
Change-Id: I7b3e26fbb4a5da9ae4522b228991155f1a06d854
---
M
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/AqlCompilationProvider.java
M
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/ILangCompilationProvider.java
M
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
M
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
M
asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
M
asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/servlet/ConnectorAPIServlet.java
M
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
M
asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/GlobalRecoveryManager.java
M
asterixdb/asterix-app/src/test/java/org/apache/asterix/api/http/servlet/ConnectorAPIServletTest.java
M
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/AqlMetadataProvider.java
M
asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java
A
asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormatProvider.java
M
asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
M
hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java
M
hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/HeuristicCompilerFactoryBuilder.java
M
hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionExchangePOperator.java
M
hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionMergeExchangePOperator.java
M
hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SortMergeExchangePOperator.java
M
hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobGenContext.java
19 files changed, 165 insertions(+), 93 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/49/1349/1
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/AqlCompilationProvider.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/AqlCompilationProvider.java
index af0ba73..7999d57 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/AqlCompilationProvider.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/AqlCompilationProvider.java
@@ -19,12 +19,14 @@
package org.apache.asterix.compiler.provider;
import org.apache.asterix.algebra.base.ILangExpressionToPlanTranslatorFactory;
+import org.apache.asterix.formats.base.IDataFormatProvider;
import org.apache.asterix.lang.aql.parser.AQLParserFactory;
import org.apache.asterix.lang.aql.rewrites.AQLRewriterFactory;
import org.apache.asterix.lang.aql.visitor.AQLAstPrintVisitorFactory;
import org.apache.asterix.lang.common.base.IAstPrintVisitorFactory;
import org.apache.asterix.lang.common.base.IParserFactory;
import org.apache.asterix.lang.common.base.IRewriterFactory;
+import org.apache.asterix.runtime.formats.FormatUtils;
import org.apache.asterix.translator.AqlExpressionToPlanTranslatorFactory;
public class AqlCompilationProvider implements ILangCompilationProvider {
@@ -54,4 +56,9 @@
return new DefaultRuleSetFactory();
}
+ @Override
+ public IDataFormatProvider getDataFormatProvider() {
+ return FormatUtils::getDefaultFormat;
+ }
+
}
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/ILangCompilationProvider.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/ILangCompilationProvider.java
index f658be9..e26e033 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/ILangCompilationProvider.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/ILangCompilationProvider.java
@@ -19,6 +19,7 @@
package org.apache.asterix.compiler.provider;
import org.apache.asterix.algebra.base.ILangExpressionToPlanTranslatorFactory;
+import org.apache.asterix.formats.base.IDataFormatProvider;
import org.apache.asterix.lang.common.base.IAstPrintVisitorFactory;
import org.apache.asterix.lang.common.base.IParserFactory;
import org.apache.asterix.lang.common.base.IRewriterFactory;
@@ -28,26 +29,31 @@
/**
* @return the parser factory of a language implementation.
*/
- public IParserFactory getParserFactory();
+ IParserFactory getParserFactory();
/**
* @return the rewriter factory of a language implementation.
*/
- public IRewriterFactory getRewriterFactory();
+ IRewriterFactory getRewriterFactory();
/**
* @return the AST printer factory of a language implementation.
*/
- public IAstPrintVisitorFactory getAstPrintVisitorFactory();
+ IAstPrintVisitorFactory getAstPrintVisitorFactory();
/**
* @return the language expression to logical query plan translator
factory of a language implementation.
*/
- public ILangExpressionToPlanTranslatorFactory
getExpressionToPlanTranslatorFactory();
+ ILangExpressionToPlanTranslatorFactory
getExpressionToPlanTranslatorFactory();
/**
* @return the rule set factory of a language implementation
*/
- public IRuleSetFactory getRuleSetFactory();
+ IRuleSetFactory getRuleSetFactory();
+
+ /**
+ * @return the data format provider
+ */
+ IDataFormatProvider getDataFormatProvider();
}
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
index 70f8f92..2314e38 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/compiler/provider/SqlppCompilationProvider.java
@@ -19,12 +19,14 @@
package org.apache.asterix.compiler.provider;
import org.apache.asterix.algebra.base.ILangExpressionToPlanTranslatorFactory;
+import org.apache.asterix.formats.base.IDataFormatProvider;
import org.apache.asterix.lang.common.base.IAstPrintVisitorFactory;
import org.apache.asterix.lang.common.base.IParserFactory;
import org.apache.asterix.lang.common.base.IRewriterFactory;
import org.apache.asterix.lang.sqlpp.parser.SqlppParserFactory;
import org.apache.asterix.lang.sqlpp.rewrites.SqlppRewriterFactory;
import org.apache.asterix.lang.sqlpp.visitor.SqlppAstPrintVisitorFactory;
+import org.apache.asterix.runtime.formats.FormatUtils;
import org.apache.asterix.translator.SqlppExpressionToPlanTranslatorFactory;
public class SqlppCompilationProvider implements ILangCompilationProvider {
@@ -54,4 +56,9 @@
return new DefaultRuleSetFactory();
}
+ @Override
+ public IDataFormatProvider getDataFormatProvider() {
+ return FormatUtils::getDefaultFormat;
+ }
+
}
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
index ae31780..962fdc3 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
@@ -123,8 +123,9 @@
private static final JobGenContext _jobGenCtx = new JobGenContext(null,
null, null,
AqlSerializerDeserializerProvider.INSTANCE,
AqlBinaryHashFunctionFactoryProvider.INSTANCE,
- AqlBinaryHashFunctionFamilyProvider.INSTANCE,
AqlBinaryComparatorFactoryProvider.INSTANCE,
- AqlTypeTraitProvider.INSTANCE,
AqlBinaryBooleanInspectorImpl.FACTORY, AqlBinaryIntegerInspector.FACTORY,
+ AqlBinaryHashFunctionFamilyProvider.INSTANCE,
AqlBinaryHashFunctionFactoryProvider.INSTANCE,
+ AqlBinaryComparatorFactoryProvider.INSTANCE,
AqlTypeTraitProvider.INSTANCE,
+ AqlBinaryBooleanInspectorImpl.FACTORY,
AqlBinaryIntegerInspector.FACTORY,
AqlADMPrinterFactoryProvider.INSTANCE,
AqlMissingWriterFactory.INSTANCE, null,
new
LogicalExpressionJobGenToExpressionRuntimeProviderAdapter(QueryLogicalExpressionJobGen.INSTANCE),
AqlExpressionTypeComputer.INSTANCE, null, null, null, null,
GlobalConfig.DEFAULT_FRAME_SIZE, null);
@@ -168,13 +169,13 @@
@Override
public Pair<Boolean, ILogicalExpression>
visitConstantExpression(ConstantExpression expr, Void arg)
throws AlgebricksException {
- return new Pair<Boolean, ILogicalExpression>(false, expr);
+ return new Pair<>(false, expr);
}
@Override
public Pair<Boolean, ILogicalExpression>
visitVariableReferenceExpression(VariableReferenceExpression expr,
Void arg) throws AlgebricksException {
- return new Pair<Boolean, ILogicalExpression>(false, expr);
+ return new Pair<>(false, expr);
}
@Override
@@ -182,12 +183,12 @@
Void arg) throws AlgebricksException {
boolean changed = changeRec(expr, arg);
if (!checkArgs(expr) || !expr.isFunctional()) {
- return new Pair<Boolean, ILogicalExpression>(changed, expr);
+ return new Pair<>(changed, expr);
}
// Skip Constant Folding for the record-related functions.
if
(FUNC_ID_SET_THAT_SHOULD_NOT_BE_APPLIED.contains(expr.getFunctionIdentifier()))
{
- return new Pair<Boolean, ILogicalExpression>(false, null);
+ return new Pair<>(false, null);
}
//Current List SerDe assumes a strongly typed list, so we do not
constant fold the list constructors if they are not strongly typed
@@ -199,7 +200,7 @@
//case1: listType == null, could be a nested list inside
a list<ANY>
//case2: itemType = ANY
//case3: itemType = a nested list
- return new Pair<Boolean, ILogicalExpression>(false, null);
+ return new Pair<>(false, null);
}
}
if
(expr.getFunctionIdentifier().equals(AsterixBuiltinFunctions.FIELD_ACCESS_BY_NAME))
{
@@ -208,7 +209,7 @@
int k = rt.getFieldIndex(str);
if (k >= 0) {
// wait for the ByNameToByIndex rule to apply
- return new Pair<Boolean, ILogicalExpression>(changed,
expr);
+ return new Pair<>(changed, expr);
}
}
@@ -234,21 +235,21 @@
public Pair<Boolean, ILogicalExpression>
visitAggregateFunctionCallExpression(
AggregateFunctionCallExpression expr, Void arg) throws
AlgebricksException {
boolean changed = changeRec(expr, arg);
- return new Pair<Boolean, ILogicalExpression>(changed, expr);
+ return new Pair<>(changed, expr);
}
@Override
public Pair<Boolean, ILogicalExpression>
visitStatefulFunctionCallExpression(
StatefulFunctionCallExpression expr, Void arg) throws
AlgebricksException {
boolean changed = changeRec(expr, arg);
- return new Pair<Boolean, ILogicalExpression>(changed, expr);
+ return new Pair<>(changed, expr);
}
@Override
public Pair<Boolean, ILogicalExpression>
visitUnnestingFunctionCallExpression(
UnnestingFunctionCallExpression expr, Void arg) throws
AlgebricksException {
boolean changed = changeRec(expr, arg);
- return new Pair<Boolean, ILogicalExpression>(changed, expr);
+ return new Pair<>(changed, expr);
}
private boolean changeRec(AbstractFunctionCallExpression expr, Void
arg) throws AlgebricksException {
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
index 31ef778..c996f33 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/APIFramework.java
@@ -265,6 +265,7 @@
new
LogicalExpressionJobGenToExpressionRuntimeProviderAdapter(QueryLogicalExpressionJobGen.INSTANCE));
builder.setHashFunctionFactoryProvider(format.getBinaryHashFunctionFactoryProvider());
builder.setHashFunctionFamilyProvider(format.getBinaryHashFunctionFamilyProvider());
+
builder.setPartitioningHashFunctionFactory(format.getPartitioningHashFunctionFactoryProvider());
builder.setMissingWriterFactory(format.getMissingWriterFactory());
builder.setPredicateEvaluatorFactoryProvider(format.getPredicateEvaluatorFactoryProvider());
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/servlet/ConnectorAPIServlet.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/servlet/ConnectorAPIServlet.java
index c43377a..28f2da2 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/servlet/ConnectorAPIServlet.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/servlet/ConnectorAPIServlet.java
@@ -37,6 +37,7 @@
import org.apache.asterix.metadata.entities.Dataset;
import org.apache.asterix.metadata.utils.DatasetUtils;
import org.apache.asterix.om.types.ARecordType;
+import org.apache.asterix.runtime.formats.FormatUtils;
import org.apache.asterix.util.FlushDatasetUtils;
import org.apache.hyracks.api.client.IHyracksClientConnection;
import org.apache.hyracks.api.client.NodeControllerInfo;
@@ -83,7 +84,7 @@
MetadataTransactionContext mdTxnCtx =
MetadataManager.INSTANCE.beginTransaction();
// Retrieves file splits of the dataset.
- AqlMetadataProvider metadataProvider = new
AqlMetadataProvider(null);
+ AqlMetadataProvider metadataProvider = new
AqlMetadataProvider(null, FormatUtils::getDefaultFormat);
metadataProvider.setMetadataTxnContext(mdTxnCtx);
Dataset dataset = metadataProvider.findDataset(dataverseName,
datasetName);
if (dataset == null) {
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 0b6d806..efd81d0 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
@@ -84,6 +84,7 @@
import org.apache.asterix.file.DatasetOperations;
import org.apache.asterix.file.DataverseOperations;
import org.apache.asterix.file.IndexOperations;
+import org.apache.asterix.formats.base.IDataFormatProvider;
import org.apache.asterix.formats.nontagged.AqlTypeTraitProvider;
import org.apache.asterix.lang.aql.statement.SubscribeFeedStatement;
import org.apache.asterix.lang.common.base.IRewriterFactory;
@@ -224,10 +225,11 @@
public static final boolean IS_DEBUG_MODE = false;// true
protected final List<Statement> statements;
protected final SessionConfig sessionConfig;
- protected Dataverse activeDefaultDataverse;
protected final List<FunctionDecl> declaredFunctions;
protected final APIFramework apiFramework;
protected final IRewriterFactory rewriterFactory;
+ protected final IDataFormatProvider dataFormatProvider;
+ protected Dataverse activeDefaultDataverse;
public QueryTranslator(List<Statement> statements, SessionConfig conf,
ILangCompilationProvider compliationProvider) {
@@ -236,6 +238,7 @@
this.declaredFunctions = getDeclaredFunctions(statements);
this.apiFramework = new APIFramework(compliationProvider);
this.rewriterFactory = compliationProvider.getRewriterFactory();
+ this.dataFormatProvider = compliationProvider.getDataFormatProvider();
activeDefaultDataverse = MetadataBuiltinEntities.DEFAULT_DATAVERSE;
}
@@ -288,7 +291,8 @@
}
validateOperation(activeDefaultDataverse, stmt);
rewriteStatement(stmt); // Rewrite the statement's AST.
- AqlMetadataProvider metadataProvider = new
AqlMetadataProvider(activeDefaultDataverse);
+ AqlMetadataProvider metadataProvider = new
AqlMetadataProvider(activeDefaultDataverse,
+ dataFormatProvider);
metadataProvider.setWriterFactory(writerFactory);
metadataProvider.setResultSerializerFactoryProvider(resultSerializerFactoryProvider);
metadataProvider.setOutputFile(outputFile);
@@ -3178,7 +3182,7 @@
int j;
// Build the stack for the enforced type
for (j = 1; j < splits.size(); j++) {
- nestedTypeStack.push(new Pair<ARecordType,
String>(nestedFieldType, splits.get(j - 1)));
+ nestedTypeStack.push(new Pair<>(nestedFieldType,
splits.get(j - 1)));
bridgeName = nestedFieldType.getTypeName();
nestedFieldType = (ARecordType)
enforcedType.getSubFieldType(splits.subList(0, j));
if (nestedFieldType == null) {
diff --git
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/GlobalRecoveryManager.java
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/GlobalRecoveryManager.java
index 77374bf..86f876f 100644
---
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/GlobalRecoveryManager.java
+++
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/GlobalRecoveryManager.java
@@ -41,6 +41,7 @@
import org.apache.asterix.metadata.entities.ExternalDatasetDetails;
import org.apache.asterix.metadata.entities.Index;
import org.apache.asterix.metadata.utils.MetadataConstants;
+import org.apache.asterix.runtime.formats.FormatUtils;
import org.apache.asterix.runtime.util.ClusterStateManager;
import org.apache.hyracks.api.client.HyracksConnection;
import org.apache.hyracks.api.job.JobId;
@@ -106,7 +107,8 @@
List<Dataverse> dataverses =
MetadataManager.INSTANCE.getDataverses(mdTxnCtx);
for (Dataverse dataverse : dataverses) {
if
(!dataverse.getDataverseName().equals(MetadataConstants.METADATA_DATAVERSE_NAME))
{
- AqlMetadataProvider metadataProvider = new
AqlMetadataProvider(dataverse);
+ AqlMetadataProvider metadataProvider = new
AqlMetadataProvider(dataverse,
+ FormatUtils::getDefaultFormat);
List<Dataset> datasets =
MetadataManager.INSTANCE.getDataverseDatasets(mdTxnCtx,
dataverse.getDataverseName());
for (Dataset dataset : datasets) {
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 2051a35..2103d0b 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
@@ -44,6 +44,7 @@
import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
import org.apache.asterix.om.util.JSONDeserializerForTypes;
+import org.apache.asterix.runtime.formats.FormatUtils;
import org.apache.asterix.test.runtime.ExecutionTest;
import org.apache.hyracks.api.client.IHyracksClientConnection;
import org.apache.hyracks.api.client.NodeControllerInfo;
@@ -68,7 +69,7 @@
ConnectorAPIServlet servlet = spy(new ConnectorAPIServlet());
ServletConfig mockServletConfig = mock(ServletConfig.class);
servlet.init(mockServletConfig);
- Map<String, NodeControllerInfo> nodeMap = new HashMap<String,
NodeControllerInfo>();
+ Map<String, NodeControllerInfo> nodeMap = new HashMap<>();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PrintWriter outputWriter = new PrintWriter(outputStream);
@@ -125,7 +126,7 @@
FileSplit[] splits = new FileSplit[2];
splits[0] = new FileSplit("asterix_nc1", "foo1");
splits[1] = new FileSplit("asterix_nc2", "foo2");
- Map<String, NodeControllerInfo> nodeMap = new HashMap<String,
NodeControllerInfo>();
+ Map<String, NodeControllerInfo> nodeMap = new HashMap<>();
NodeControllerInfo mockInfo1 = mock(NodeControllerInfo.class);
NodeControllerInfo mockInfo2 = mock(NodeControllerInfo.class);
@@ -171,7 +172,7 @@
private ARecordType getMetadataRecordType(String dataverseName, String
datasetName) throws Exception {
MetadataTransactionContext mdTxnCtx =
MetadataManager.INSTANCE.beginTransaction();
// Retrieves file splits of the dataset.
- AqlMetadataProvider metadataProvider = new AqlMetadataProvider(null);
+ AqlMetadataProvider metadataProvider = new AqlMetadataProvider(null,
FormatUtils::getDefaultFormat);
metadataProvider.setMetadataTxnContext(mdTxnCtx);
Dataset dataset = metadataProvider.findDataset(dataverseName,
datasetName);
ARecordType recordType = (ARecordType)
metadataProvider.findType(dataset.getItemTypeDataverseName(),
diff --git
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/AqlMetadataProvider.java
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/AqlMetadataProvider.java
index f6eeb66..2720fc2 100644
---
a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/AqlMetadataProvider.java
+++
b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/AqlMetadataProvider.java
@@ -61,6 +61,7 @@
import org.apache.asterix.external.util.ExternalDataConstants;
import org.apache.asterix.external.util.FeedConstants;
import org.apache.asterix.formats.base.IDataFormat;
+import org.apache.asterix.formats.base.IDataFormatProvider;
import org.apache.asterix.formats.nontagged.AqlBinaryComparatorFactoryProvider;
import
org.apache.asterix.formats.nontagged.AqlLinearizeComparatorFactoryProvider;
import org.apache.asterix.formats.nontagged.AqlTypeTraitProvider;
@@ -172,6 +173,7 @@
private final AsterixStorageProperties storageProperties;
private final ILibraryManager libraryManager;
private final Dataverse defaultDataverse;
+ private final IDataFormatProvider dataFormatProvider;
private MetadataTransactionContext mdTxnCtx;
private boolean isWriteTransaction;
@@ -185,10 +187,11 @@
private Map<String, Integer> locks;
private boolean isTemporaryDatasetWriteJob = true;
- public AqlMetadataProvider(Dataverse defaultDataverse) {
+ public AqlMetadataProvider(Dataverse defaultDataverse, IDataFormatProvider
dataFormatProvider) {
this.defaultDataverse = defaultDataverse;
this.storageProperties =
AsterixAppContextInfo.INSTANCE.getStorageProperties();
this.libraryManager =
AsterixAppContextInfo.INSTANCE.getLibraryManager();
+ this.dataFormatProvider = dataFormatProvider;
}
public String getPropertyValue(String propertyName) {
@@ -282,7 +285,7 @@
}
public IDataFormat getFormat() {
- return FormatUtils.getDefaultFormat();
+ return dataFormatProvider.getDataFormat();
}
public AsterixStorageProperties getStorageProperties() {
@@ -491,13 +494,12 @@
for (int i = 0; i < numSecondaryKeys; i++) {
bloomFilterKeyFields[i] = i;
}
- Pair<IBinaryComparatorFactory[], ITypeTraits[]>
comparatorFactoriesAndTypeTraits =
-
getComparatorFactoriesAndTypeTraitsOfSecondaryBTreeIndex(
- secondaryIndex.getKeyFieldNames(),
secondaryIndex.getKeyFieldTypes(),
- DatasetUtils.getPartitioningKeys(dataset),
itemType, dataset.getDatasetType(),
- dataset.hasMetaPart(), primaryKeyIndicators,
- secondaryIndex.getKeyFieldSourceIndicators(),
- metaType);
+ Pair<IBinaryComparatorFactory[], ITypeTraits[]>
comparatorFactoriesAndTypeTraits =
getComparatorFactoriesAndTypeTraitsOfSecondaryBTreeIndex(
+ secondaryIndex.getKeyFieldNames(),
secondaryIndex.getKeyFieldTypes(),
+ DatasetUtils.getPartitioningKeys(dataset), itemType,
dataset.getDatasetType(),
+ dataset.hasMetaPart(), primaryKeyIndicators,
+ secondaryIndex.getKeyFieldSourceIndicators(),
+ metaType);
comparatorFactories = comparatorFactoriesAndTypeTraits.first;
typeTraits = comparatorFactoriesAndTypeTraits.second;
if (filterTypeTraits != null) {
@@ -572,14 +574,13 @@
// External dataset <- use the btree with buddy btree->
// Be Careful of Key Start Index ?
int[] buddyBreeFields = new int[] { numSecondaryKeys };
- ExternalBTreeWithBuddyDataflowHelperFactory
indexDataflowHelperFactory =
- new ExternalBTreeWithBuddyDataflowHelperFactory(
- compactionInfo.first, compactionInfo.second,
- new
SecondaryIndexOperationTrackerProvider(dataset.getDatasetId()),
-
AsterixRuntimeComponentsProvider.RUNTIME_PROVIDER,
-
LSMBTreeWithBuddyIOOperationCallbackFactory.INSTANCE,
-
getStorageProperties().getBloomFilterFalsePositiveRate(), buddyBreeFields,
-
ExternalDatasetsRegistry.INSTANCE.getAndLockDatasetVersion(dataset, this),
!temp);
+ ExternalBTreeWithBuddyDataflowHelperFactory
indexDataflowHelperFactory = new ExternalBTreeWithBuddyDataflowHelperFactory(
+ compactionInfo.first, compactionInfo.second,
+ new
SecondaryIndexOperationTrackerProvider(dataset.getDatasetId()),
+ AsterixRuntimeComponentsProvider.RUNTIME_PROVIDER,
+ LSMBTreeWithBuddyIOOperationCallbackFactory.INSTANCE,
+
getStorageProperties().getBloomFilterFalsePositiveRate(), buddyBreeFields,
+
ExternalDatasetsRegistry.INSTANCE.getAndLockDatasetVersion(dataset, this),
!temp);
btreeSearchOp = new
ExternalBTreeSearchOperatorDescriptor(jobSpec, outputRecDesc, rtcProvider,
rtcProvider, spPc.first, typeTraits,
comparatorFactories, bloomFilterKeyFields, lowKeyFields,
highKeyFields, lowKeyInclusive, highKeyInclusive,
indexDataflowHelperFactory, retainInput,
@@ -623,8 +624,7 @@
int numDimensions =
NonTaggedFormatUtil.getNumDimensions(keyType.getTypeTag());
boolean isPointMBR = keyType.getTypeTag() == ATypeTag.POINT ||
keyType.getTypeTag() == ATypeTag.POINT3D;
int numNestedSecondaryKeyFields = numDimensions * 2;
- IPrimitiveValueProviderFactory[] valueProviderFactories =
- new
IPrimitiveValueProviderFactory[numNestedSecondaryKeyFields];
+ IPrimitiveValueProviderFactory[] valueProviderFactories = new
IPrimitiveValueProviderFactory[numNestedSecondaryKeyFields];
for (int i = 0; i < numNestedSecondaryKeyFields; i++) {
valueProviderFactories[i] =
AqlPrimitiveValueProviderFactory.INSTANCE;
}
@@ -640,9 +640,9 @@
ITypeTraits[] typeTraits =
JobGenHelper.variablesToTypeTraits(outputVars, keysStartIndex,
numNestedSecondaryKeyFields + numPrimaryKeys, typeEnv,
context);
IAsterixApplicationContextInfo appContext =
(IAsterixApplicationContextInfo) context.getAppContext();
- Pair<IFileSplitProvider, AlgebricksPartitionConstraint> spPc =
-
splitProviderAndPartitionConstraintsForDataset(dataset.getDataverseName(),
- dataset.getDatasetName(), indexName, temp);
+ Pair<IFileSplitProvider, AlgebricksPartitionConstraint> spPc =
splitProviderAndPartitionConstraintsForDataset(
+ dataset.getDataverseName(),
+ dataset.getDatasetName(), indexName, temp);
ARecordType metaType = null;
if (dataset.hasMetaPart()) {
metaType = (ARecordType)
findType(dataset.getMetaItemTypeDataverseName(),
@@ -799,9 +799,9 @@
IBinaryComparatorFactory[] comparatorFactories =
DatasetUtils.computeKeysBinaryComparatorFactories(dataset,
itemType, metaType,
context.getBinaryComparatorFactoryProvider());
- Pair<IFileSplitProvider, AlgebricksPartitionConstraint>
splitsAndConstraint =
-
splitProviderAndPartitionConstraintsForDataset(dataSource.getId().getDataverseName(),
- datasetName, indexName, temp);
+ Pair<IFileSplitProvider, AlgebricksPartitionConstraint>
splitsAndConstraint = splitProviderAndPartitionConstraintsForDataset(
+ dataSource.getId().getDataverseName(),
+ datasetName, indexName, temp);
IAsterixApplicationContextInfo appContext =
(IAsterixApplicationContextInfo) context.getAppContext();
long numElementsHint = getCardinalityPerPartitionHint(dataset);
@@ -1153,9 +1153,9 @@
IAsterixApplicationContextInfo appContext =
(IAsterixApplicationContextInfo) context.getAppContext();
IBinaryComparatorFactory[] comparatorFactories =
DatasetUtils.computeKeysBinaryComparatorFactories(dataset,
itemType, metaItemType,
context.getBinaryComparatorFactoryProvider());
- Pair<IFileSplitProvider, AlgebricksPartitionConstraint>
splitsAndConstraint =
-
splitProviderAndPartitionConstraintsForDataset(dataSource.getId().getDataverseName(),
datasetName,
- indexName, temp);
+ Pair<IFileSplitProvider, AlgebricksPartitionConstraint>
splitsAndConstraint = splitProviderAndPartitionConstraintsForDataset(
+ dataSource.getId().getDataverseName(), datasetName,
+ indexName, temp);
// prepare callback
JobId jobId = ((JobEventListenerFactory)
spec.getJobletEventListenerFactory()).getJobId();
@@ -1364,9 +1364,9 @@
IAsterixApplicationContextInfo appContext =
(IAsterixApplicationContextInfo) context.getAppContext();
IBinaryComparatorFactory[] comparatorFactories =
DatasetUtils.computeKeysBinaryComparatorFactories(dataset,
itemType, metaItemType,
context.getBinaryComparatorFactoryProvider());
- Pair<IFileSplitProvider, AlgebricksPartitionConstraint>
splitsAndConstraint =
-
splitProviderAndPartitionConstraintsForDataset(dataSource.getId().getDataverseName(),
datasetName,
- indexName, temp);
+ Pair<IFileSplitProvider, AlgebricksPartitionConstraint>
splitsAndConstraint = splitProviderAndPartitionConstraintsForDataset(
+ dataSource.getId().getDataverseName(), datasetName,
+ indexName, temp);
// prepare callback
JobId jobId = ((JobEventListenerFactory)
spec.getJobletEventListenerFactory()).getJobId();
@@ -1574,8 +1574,8 @@
}
IAsterixApplicationContextInfo appContext =
(IAsterixApplicationContextInfo) context.getAppContext();
- Pair<IFileSplitProvider, AlgebricksPartitionConstraint>
splitsAndConstraint =
-
splitProviderAndPartitionConstraintsForDataset(dataverseName, datasetName,
indexName, temp);
+ Pair<IFileSplitProvider, AlgebricksPartitionConstraint>
splitsAndConstraint = splitProviderAndPartitionConstraintsForDataset(
+ dataverseName, datasetName, indexName, temp);
// prepare callback
JobId jobId = ((JobEventListenerFactory)
spec.getJobletEventListenerFactory()).getJobId();
@@ -1711,8 +1711,7 @@
}
IAType nestedKeyType =
NonTaggedFormatUtil.getNestedSpatialType(spatialType.getTypeTag());
- IPrimitiveValueProviderFactory[] valueProviderFactories =
- new IPrimitiveValueProviderFactory[numSecondaryKeys];
+ IPrimitiveValueProviderFactory[] valueProviderFactories = new
IPrimitiveValueProviderFactory[numSecondaryKeys];
for (i = 0; i < numSecondaryKeys; i++) {
comparatorFactories[i] =
AqlBinaryComparatorFactoryProvider.INSTANCE
.getBinaryComparatorFactory(nestedKeyType, true);
@@ -1729,8 +1728,8 @@
IBinaryComparatorFactory[] primaryComparatorFactories =
DatasetUtils.computeKeysBinaryComparatorFactories(
dataset, recType, metaItemType,
context.getBinaryComparatorFactoryProvider());
IAsterixApplicationContextInfo appContext =
(IAsterixApplicationContextInfo) context.getAppContext();
- Pair<IFileSplitProvider, AlgebricksPartitionConstraint>
splitsAndConstraint =
-
splitProviderAndPartitionConstraintsForDataset(dataverseName, datasetName,
indexName, temp);
+ Pair<IFileSplitProvider, AlgebricksPartitionConstraint>
splitsAndConstraint = splitProviderAndPartitionConstraintsForDataset(
+ dataverseName, datasetName, indexName, temp);
int[] btreeFields = new int[primaryComparatorFactories.length];
for (int k = 0; k < btreeFields.length; k++) {
btreeFields[k] = k + numSecondaryKeys;
@@ -1970,8 +1969,8 @@
}
IAsterixApplicationContextInfo appContext =
(IAsterixApplicationContextInfo) context.getAppContext();
- Pair<IFileSplitProvider, AlgebricksPartitionConstraint>
splitsAndConstraint =
-
splitProviderAndPartitionConstraintsForDataset(dataverseName, datasetName,
indexName, temp);
+ Pair<IFileSplitProvider, AlgebricksPartitionConstraint>
splitsAndConstraint = splitProviderAndPartitionConstraintsForDataset(
+ dataverseName, datasetName, indexName, temp);
// prepare callback
JobId jobId = ((JobEventListenerFactory)
spec.getJobletEventListenerFactory()).getJobId();
@@ -2170,9 +2169,9 @@
IBinaryTokenizerFactory tokenizerFactory =
NonTaggedFormatUtil.getBinaryTokenizerFactory(
secondaryKeyType.getTypeTag(), indexType,
secondaryIndex.getGramLength());
- Pair<IFileSplitProvider, AlgebricksPartitionConstraint>
splitsAndConstraint =
-
splitProviderAndPartitionConstraintsForDataset(dataverseName, datasetName,
indexName,
- dataset.getDatasetDetails().isTemp());
+ Pair<IFileSplitProvider, AlgebricksPartitionConstraint>
splitsAndConstraint = splitProviderAndPartitionConstraintsForDataset(
+ dataverseName, datasetName, indexName,
+ dataset.getDatasetDetails().isTemp());
// Generate Output Record format
ISerializerDeserializer<?>[] tokenKeyPairFields = new
ISerializerDeserializer[numTokenKeyPairFields];
diff --git
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java
index 3c31f00..af2328d 100644
---
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java
+++
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java
@@ -53,6 +53,8 @@
public IBinaryComparatorFactoryProvider
getBinaryComparatorFactoryProvider();
+ public IBinaryHashFunctionFactoryProvider
getPartitioningHashFunctionFactoryProvider();
+
public ITypeTraitProvider getTypeTraitProvider();
public IBinaryBooleanInspectorFactory getBinaryBooleanInspectorFactory();
diff --git
a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormatProvider.java
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormatProvider.java
new file mode 100644
index 0000000..44c6f7b
--- /dev/null
+++
b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormatProvider.java
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+package org.apache.asterix.formats.base;
+
+@FunctionalInterface
+public interface IDataFormatProvider {
+
+ IDataFormat getDataFormat();
+
+}
diff --git
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
index c046743..2f32e5a 100644
---
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
+++
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/formats/NonTaggedDataFormat.java
@@ -176,8 +176,13 @@
}
@Override
+ public IBinaryHashFunctionFactoryProvider
getPartitioningHashFunctionFactoryProvider() {
+ return AqlBinaryHashFunctionFactoryProvider.INSTANCE;
+ }
+
+ @Override
public ISerializerDeserializerProvider getSerdeProvider() {
- return AqlSerializerDeserializerProvider.INSTANCE; // done
+ return AqlSerializerDeserializerProvider.INSTANCE;
}
@Override
@@ -318,7 +323,7 @@
new MutableObject<ILogicalExpression>(new
VariableReferenceExpression(METADATA_DUMMY_VAR)),
new MutableObject<ILogicalExpression>(
new ConstantExpression(new
AsterixConstantValue(new AInt32(i)))));
- return new Triple<IScalarEvaluatorFactory,
ScalarFunctionCallExpression, IAType>(evalFactory,
+ return new Triple<>(evalFactory,
partitionFun, recType.getFieldTypes()[i]);
}
}
@@ -340,7 +345,7 @@
ScalarFunctionCallExpression partitionFun = new
ScalarFunctionCallExpression(finfoAccess,
new MutableObject<ILogicalExpression>(new
VariableReferenceExpression(METADATA_DUMMY_VAR)),
new MutableObject<ILogicalExpression>(new
ConstantExpression(new AsterixConstantValue(as))));
- return new Triple<IScalarEvaluatorFactory,
ScalarFunctionCallExpression, IAType>(evalFactory, partitionFun,
+ return new Triple<>(evalFactory, partitionFun,
recType.getSubFieldType(fldName));
}
throw new AlgebricksException("Could not find field " + fldName + " in
the schema.");
@@ -541,7 +546,7 @@
IAType t = (IAType)
context.getType(fce.getArguments().get(0).getValue());
AOrderedList fieldPath = (AOrderedList)
(((AsterixConstantValue) ((ConstantExpression) fce
.getArguments().get(1).getValue()).getValue()).getObject());
- List<String> listFieldPath = new ArrayList<String>();
+ List<String> listFieldPath = new ArrayList<>();
for (int i = 0; i < fieldPath.size(); i++) {
listFieldPath.add(((AString)
fieldPath.getItem(i)).getStringValue());
}
diff --git
a/hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java
b/hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java
index deed53d..c04d0be 100644
---
a/hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java
+++
b/hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java
@@ -53,6 +53,7 @@
protected ISerializerDeserializerProvider serializerDeserializerProvider;
protected IBinaryHashFunctionFactoryProvider hashFunctionFactoryProvider;
protected IBinaryHashFunctionFamilyProvider hashFunctionFamilyProvider;
+ protected IBinaryHashFunctionFactoryProvider
partitioningHashFunctionFactoryProvider;
protected IBinaryComparatorFactoryProvider comparatorFactoryProvider;
protected IBinaryBooleanInspectorFactory binaryBooleanInspectorFactory;
protected IBinaryIntegerInspectorFactory binaryIntegerInspectorFactory;
@@ -98,10 +99,6 @@
public void
setHashFunctionFactoryProvider(IBinaryHashFunctionFactoryProvider
hashFunctionFactoryProvider) {
this.hashFunctionFactoryProvider = hashFunctionFactoryProvider;
- }
-
- public IBinaryHashFunctionFactoryProvider getHashFunctionFactoryProvider()
{
- return hashFunctionFactoryProvider;
}
public void
setHashFunctionFamilyProvider(IBinaryHashFunctionFamilyProvider
hashFunctionFamilyProvider) {
@@ -242,4 +239,9 @@
return conflictingTypeResolver;
}
+ public void setPartitioningHashFunctionFactory(
+ IBinaryHashFunctionFactoryProvider
partitioningHashFunctionFactoryProvider) {
+ this.partitioningHashFunctionFactoryProvider =
partitioningHashFunctionFactoryProvider;
+ }
+
}
diff --git
a/hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/HeuristicCompilerFactoryBuilder.java
b/hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/HeuristicCompilerFactoryBuilder.java
index 311aa43..db50bd3 100644
---
a/hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/HeuristicCompilerFactoryBuilder.java
+++
b/hyracks-fullstack/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/HeuristicCompilerFactoryBuilder.java
@@ -95,13 +95,14 @@
IJobletEventListenerFactory
jobEventListenerFactory) throws AlgebricksException {
AlgebricksConfig.ALGEBRICKS_LOGGER.fine("Starting Job
Generation.\n");
JobGenContext context = new JobGenContext(null,
metadata, appContext,
- serializerDeserializerProvider,
hashFunctionFactoryProvider, hashFunctionFamilyProvider,
+ serializerDeserializerProvider,
hashFunctionFactoryProvider,
+ hashFunctionFamilyProvider,
partitioningHashFunctionFactoryProvider,
comparatorFactoryProvider, typeTraitProvider,
binaryBooleanInspectorFactory,
binaryIntegerInspectorFactory,
printerProvider, missingWriterFactory,
- normalizedKeyComputerFactoryProvider,
expressionRuntimeProvider, expressionTypeComputer,
- oc, expressionEvalSizeComputer,
partialAggregationTypeComputer,
- predEvaluatorFactoryProvider,
physicalOptimizationConfig.getFrameSize(),
- clusterLocations);
+ normalizedKeyComputerFactoryProvider,
expressionRuntimeProvider,
+ expressionTypeComputer, oc,
expressionEvalSizeComputer,
+ partialAggregationTypeComputer,
predEvaluatorFactoryProvider,
+ physicalOptimizationConfig.getFrameSize(),
clusterLocations);
PlanCompiler pc = new PlanCompiler(context);
return pc.compilePlan(plan, null,
jobEventListenerFactory);
diff --git
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionExchangePOperator.java
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionExchangePOperator.java
index 91dba24..6e3a025 100644
---
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionExchangePOperator.java
+++
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionExchangePOperator.java
@@ -70,7 +70,7 @@
@Override
public void computeDeliveredProperties(ILogicalOperator op,
IOptimizationContext context) {
- IPartitioningProperty p = new UnorderedPartitionedProperty(new
ListSet<LogicalVariable>(hashFields), domain);
+ IPartitioningProperty p = new UnorderedPartitionedProperty(new
ListSet<>(hashFields), domain);
this.deliveredProperties = new StructuralPropertiesVector(p, null);
}
@@ -91,7 +91,7 @@
int[] keys = new int[hashFields.size()];
IBinaryHashFunctionFactory[] hashFunctionFactories = new
IBinaryHashFunctionFactory[hashFields.size()];
int i = 0;
- IBinaryHashFunctionFactoryProvider hashFunProvider =
context.getBinaryHashFunctionFactoryProvider();
+ IBinaryHashFunctionFactoryProvider hashFunProvider =
context.getPartitioningHashFunctionFactoryProvider();
IVariableTypeEnvironment env = context.getTypeEnvironment(op);
for (LogicalVariable v : hashFields) {
keys[i] = opSchema.findVariable(v);
diff --git
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionMergeExchangePOperator.java
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionMergeExchangePOperator.java
index 17322b6..4f79865 100644
---
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionMergeExchangePOperator.java
+++
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/HashPartitionMergeExchangePOperator.java
@@ -82,11 +82,11 @@
@Override
public void computeDeliveredProperties(ILogicalOperator op,
IOptimizationContext context) {
- IPartitioningProperty p = new UnorderedPartitionedProperty(new
ListSet<LogicalVariable>(partitionFields),
+ IPartitioningProperty p = new UnorderedPartitionedProperty(new
ListSet<>(partitionFields),
domain);
AbstractLogicalOperator op2 = (AbstractLogicalOperator)
op.getInputs().get(0).getValue();
List<ILocalStructuralProperty> op2Locals =
op2.getDeliveredPhysicalProperties().getLocalProperties();
- List<ILocalStructuralProperty> locals = new
ArrayList<ILocalStructuralProperty>();
+ List<ILocalStructuralProperty> locals = new ArrayList<>();
for (ILocalStructuralProperty prop : op2Locals) {
if (prop.getPropertyType() == PropertyType.LOCAL_ORDER_PROPERTY) {
locals.add(prop);
@@ -101,8 +101,8 @@
@Override
public PhysicalRequirements
getRequiredPropertiesForChildren(ILogicalOperator op,
IPhysicalPropertiesVector reqdByParent, IOptimizationContext
context) {
- List<ILocalStructuralProperty> orderProps = new
LinkedList<ILocalStructuralProperty>();
- List<OrderColumn> columns = new ArrayList<OrderColumn>();
+ List<ILocalStructuralProperty> orderProps = new LinkedList<>();
+ List<OrderColumn> columns = new ArrayList<>();
for (OrderColumn oc : orderColumns) {
LogicalVariable var = oc.getColumn();
columns.add(new OrderColumn(var, oc.getOrder()));
@@ -126,7 +126,7 @@
IVariableTypeEnvironment env = context.getTypeEnvironment(op);
{
int i = 0;
- IBinaryHashFunctionFactoryProvider hashFunProvider =
context.getBinaryHashFunctionFactoryProvider();
+ IBinaryHashFunctionFactoryProvider hashFunProvider =
context.getPartitioningHashFunctionFactoryProvider();
for (LogicalVariable v : partitionFields) {
keys[i] = opSchema.findVariable(v);
hashFunctionFactories[i] =
hashFunProvider.getBinaryHashFunctionFactory(env.getVarType(v));
@@ -157,7 +157,7 @@
IConnectorDescriptor conn = new
MToNPartitioningMergingConnectorDescriptor(spec, tpcf, sortFields,
comparatorFactories, nkcf);
- return new Pair<IConnectorDescriptor, TargetConstraint>(conn, null);
+ return new Pair<>(conn, null);
}
public List<LogicalVariable> getPartitionFields() {
diff --git
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SortMergeExchangePOperator.java
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SortMergeExchangePOperator.java
index 81f6e6b..fdfef57 100644
---
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SortMergeExchangePOperator.java
+++
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/SortMergeExchangePOperator.java
@@ -94,8 +94,8 @@
pv1 = inp1.getDeliveredPhysicalProperties();
}
- List<OrderColumn> orderColumns = new ArrayList<OrderColumn>();
- List<ILocalStructuralProperty> localProps = new
ArrayList<ILocalStructuralProperty>(sortColumns.length);
+ List<OrderColumn> orderColumns = new ArrayList<>();
+ List<ILocalStructuralProperty> localProps = new
ArrayList<>(sortColumns.length);
for (ILocalStructuralProperty prop : pv1.getLocalProperties()) {
if (prop.getPropertyType() == PropertyType.LOCAL_ORDER_PROPERTY) {
LocalOrderProperty lop = (LocalOrderProperty) prop;
@@ -122,7 +122,7 @@
@Override
public PhysicalRequirements
getRequiredPropertiesForChildren(ILogicalOperator op,
IPhysicalPropertiesVector reqdByParent, IOptimizationContext
context) {
- List<ILocalStructuralProperty> localProps = new
ArrayList<ILocalStructuralProperty>(sortColumns.length);
+ List<ILocalStructuralProperty> localProps = new
ArrayList<>(sortColumns.length);
localProps.add(new LocalOrderProperty(Arrays.asList(sortColumns)));
StructuralPropertiesVector[] r = new StructuralPropertiesVector[] {
new StructuralPropertiesVector(null,
localProps) };
@@ -146,7 +146,7 @@
Object type = env.getVarType(sortColumns[i].getColumn());
IBinaryComparatorFactoryProvider bcfp =
context.getBinaryComparatorFactoryProvider();
comps[i] = bcfp.getBinaryComparatorFactory(type,
sortColumns[i].getOrder() == OrderKind.ASC);
- IBinaryHashFunctionFactoryProvider bhffp =
context.getBinaryHashFunctionFactoryProvider();
+ IBinaryHashFunctionFactoryProvider bhffp =
context.getPartitioningHashFunctionFactoryProvider();
hashFuns[i] = bhffp.getBinaryHashFunctionFactory(type);
if (i == 0 && nkcfProvider != null && type != null) {
nkcf = nkcfProvider.getNormalizedKeyComputerFactory(type,
sortColumns[i].getOrder() == OrderKind.ASC);
@@ -154,7 +154,7 @@
}
ITuplePartitionComputerFactory tpcf = new
FieldHashPartitionComputerFactory(sortFields, hashFuns);
IConnectorDescriptor conn = new
MToNPartitioningMergingConnectorDescriptor(spec, tpcf, sortFields, comps, nkcf);
- return new Pair<IConnectorDescriptor, TargetConstraint>(conn,
TargetConstraint.ONE);
+ return new Pair<>(conn, TargetConstraint.ONE);
}
}
diff --git
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobGenContext.java
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobGenContext.java
index f46fcaa..e21b3be 100644
---
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobGenContext.java
+++
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobGenContext.java
@@ -48,10 +48,11 @@
public class JobGenContext {
private final IOperatorSchema outerFlowSchema;
- private final Map<ILogicalOperator, IOperatorSchema> schemaMap = new
HashMap<ILogicalOperator, IOperatorSchema>();
+ private final Map<ILogicalOperator, IOperatorSchema> schemaMap = new
HashMap<>();
private final ISerializerDeserializerProvider
serializerDeserializerProvider;
private final IBinaryHashFunctionFactoryProvider
hashFunctionFactoryProvider;
private final IBinaryHashFunctionFamilyProvider hashFunctionFamilyProvider;
+ private final IBinaryHashFunctionFactoryProvider
partitioningHashFunctionFactoryProvider;
private final IBinaryComparatorFactoryProvider comparatorFactoryProvider;
private final IPrinterFactoryProvider printerFactoryProvider;
private final ITypeTraitProvider typeTraitProvider;
@@ -75,6 +76,7 @@
ISerializerDeserializerProvider serializerDeserializerProvider,
IBinaryHashFunctionFactoryProvider hashFunctionFactoryProvider,
IBinaryHashFunctionFamilyProvider hashFunctionFamilyProvider,
+ IBinaryHashFunctionFactoryProvider
partitioningHashFunctionFactoryProvider,
IBinaryComparatorFactoryProvider comparatorFactoryProvider,
ITypeTraitProvider typeTraitProvider,
IBinaryBooleanInspectorFactory booleanInspectorFactory,
IBinaryIntegerInspectorFactory integerInspectorFactory,
IPrinterFactoryProvider printerFactoryProvider,
@@ -91,6 +93,7 @@
this.serializerDeserializerProvider = serializerDeserializerProvider;
this.hashFunctionFactoryProvider = hashFunctionFactoryProvider;
this.hashFunctionFamilyProvider = hashFunctionFamilyProvider;
+ this.partitioningHashFunctionFactoryProvider =
partitioningHashFunctionFactoryProvider;
this.comparatorFactoryProvider = comparatorFactoryProvider;
this.typeTraitProvider = typeTraitProvider;
this.booleanInspectorFactory = booleanInspectorFactory;
@@ -207,4 +210,8 @@
return typingContext.getOutputTypeEnvironment(op);
}
+ public IBinaryHashFunctionFactoryProvider
getPartitioningHashFunctionFactoryProvider() {
+ return partitioningHashFunctionFactoryProvider;
+ }
+
}
--
To view, visit https://asterix-gerrit.ics.uci.edu/1349
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I7b3e26fbb4a5da9ae4522b228991155f1a06d854
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: abdullah alamoudi <[email protected]>