Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,9 @@
import com.facebook.presto.spi.connector.ConnectorRecordSetProvider;
import com.facebook.presto.spi.connector.ConnectorSplitManager;
import com.facebook.presto.spi.procedure.Procedure;
import com.facebook.presto.spi.relation.DeterminismEvaluator;
import com.facebook.presto.spi.relation.DomainTranslator;
import com.facebook.presto.spi.relation.PredicateCompiler;
import com.facebook.presto.spi.session.PropertyMetadata;
import com.facebook.presto.spi.type.TypeManager;
import com.facebook.presto.split.PageSinkManager;
Expand Down Expand Up @@ -100,6 +102,8 @@ public class ConnectorManager
private final NodeInfo nodeInfo;
private final TransactionManager transactionManager;
private final DomainTranslator domainTranslator;
private final PredicateCompiler predicateCompiler;
private final DeterminismEvaluator determinismEvaluator;

@GuardedBy("this")
private final ConcurrentMap<String, ConnectorFactory> connectorFactories = new ConcurrentHashMap<>();
Expand All @@ -126,7 +130,9 @@ public ConnectorManager(
PageSorter pageSorter,
PageIndexerFactory pageIndexerFactory,
TransactionManager transactionManager,
DomainTranslator domainTranslator)
DomainTranslator domainTranslator,
PredicateCompiler predicateCompiler,
DeterminismEvaluator determinismEvaluator)
{
this.metadataManager = metadataManager;
this.catalogManager = catalogManager;
Expand All @@ -144,6 +150,8 @@ public ConnectorManager(
this.nodeInfo = nodeInfo;
this.transactionManager = transactionManager;
this.domainTranslator = domainTranslator;
this.predicateCompiler = predicateCompiler;
this.determinismEvaluator = determinismEvaluator;
}

@PreDestroy
Expand Down Expand Up @@ -327,7 +335,7 @@ private Connector createConnector(ConnectorId connectorId, ConnectorFactory fact
new FunctionResolution(metadataManager.getFunctionManager()),
pageSorter,
pageIndexerFactory,
new ConnectorRowExpressionService(domainTranslator, new RowExpressionOptimizer(metadataManager)));
new ConnectorRowExpressionService(domainTranslator, new RowExpressionOptimizer(metadataManager), predicateCompiler, determinismEvaluator));

try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(factory.getClass().getClassLoader())) {
return factory.create(connectorId.getCatalogName(), properties, context);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,9 @@
import com.facebook.presto.spi.block.Block;
import com.facebook.presto.spi.block.BlockEncoding;
import com.facebook.presto.spi.block.BlockEncodingSerde;
import com.facebook.presto.spi.relation.DeterminismEvaluator;
import com.facebook.presto.spi.relation.DomainTranslator;
import com.facebook.presto.spi.relation.PredicateCompiler;
import com.facebook.presto.spi.type.Type;
import com.facebook.presto.spi.type.TypeManager;
import com.facebook.presto.spiller.FileSingleStreamSpillerFactory;
Expand All @@ -110,11 +112,13 @@
import com.facebook.presto.sql.gen.JoinFilterFunctionCompiler;
import com.facebook.presto.sql.gen.OrderingCompiler;
import com.facebook.presto.sql.gen.PageFunctionCompiler;
import com.facebook.presto.sql.gen.RowExpressionPredicateCompiler;
import com.facebook.presto.sql.parser.SqlParser;
import com.facebook.presto.sql.parser.SqlParserOptions;
import com.facebook.presto.sql.planner.CompilerConfig;
import com.facebook.presto.sql.planner.LocalExecutionPlanner;
import com.facebook.presto.sql.planner.NodePartitioningManager;
import com.facebook.presto.sql.relational.RowExpressionDeterminismEvaluator;
import com.facebook.presto.sql.relational.RowExpressionDomainTranslator;
import com.facebook.presto.sql.tree.Expression;
import com.facebook.presto.sql.tree.FunctionCall;
Expand Down Expand Up @@ -362,6 +366,8 @@ protected void setup(Binder binder)

// row expression utils
binder.bind(DomainTranslator.class).to(RowExpressionDomainTranslator.class).in(Scopes.SINGLETON);
binder.bind(PredicateCompiler.class).to(RowExpressionPredicateCompiler.class).in(Scopes.SINGLETON);
binder.bind(DeterminismEvaluator.class).to(RowExpressionDeterminismEvaluator.class).in(Scopes.SINGLETON);

// type
binder.bind(TypeRegistry.class).in(Scopes.SINGLETON);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
*/
package com.facebook.presto.sql;

import com.facebook.presto.sql.planner.DeterminismEvaluator;
import com.facebook.presto.sql.planner.ExpressionDeterminismEvaluator;
import com.facebook.presto.sql.planner.Symbol;
import com.facebook.presto.sql.planner.SymbolsExtractor;
import com.facebook.presto.sql.tree.ComparisonExpression;
Expand Down Expand Up @@ -234,12 +234,12 @@ public static Expression combineDisjunctsWithDefault(Collection<Expression> expr

public static Expression filterDeterministicConjuncts(Expression expression)
{
return filterConjuncts(expression, DeterminismEvaluator::isDeterministic);
return filterConjuncts(expression, ExpressionDeterminismEvaluator::isDeterministic);
}

public static Expression filterNonDeterministicConjuncts(Expression expression)
{
return filterConjuncts(expression, not(DeterminismEvaluator::isDeterministic));
return filterConjuncts(expression, not(ExpressionDeterminismEvaluator::isDeterministic));
}

public static Expression filterConjuncts(Expression expression, Predicate<Expression> predicate)
Expand Down Expand Up @@ -295,7 +295,7 @@ private static List<Expression> removeDuplicates(List<Expression> expressions)

ImmutableList.Builder<Expression> result = ImmutableList.builder();
for (Expression expression : expressions) {
if (!DeterminismEvaluator.isDeterministic(expression)) {
if (!ExpressionDeterminismEvaluator.isDeterministic(expression)) {
result.add(expression);
}
else if (!seen.contains(expression)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@
import static com.facebook.presto.sql.analyzer.SemanticErrorCode.VIEW_PARSE_ERROR;
import static com.facebook.presto.sql.analyzer.SemanticErrorCode.WILDCARD_WITHOUT_FROM;
import static com.facebook.presto.sql.analyzer.TypeSignatureProvider.fromTypes;
import static com.facebook.presto.sql.planner.DeterminismEvaluator.isDeterministic;
import static com.facebook.presto.sql.planner.ExpressionDeterminismEvaluator.isDeterministic;
import static com.facebook.presto.sql.planner.ExpressionInterpreter.expressionOptimizer;
import static com.facebook.presto.sql.tree.ExplainType.Type.DISTRIBUTED;
import static com.facebook.presto.sql.tree.FrameBound.Type.CURRENT_ROW;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,15 @@
import com.facebook.presto.spi.block.Block;
import com.facebook.presto.spi.block.BlockBuilder;
import com.facebook.presto.spi.relation.ConstantExpression;
import com.facebook.presto.spi.relation.DeterminismEvaluator;
import com.facebook.presto.spi.relation.InputReferenceExpression;
import com.facebook.presto.spi.relation.LambdaDefinitionExpression;
import com.facebook.presto.spi.relation.RowExpression;
import com.facebook.presto.spi.relation.RowExpressionVisitor;
import com.facebook.presto.sql.gen.LambdaBytecodeGenerator.CompiledLambda;
import com.facebook.presto.sql.planner.CompilerConfig;
import com.facebook.presto.sql.relational.DeterminismEvaluator;
import com.facebook.presto.sql.relational.Expressions;
import com.facebook.presto.sql.relational.RowExpressionDeterminismEvaluator;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
Expand Down Expand Up @@ -114,7 +115,7 @@ public PageFunctionCompiler(Metadata metadata, CompilerConfig config)
public PageFunctionCompiler(Metadata metadata, int expressionCacheSize)
{
this.metadata = requireNonNull(metadata, "metadata is null");
this.determinismEvaluator = new DeterminismEvaluator(metadata.getFunctionManager());
this.determinismEvaluator = new RowExpressionDeterminismEvaluator(metadata.getFunctionManager());

if (expressionCacheSize > 0) {
projectionCache = CacheBuilder.newBuilder()
Expand Down
Loading