diff --git a/presto-pinot-toolkit/src/main/java/com/facebook/presto/pinot/PinotConfig.java b/presto-pinot-toolkit/src/main/java/com/facebook/presto/pinot/PinotConfig.java index 2e9c2120b4131..872e7a9fd4f4d 100644 --- a/presto-pinot-toolkit/src/main/java/com/facebook/presto/pinot/PinotConfig.java +++ b/presto-pinot-toolkit/src/main/java/com/facebook/presto/pinot/PinotConfig.java @@ -104,7 +104,7 @@ public class PinotConfig private int fetchRetryCount = 2; private boolean useDateTrunc; private int nonAggregateLimitForBrokerQueries = DEFAULT_NON_AGGREGATE_LIMIT_FOR_BROKER_QUERIES; - private boolean pushdownTopNBrokerQueries; + private boolean pushdownTopNBrokerQueries = true; private String grpcHost; private int grpcPort = DEFAULT_PROXY_GRPC_PORT; private boolean useProxy; diff --git a/presto-pinot-toolkit/src/test/java/com/facebook/presto/pinot/TestPinotConfig.java b/presto-pinot-toolkit/src/test/java/com/facebook/presto/pinot/TestPinotConfig.java index 47eea9b129f49..3b76421a789ad 100644 --- a/presto-pinot-toolkit/src/test/java/com/facebook/presto/pinot/TestPinotConfig.java +++ b/presto-pinot-toolkit/src/test/java/com/facebook/presto/pinot/TestPinotConfig.java @@ -67,7 +67,7 @@ public void testDefaults() .setNumSegmentsPerSplit(1) .setFetchRetryCount(2) .setMarkDataFetchExceptionsAsRetriable(true) - .setPushdownTopNBrokerQueries(false) + .setPushdownTopNBrokerQueries(true) .setIgnoreEmptyResponses(false) .setUseDateTrunc(false) .setForbidSegmentQueries(false) @@ -113,7 +113,7 @@ public void testExplicitPropertyMappings() .put("pinot.non-aggregate-limit-for-broker-queries", "10") .put("pinot.use-date-trunc", "true") .put("pinot.limit-large-for-segment", "100") - .put("pinot.pushdown-topn-broker-queries", "true") + .put("pinot.pushdown-topn-broker-queries", "false") .put("pinot.forbid-segment-queries", "true") .put("pinot.use-streaming-for-segment-queries", "true") .put("pinot.streaming-server-grpc-max-inbound-message-bytes", "65536") @@ -160,7 +160,7 @@ public void testExplicitPropertyMappings() .setMarkDataFetchExceptionsAsRetriable(false) .setNonAggregateLimitForBrokerQueries(10) .setLimitLargeForSegment(100) - .setPushdownTopNBrokerQueries(true) + .setPushdownTopNBrokerQueries(false) .setForbidSegmentQueries(true) .setUseStreamingForSegmentQueries(true) .setStreamingServerGrpcMaxInboundMessageBytes(65536) diff --git a/presto-pinot-toolkit/src/test/java/com/facebook/presto/pinot/query/TestPinotQueryGeneratorSql.java b/presto-pinot-toolkit/src/test/java/com/facebook/presto/pinot/query/TestPinotQueryGeneratorSql.java index e2a5af2b8bc0f..f1108ef594897 100644 --- a/presto-pinot-toolkit/src/test/java/com/facebook/presto/pinot/query/TestPinotQueryGeneratorSql.java +++ b/presto-pinot-toolkit/src/test/java/com/facebook/presto/pinot/query/TestPinotQueryGeneratorSql.java @@ -29,7 +29,7 @@ import java.util.Optional; -import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertTrue; public class TestPinotQueryGeneratorSql extends TestPinotQueryGenerator @@ -216,7 +216,7 @@ public void testAggregationWithOrderByPushDownInTopN() } @Test - public void testDefaultNoTopNPushdown() + public void testDefaultTopNPushdown() { PlanBuilder planBuilder = createPlanBuilder(defaultSessionHolder); TableScanNode tableScanNode = tableScan(planBuilder, pinotTable, city, fare); @@ -225,14 +225,14 @@ public void testDefaultNoTopNPushdown() .source(tableScanNode) .singleGroupingSet(variable("city")) .addAggregation(planBuilder.variable("sum_fare"), getRowExpression("sum(fare)", defaultSessionHolder))); - pinotConfig.setPushdownTopNBrokerQueries(false); + pinotConfig.setPushdownTopNBrokerQueries(true); TopNNode topN = new TopNNode(Optional.empty(), planBuilder.getIdAllocator().getNextId(), aggregationNode, 1000, new OrderingScheme(ImmutableList.of(new Ordering(variable("sum_fare"), SortOrder.ASC_NULLS_FIRST))), TopNNode.Step.SINGLE); Optional generatedQuery = new PinotQueryGenerator(pinotConfig, functionAndTypeManager, functionAndTypeManager, standardFunctionResolution) .generate(topN, defaultSessionHolder.getConnectorSession()); - assertFalse(generatedQuery.isPresent()); + assertTrue(generatedQuery.isPresent()); SessionHolder sessionHolder = new SessionHolder(pinotConfig); testPinotQuery( pinotConfig, @@ -240,6 +240,13 @@ public void testDefaultNoTopNPushdown() "SELECT city, sum(fare) FROM realtimeOnly GROUP BY city LIMIT 10000", sessionHolder, ImmutableMap.of()); + + testPinotQuery( + pinotConfig, + topN, + "SELECT city, sum(fare) FROM realtimeOnly GROUP BY city ORDER BY sum(fare) LIMIT 1000", + sessionHolder, + ImmutableMap.of()); } @Test