diff --git a/presto-main/src/main/java/com/facebook/presto/SystemSessionProperties.java b/presto-main/src/main/java/com/facebook/presto/SystemSessionProperties.java index c21f6cbfd6f60..bb05f086f9566 100644 --- a/presto-main/src/main/java/com/facebook/presto/SystemSessionProperties.java +++ b/presto-main/src/main/java/com/facebook/presto/SystemSessionProperties.java @@ -2950,7 +2950,7 @@ public static boolean shouldInferInequalityPredicates(Session session) return session.getSystemProperty(INFER_INEQUALITY_PREDICATES, Boolean.class); } - public static boolean useHBOForScaledWriters(Session session) + public static boolean useHistoryBasedScaledWriters(Session session) { return session.getSystemProperty(ENABLE_HISTORY_BASED_SCALED_WRITER, Boolean.class); } diff --git a/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/ScaledWriterRule.java b/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/ScaledWriterRule.java index 950ce1fdef6ad..cec767bae7672 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/ScaledWriterRule.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/planner/iterative/rule/ScaledWriterRule.java @@ -21,13 +21,15 @@ import java.util.Optional; -import static com.facebook.presto.SystemSessionProperties.useHBOForScaledWriters; +import static com.facebook.presto.SystemSessionProperties.useHistoryBasedScaledWriters; import static com.facebook.presto.sql.planner.plan.Patterns.tableWriterNode; import static com.google.common.base.Preconditions.checkState; public class ScaledWriterRule implements Rule { + private String statsSource; + @Override public Pattern getPattern() { @@ -37,13 +39,26 @@ public Pattern getPattern() @Override public boolean isEnabled(Session session) { - return useHBOForScaledWriters(session); + return useHistoryBasedScaledWriters(session); + } + + @Override + public boolean isCostBased(Session session) + { + return true; + } + + @Override + public String getStatsSource() + { + return statsSource; } @Override public Result apply(TableWriterNode node, Captures captures, Context context) { double taskNumber = context.getStatsProvider().getStats(node).getTableWriterNodeStatsEstimate().getTaskCountIfScaledWriter(); + statsSource = context.getStatsProvider().getStats(node).getSourceInfo().getSourceInfoName(); if (Double.isNaN(taskNumber)) { return Result.empty(); }