>From Ali Alsuliman <[email protected]>:
Ali Alsuliman has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20956?usp=email )
Change subject: [ASTERIXDB-3700][RT] Extend BTree search tuple filter
......................................................................
[ASTERIXDB-3700][RT] Extend BTree search tuple filter
- user model changes: no
- storage format changes: no
- interface changes: yes
Details:
Allow extension to provide additional tuple filter for BTree search.
- Add ICompilationContext that can hold information about the request
and compilation.
- Provide this ICompilationContext to Job compilation.
Ext-ref: MB-67953
Change-Id: Ic4791ce4934ff3a1dd9051ddb13847a4bea4e7c2
---
M
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/base/ILangExpressionToPlanTranslatorFactory.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/visitor/ConstantFoldingVisitor.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/app/translator/QueryTranslator.java
A
asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/base/ICompilationContextFactory.java
M
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.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
A
hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/ICompilationContext.java
M
hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/JobGenContext.java
12 files changed, 120 insertions(+), 19 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/56/20956/1
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/base/ILangExpressionToPlanTranslatorFactory.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/base/ILangExpressionToPlanTranslatorFactory.java
index c29dee8..1bb5ff0 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/base/ILangExpressionToPlanTranslatorFactory.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/base/ILangExpressionToPlanTranslatorFactory.java
@@ -25,6 +25,7 @@
import org.apache.asterix.om.base.IAObject;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+@FunctionalInterface
public interface ILangExpressionToPlanTranslatorFactory {
/**
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 30c6623..4c809b4 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
@@ -23,6 +23,7 @@
import org.apache.asterix.algebra.base.ILangExpressionToPlanTranslatorFactory;
import org.apache.asterix.algebra.base.ILangExtension;
import org.apache.asterix.lang.common.base.IAstPrintVisitorFactory;
+import org.apache.asterix.lang.common.base.ICompilationContextFactory;
import org.apache.asterix.lang.common.base.IParserFactory;
import org.apache.asterix.lang.common.base.IRewriterFactory;
@@ -58,6 +59,11 @@
IRuleSetFactory getRuleSetFactory();
/**
+ * @return the compilation context containing information useful during
compilation and job generation
+ */
+ ICompilationContextFactory getCompilationContextFactory();
+
+ /**
* @return all configurable parameters of a language implementation.
*/
Set<String> getCompilerOptions();
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 b6a9295..8d24f65 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
@@ -27,6 +27,7 @@
import org.apache.asterix.common.config.CompilerProperties;
import org.apache.asterix.external.feed.watch.FeedActivityDetails;
import org.apache.asterix.lang.common.base.IAstPrintVisitorFactory;
+import org.apache.asterix.lang.common.base.ICompilationContextFactory;
import org.apache.asterix.lang.common.base.IParserFactory;
import org.apache.asterix.lang.common.base.IRewriterFactory;
import org.apache.asterix.lang.common.statement.StartFeedStatement;
@@ -42,6 +43,7 @@
import org.apache.asterix.optimizer.rules.util.EquivalenceClassUtils;
import org.apache.asterix.translator.SqlppExpressionToPlanTranslator;
import org.apache.asterix.translator.SqlppExpressionToPlanTranslatorFactory;
+import org.apache.hyracks.algebricks.core.jobgen.impl.ICompilationContext;
public class SqlppCompilationProvider implements ILangCompilationProvider {
@@ -82,6 +84,11 @@
}
@Override
+ public ICompilationContextFactory getCompilationContextFactory() {
+ return request -> ICompilationContext.INSTANCE;
+ }
+
+ @Override
public Set<String> getCompilerOptions() {
return new HashSet<>(Set.of(CompilerProperties.COMPILER_JOINMEMORY_KEY,
CompilerProperties.COMPILER_GROUPMEMORY_KEY,
CompilerProperties.COMPILER_SORTMEMORY_KEY,
diff --git
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/visitor/ConstantFoldingVisitor.java
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/visitor/ConstantFoldingVisitor.java
index fe4ada5..2acc502 100644
---
a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/visitor/ConstantFoldingVisitor.java
+++
b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/visitor/ConstantFoldingVisitor.java
@@ -159,7 +159,7 @@
UnnestingPositionWriterFactory.INSTANCE, null,
new ExpressionRuntimeProvider(new
QueryLogicalExpressionJobGen(metadataProvider.getFunctionManager())),
ExpressionTypeComputer.INSTANCE, null, null, null, null,
GlobalConfig.DEFAULT_FRAME_SIZE, null,
- NoOpWarningCollector.INSTANCE, 0, new
PhysicalOptimizationConfig());
+ NoOpWarningCollector.INSTANCE, 0, new
PhysicalOptimizationConfig(), null);
}
public void reset(IOptimizationContext context) {
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 2988c97..ad5b7f9 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
@@ -63,6 +63,7 @@
import org.apache.asterix.formats.base.IDataFormat;
import org.apache.asterix.jobgen.QueryLogicalExpressionJobGen;
import org.apache.asterix.lang.common.base.IAstPrintVisitorFactory;
+import org.apache.asterix.lang.common.base.ICompilationContextFactory;
import org.apache.asterix.lang.common.base.IQueryRewriter;
import org.apache.asterix.lang.common.base.IReturningStatement;
import org.apache.asterix.lang.common.base.IRewriterFactory;
@@ -146,6 +147,7 @@
private final IRuleSetFactory ruleSetFactory;
private final Set<String> configurableParameterNames;
private final ExecutionPlans executionPlans;
+ private final ICompilationContextFactory compilationContextFactory;
private PlanInfo lastPlan;
public APIFramework(ILangCompilationProvider compilationProvider) {
@@ -154,6 +156,7 @@
this.translatorFactory =
compilationProvider.getExpressionToPlanTranslatorFactory();
this.ruleSetFactory = compilationProvider.getRuleSetFactory();
this.configurableParameterNames =
compilationProvider.getCompilerOptions();
+ this.compilationContextFactory =
compilationProvider.getCompilationContextFactory();
executionPlans = new ExecutionPlans();
lastPlan = null;
}
@@ -321,6 +324,7 @@
builder.setSerializerDeserializerProvider(format.getSerdeProvider());
builder.setTypeTraitProvider(format.getTypeTraitProvider());
builder.setNormalizedKeyComputerFactoryProvider(format.getNormalizedKeyComputerFactoryProvider());
+
builder.setCompilationContext(compilationContextFactory.createCompilationContext(requestParameters));
IndexAdvisor indexAdvisor = new IndexAdvisor(isAdviceOnly);
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 de65cb0..d980a0b 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
@@ -4158,7 +4158,7 @@
loadStmt.getDatasetName(), loadStmt.getAdapter(),
properties, loadStmt.dataIsAlreadySorted());
cls.setSourceLocation(stmt.getSourceLocation());
JobSpecification spec = apiFramework.compileQuery(hcc,
metadataProvider, null, 0, null, sessionOutput, cls,
- null, responsePrinter, warningCollector, null, jobFlags);
+ null, responsePrinter, warningCollector,
requestParameters, jobFlags);
afterCompile();
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
bActiveTxn = false;
@@ -4237,7 +4237,7 @@
copyStmt.getDatasetName(), itemType,
externalDetails.getAdapter(), properties);
cls.setSourceLocation(stmt.getSourceLocation());
JobSpecification spec = apiFramework.compileQuery(hcc,
metadataProvider, null, 0, null, sessionOutput, cls,
- null, responsePrinter, warningCollector, null, jobFlags);
+ null, responsePrinter, warningCollector,
requestParameters, jobFlags);
afterCompile();
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
bActiveTxn = false;
@@ -4421,7 +4421,7 @@
try {
metadataProvider.setWriteTransaction(true);
final JobSpecification jobSpec =
- rewriteCompileInsertUpsert(hcc, metadataProvider,
stmtInsertUpsert, stmtParams);
+ rewriteCompileInsertUpsert(hcc, metadataProvider,
stmtInsertUpsert, stmtParams, reqParams);
appCtx.getReceptionist().ensureAuthorized(reqParams,
metadataProvider);
MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
bActiveTxn = false;
@@ -4509,8 +4509,8 @@
new CompiledDeleteStatement(stmtDelete.getVariableExpr(),
databaseName, dataverseName, datasetName,
stmtDelete.getCondition(),
stmtDelete.getVarCounter(), stmtDelete.getQuery());
clfrqs.setSourceLocation(stmt.getSourceLocation());
- JobSpecification jobSpec =
- rewriteCompileQuery(hcc, metadataProvider,
clfrqs.getQuery(), clfrqs, stmtParams, null);
+ JobSpecification jobSpec = rewriteCompileQuery(hcc,
metadataProvider, clfrqs.getQuery(), clfrqs, stmtParams,
+ requestParameters);
appCtx.getReceptionist().ensureAuthorized(requestParameters,
metadataProvider);
afterCompile();
@@ -4600,8 +4600,8 @@
}
protected JobSpecification
rewriteCompileInsertUpsert(IClusterInfoCollector clusterInfoCollector,
- MetadataProvider metadataProvider, InsertStatement insertUpsert,
Map<String, IAObject> stmtParams)
- throws AlgebricksException, ACIDException {
+ MetadataProvider metadataProvider, InsertStatement insertUpsert,
Map<String, IAObject> stmtParams,
+ IRequestParameters reqParams) throws AlgebricksException,
ACIDException {
SourceLocation sourceLoc = insertUpsert.getSourceLocation();
Map<VarIdentifier, IAObject> externalVars =
createExternalVariables(insertUpsert, stmtParams);
@@ -4644,7 +4644,7 @@
// transaction)
return apiFramework.compileQuery(clusterInfoCollector,
metadataProvider, rewrittenInsertUpsert.getQuery(),
rewrittenResult.second, datasetName, sessionOutput, clfrqs,
externalVars, responsePrinter,
- warningCollector, null, jobFlags);
+ warningCollector, reqParams, jobFlags);
}
protected void handleCreateFeedStatement(MetadataProvider
metadataProvider, Statement stmt) throws Exception {
diff --git
a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/base/ICompilationContextFactory.java
b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/base/ICompilationContextFactory.java
new file mode 100644
index 0000000..7b45418
--- /dev/null
+++
b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/base/ICompilationContextFactory.java
@@ -0,0 +1,30 @@
+/*
+ * 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.lang.common.base;
+
+import org.apache.asterix.common.api.ICommonRequestParameters;
+import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.hyracks.algebricks.core.jobgen.impl.ICompilationContext;
+
+@FunctionalInterface
+public interface ICompilationContextFactory {
+
+ ICompilationContext createCompilationContext(ICommonRequestParameters
request) throws CompilationException;
+
+}
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 8963ed1..e160a9a 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
@@ -169,6 +169,7 @@
import
org.apache.hyracks.storage.am.btree.dataflow.BTreeSearchOperatorDescriptor;
import
org.apache.hyracks.storage.am.common.api.IModificationOperationCallbackFactory;
import
org.apache.hyracks.storage.am.common.api.ISearchOperationCallbackFactory;
+import org.apache.hyracks.storage.am.common.api.ITupleFilter;
import org.apache.hyracks.storage.am.common.api.ITupleFilterFactory;
import
org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory;
import
org.apache.hyracks.storage.am.common.dataflow.IndexDataflowHelperFactory;
@@ -350,10 +351,6 @@
return dataFormat;
}
- public void setDataFormat(IDataFormat dataFormat) {
- this.dataFormat = dataFormat;
- }
-
public INamespaceResolver getNamespaceResolver() {
return namespaceResolver;
}
@@ -702,6 +699,12 @@
datasetPartitioningProp.getNumberOfPartitions());
}
+ ITupleFilterFactory extTupleFilterFactory =
getExtTupleFilterFactory(context, dataset, primaryKeyFields);
+ if (extTupleFilterFactory != null) {
+ tupleFilterFactory = tupleFilterFactory == null ?
extTupleFilterFactory
+ : andTupleFilter(tupleFilterFactory,
extTupleFilterFactory);
+ }
+
if (dataset.getDatasetType() == DatasetType.INTERNAL) {
btreeSearchOp = !isSecondary && isPrimaryIndexPointSearch
? new LSMBTreeBatchPointSearchOperatorDescriptor(jobSpec,
outputRecDesc, lowKeyFields,
@@ -728,6 +731,16 @@
return new Pair<>(btreeSearchOp,
datasetPartitioningProp.getConstraints());
}
+ private static ITupleFilterFactory andTupleFilter(ITupleFilterFactory
tupleFilterFactory,
+ ITupleFilterFactory extTupleFilterFactory) {
+ return ctx -> {
+ ITupleFilter tupleFilter =
tupleFilterFactory.createTupleFilter(ctx);
+ ITupleFilter extTupleFilter =
extTupleFilterFactory.createTupleFilter(ctx);
+
+ return (ITupleFilter) tuple -> tupleFilter.accept(tuple) &&
extTupleFilter.accept(tuple);
+ };
+ }
+
public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint>
getRtreeSearchRuntime(JobSpecification jobSpec,
List<LogicalVariable> outputVars, IOperatorSchema opSchema,
IVariableTypeEnvironment typeEnv,
JobGenContext context, boolean retainInput, boolean retainMissing,
@@ -2023,6 +2036,11 @@
return Collections.unmodifiableSet(accessedEntities);
}
+ protected ITupleFilterFactory getExtTupleFilterFactory(JobGenContext ctx,
Dataset ds, int[] pkFields)
+ throws AlgebricksException {
+ return null;
+ }
+
private void validateDatabaseObjectNameImpl(String name, SourceLocation
sourceLoc) throws AlgebricksException {
if (name == null || name.isEmpty()) {
throw new AsterixException(ErrorCode.INVALID_DATABASE_OBJECT_NAME,
sourceLoc, "");
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 b2b223e..8ec2a6f 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
@@ -32,6 +32,7 @@
import
org.apache.hyracks.algebricks.core.algebra.expressions.IMergeAggregationExpressionFactory;
import
org.apache.hyracks.algebricks.core.algebra.expressions.IMissableTypeComputer;
import
org.apache.hyracks.algebricks.core.algebra.expressions.IPartialAggregationTypeComputer;
+import org.apache.hyracks.algebricks.core.jobgen.impl.ICompilationContext;
import org.apache.hyracks.algebricks.core.rewriter.base.AbstractRuleController;
import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
import org.apache.hyracks.algebricks.core.rewriter.base.IRuleSetKind;
@@ -84,6 +85,7 @@
protected AlgebricksAbsolutePartitionConstraint clusterLocations;
protected IWarningCollector warningCollector;
protected long maxWarnings;
+ protected ICompilationContext compilationContext;
public abstract ICompilerFactory create();
@@ -316,4 +318,8 @@
public long getMaxWarnings() {
return maxWarnings;
}
+
+ public void setCompilationContext(ICompilationContext compilationContext) {
+ this.compilationContext = compilationContext;
+ }
}
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 a994fa3..6ab2fb3 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
@@ -84,10 +84,6 @@
private final IOptimizationContextFactory optCtxFactory;
- public HeuristicCompilerFactoryBuilder() {
- this.optCtxFactory = DefaultOptimizationContextFactory.INSTANCE;
- }
-
public HeuristicCompilerFactoryBuilder(IOptimizationContextFactory
optCtxFactory) {
this.optCtxFactory = optCtxFactory;
}
@@ -131,7 +127,7 @@
normalizedKeyComputerFactoryProvider,
expressionRuntimeProvider, expressionTypeComputer, oc,
expressionEvalSizeComputer,
partialAggregationTypeComputer, predEvaluatorFactoryProvider,
physicalOptimizationConfig.getFrameSize(),
clusterLocations, warningCollector, maxWarnings,
- physicalOptimizationConfig);
+ physicalOptimizationConfig, compilationContext);
return new PlanCompiler(context);
}
}
diff --git
a/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/ICompilationContext.java
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/ICompilationContext.java
new file mode 100644
index 0000000..c52477b
--- /dev/null
+++
b/hyracks-fullstack/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/jobgen/impl/ICompilationContext.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.hyracks.algebricks.core.jobgen.impl;
+
+public interface ICompilationContext {
+
+ ICompilationContext INSTANCE = new ICompilationContext() {
+ };
+
+}
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 471380c..85036bb 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
@@ -82,6 +82,7 @@
private final ITypingContext typingContext;
private final IWarningCollector warningCollector;
private final long maxWarnings;
+ private final ICompilationContext compilationContext;
public JobGenContext(IOperatorSchema outerFlowSchema, IMetadataProvider<?,
?> metadataProvider, Object appContext,
ISerializerDeserializerProvider serializerDeserializerProvider,
@@ -99,7 +100,8 @@
IPartialAggregationTypeComputer partialAggregationTypeComputer,
IPredicateEvaluatorFactoryProvider predEvaluatorFactoryProvider,
int frameSize,
AlgebricksAbsolutePartitionConstraint clusterLocations,
IWarningCollector warningCollector,
- long maxWarnings, PhysicalOptimizationConfig
physicalOptimizationConfig) {
+ long maxWarnings, PhysicalOptimizationConfig
physicalOptimizationConfig,
+ ICompilationContext compilationContext) {
this.outerFlowSchema = outerFlowSchema;
this.metadataProvider = metadataProvider;
this.appContext = appContext;
@@ -126,6 +128,7 @@
this.predEvaluatorFactoryProvider = predEvaluatorFactoryProvider;
this.frameSize = frameSize;
this.physicalOptimizationConfig = physicalOptimizationConfig;
+ this.compilationContext = compilationContext;
this.varCounter = 0;
this.warningCollector = warningCollector;
this.maxWarnings = maxWarnings;
@@ -256,4 +259,8 @@
public PhysicalOptimizationConfig getPhysicalOptimizationConfig() {
return physicalOptimizationConfig;
}
+
+ public ICompilationContext getCompilationContext() {
+ return compilationContext;
+ }
}
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/20956?usp=email
To unsubscribe, or for help writing mail filters, visit
https://asterix-gerrit.ics.uci.edu/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: asterixdb
Gerrit-Branch: lumina
Gerrit-Change-Id: Ic4791ce4934ff3a1dd9051ddb13847a4bea4e7c2
Gerrit-Change-Number: 20956
Gerrit-PatchSet: 1
Gerrit-Owner: Ali Alsuliman <[email protected]>