Skip to content

Commit 0657f45

Browse files
committed
Address some review comments
1 parent 4eebfbe commit 0657f45

File tree

4 files changed

+14
-7
lines changed

4 files changed

+14
-7
lines changed

presto-main-base/src/main/java/com/facebook/presto/metadata/Metadata.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,5 +560,10 @@ default boolean isPushdownSupportedForFilter(Session session, TableHandle tableH
560560

561561
String normalizeIdentifier(Session session, String catalogName, String identifier);
562562

563+
/**
564+
* Attempt to push down the table function invocation into the connector.
565+
* @return {@link Optional#empty()} if the connector doesn't support table function invocation pushdown,
566+
* or an {@code Optional<TableFunctionApplicationResult<TableHandle>>} containing the table handle that will be used in place of the table function invocation.
567+
*/
563568
Optional<TableFunctionApplicationResult<TableHandle>> applyTableFunction(Session session, TableFunctionHandle handle);
564569
}

presto-main-base/src/main/java/com/facebook/presto/operator/RegularTableFunctionPartition.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ private int findFirstNullPosition(int markerChannel)
315315
int end = partitionEnd;
316316
// value at start is not null, value at end is null
317317
while (end - start > 1) {
318-
int mid = start + end >>> 1;
318+
int mid = (start + end) >>> 1;
319319
if (pagesIndex.isNull(markerChannel, mid)) {
320320
end = mid;
321321
}

presto-main-base/src/main/java/com/facebook/presto/sql/planner/PlanOptimizers.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,6 @@
140140
import com.facebook.presto.sql.planner.iterative.rule.RewriteExcludeColumnsFunctionToProjection;
141141
import com.facebook.presto.sql.planner.iterative.rule.RewriteFilterWithExternalFunctionToProject;
142142
import com.facebook.presto.sql.planner.iterative.rule.RewriteSpatialPartitioningAggregation;
143-
import com.facebook.presto.sql.planner.iterative.rule.RewriteTableFunctionToTableScan;
144143
import com.facebook.presto.sql.planner.iterative.rule.RuntimeReorderJoinSides;
145144
import com.facebook.presto.sql.planner.iterative.rule.ScaledWriterRule;
146145
import com.facebook.presto.sql.planner.iterative.rule.SimplifyCardinalityMap;
@@ -157,6 +156,7 @@
157156
import com.facebook.presto.sql.planner.iterative.rule.TransformDistinctInnerJoinToLeftEarlyOutJoin;
158157
import com.facebook.presto.sql.planner.iterative.rule.TransformDistinctInnerJoinToRightEarlyOutJoin;
159158
import com.facebook.presto.sql.planner.iterative.rule.TransformExistsApplyToLateralNode;
159+
import com.facebook.presto.sql.planner.iterative.rule.TransformTableFunctionProcessorToTableScan;
160160
import com.facebook.presto.sql.planner.iterative.rule.TransformTableFunctionToTableFunctionProcessor;
161161
import com.facebook.presto.sql.planner.iterative.rule.TransformUncorrelatedInPredicateSubqueryToDistinctInnerJoin;
162162
import com.facebook.presto.sql.planner.iterative.rule.TransformUncorrelatedInPredicateSubqueryToSemiJoin;
@@ -394,7 +394,7 @@ public PlanOptimizers(
394394
ruleStats,
395395
statsCalculator,
396396
costCalculator,
397-
ImmutableSet.of(new RewriteTableFunctionToTableScan(metadata))));
397+
ImmutableSet.of(new TransformTableFunctionProcessorToTableScan(metadata))));
398398

399399
builder.add(
400400
new IterativeOptimizer(
@@ -894,7 +894,7 @@ public PlanOptimizers(
894894
ruleStats,
895895
statsCalculator,
896896
costCalculator,
897-
ImmutableSet.of(new RewriteTableFunctionToTableScan(metadata), new RewriteExcludeColumnsFunctionToProjection())));
897+
ImmutableSet.of(new TransformTableFunctionProcessorToTableScan(metadata), new RewriteExcludeColumnsFunctionToProjection())));
898898

899899
if (!noExchange) {
900900
builder.add(new ReplicateSemiJoinInDelete()); // Must run before AddExchanges
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,15 @@
5353
* outputVar2 -> my_function(arg1, arg2)_colHandle2
5454
* }
5555
*/
56-
public class RewriteTableFunctionToTableScan
56+
public class TransformTableFunctionProcessorToTableScan
5757
implements Rule<TableFunctionProcessorNode>
5858
{
5959
private static final Pattern<TableFunctionProcessorNode> PATTERN = tableFunctionProcessor()
6060
.with(empty(sources()));
6161

6262
private final Metadata metadata;
6363

64-
public RewriteTableFunctionToTableScan(Metadata metadata)
64+
public TransformTableFunctionProcessorToTableScan(Metadata metadata)
6565
{
6666
this.metadata = requireNonNull(metadata, "metadata is null");
6767
}
@@ -82,7 +82,9 @@ public Result apply(TableFunctionProcessorNode node, Captures captures, Context
8282
}
8383

8484
List<ColumnHandle> columnHandles = result.get().getColumnHandles();
85-
checkState(node.getOutputVariables().size() == columnHandles.size(), "returned table does not match the node's output");
85+
checkState(node.getOutputVariables().size() == columnHandles.size(),
86+
"Connector returned %s columns but TableFunctionProcessorNode expects %s outputs",
87+
columnHandles.size(), node.getOutputVariables().size());
8688
ImmutableMap.Builder<VariableReferenceExpression, ColumnHandle> assignments = ImmutableMap.builder();
8789
for (int i = 0; i < columnHandles.size(); i++) {
8890
assignments.put(node.getOutputVariables().get(i), columnHandles.get(i));

0 commit comments

Comments
 (0)