/** * Copyright (C) 2014-2016 LinkedIn Corp. (pinot-core@linkedin.com) * * Licensed 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 com.linkedin.pinot.queries; import com.linkedin.pinot.common.response.broker.BrokerResponseNative; import org.testng.annotations.Test; public class InterSegmentAggregationSingleValueQueriesTest extends BaseSingleValueQueriesTest { private static String GROUP_BY = " group by column9"; @Test public void testCount() { String query = "SELECT COUNT(*) FROM testTable"; BrokerResponseNative brokerResponse = getBrokerResponseForQuery(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 0L, 120000L, new String[]{"120000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 0L, 120000L, new String[]{"24516"}); brokerResponse = getBrokerResponseForQuery(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 120000L, 120000L, new String[]{"64420"}); brokerResponse = getBrokerResponseForQueryWithFilter(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 24516L, 120000L, new String[]{"17080"}); } @Test public void testMax() { String query = "SELECT MAX(column1), MAX(column3) FROM testTable"; BrokerResponseNative brokerResponse = getBrokerResponseForQuery(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 240000L, 120000L, new String[]{"2146952047.00000", "2147419555.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 49032L, 120000L, new String[]{"2146952047.00000", "999813884.00000"}); brokerResponse = getBrokerResponseForQuery(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 360000L, 120000L, new String[]{"2146952047.00000", "2147419555.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 73548L, 120000L, new String[]{"2146952047.00000", "999813884.00000"}); } @Test public void testMin() { String query = "SELECT MIN(column1), MIN(column3) FROM testTable"; BrokerResponseNative brokerResponse = getBrokerResponseForQuery(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 240000L, 120000L, new String[]{"240528.00000", "17891.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 49032L, 120000L, new String[]{"101116473.00000", "20396372.00000"}); brokerResponse = getBrokerResponseForQuery(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 360000L, 120000L, new String[]{"240528.00000", "17891.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 73548L, 120000L, new String[]{"101116473.00000", "20396372.00000"}); } @Test public void testSum() { String query = "SELECT SUM(column1), SUM(column3) FROM testTable"; BrokerResponseNative brokerResponse = getBrokerResponseForQuery(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 240000L, 120000L, new String[]{"129268741751388.00000", "129156636756600.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 49032L, 120000L, new String[]{"27503790384288.00000", "12429178874916.00000"}); brokerResponse = getBrokerResponseForQuery(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 360000L, 120000L, new String[]{"69526727335224.00000", "69225631719808.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 73548L, 120000L, new String[]{"19058003631876.00000", "8606725456500.00000"}); } @Test public void testAvg() { String query = "SELECT AVG(column1), AVG(column3) FROM testTable"; BrokerResponseNative brokerResponse = getBrokerResponseForQuery(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 240000L, 120000L, new String[]{"1077239514.59490", "1076305306.30500"}); brokerResponse = getBrokerResponseForQueryWithFilter(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 49032L, 120000L, new String[]{"1121871038.68037", "506982332.96280"}); brokerResponse = getBrokerResponseForQuery(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 360000L, 120000L, new String[]{"2142595699.00000", "2141451242.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 73548L, 120000L, new String[]{"2142595699.00000", "999309554.00000"}); } @Test public void testMinMaxRange() { String query = "SELECT MINMAXRANGE(column1), MINMAXRANGE(column3) FROM testTable"; BrokerResponseNative brokerResponse = getBrokerResponseForQuery(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 240000L, 120000L, new String[]{"2146711519.00000", "2147401664.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 49032L, 120000L, new String[]{"2045835574.00000", "979417512.00000"}); brokerResponse = getBrokerResponseForQuery(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 360000L, 120000L, new String[]{"2146711519.00000", "2146612605.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 73548L, 120000L, new String[]{"2044094181.00000", "979417512.00000"}); } @Test public void testDistinctCount() { String query = "SELECT DISTINCTCOUNT(column1), DISTINCTCOUNT(column3) FROM testTable"; BrokerResponseNative brokerResponse = getBrokerResponseForQuery(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 240000L, 120000L, new String[]{"6582", "21910"}); brokerResponse = getBrokerResponseForQueryWithFilter(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 49032L, 120000L, new String[]{"1872", "4556"}); brokerResponse = getBrokerResponseForQuery(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 360000L, 120000L, new String[]{"3495", "11961"}); brokerResponse = getBrokerResponseForQueryWithFilter(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 73548L, 120000L, new String[]{"1272", "3289"}); } @Test public void testDistinctCountHLL() { String query = "SELECT DISTINCTCOUNTHLL(column1), DISTINCTCOUNTHLL(column3) FROM testTable"; BrokerResponseNative brokerResponse = getBrokerResponseForQuery(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 240000L, 120000L, new String[]{"5977", "23825"}); brokerResponse = getBrokerResponseForQueryWithFilter(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 49032L, 120000L, new String[]{"1886", "4492"}); brokerResponse = getBrokerResponseForQuery(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 360000L, 120000L, new String[]{"3592", "11889"}); brokerResponse = getBrokerResponseForQueryWithFilter(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 73548L, 120000L, new String[]{"1324", "3197"}); } @Test public void testPercentile50() { String query = "SELECT PERCENTILE50(column1), PERCENTILE50(column3) FROM testTable"; BrokerResponseNative brokerResponse = getBrokerResponseForQuery(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 240000L, 120000L, new String[]{"1107310944.00000", "1080136306.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 49032L, 120000L, new String[]{"1139674505.00000", "505053732.00000"}); brokerResponse = getBrokerResponseForQuery(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 360000L, 120000L, new String[]{"2146791843.00000", "2141451242.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 73548L, 120000L, new String[]{"2142595699.00000", "999309554.00000"}); } @Test public void testPercentile90() { String query = "SELECT PERCENTILE90(column1), PERCENTILE90(column3) FROM testTable"; BrokerResponseNative brokerResponse = getBrokerResponseForQuery(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 240000L, 120000L, new String[]{"1943040511.00000", "1936611145.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 49032L, 120000L, new String[]{"1936730975.00000", "899534534.00000"}); brokerResponse = getBrokerResponseForQuery(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 360000L, 120000L, new String[]{"2146791843.00000", "2147278341.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 73548L, 120000L, new String[]{"2142595699.00000", "999309554.00000"}); } @Test public void testPercentile95() { String query = "SELECT PERCENTILE95(column1), PERCENTILE95(column3) FROM testTable"; BrokerResponseNative brokerResponse = getBrokerResponseForQuery(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 240000L, 120000L, new String[]{"2071559385.00000", "2042409652.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 49032L, 120000L, new String[]{"2096857943.00000", "947763150.00000"}); brokerResponse = getBrokerResponseForQuery(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 360000L, 120000L, new String[]{"2146791843.00000", "2147419555.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 73548L, 120000L, new String[]{"2142595699.00000", "999309554.00000"}); } @Test public void testPercentile99() { String query = "SELECT PERCENTILE99(column1), PERCENTILE99(column3) FROM testTable"; BrokerResponseNative brokerResponse = getBrokerResponseForQuery(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 240000L, 120000L, new String[]{"2139354437.00000", "2125299552.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 49032L, 120000L, new String[]{"2146232405.00000", "990669195.00000"}); brokerResponse = getBrokerResponseForQuery(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 360000L, 120000L, new String[]{"2146791843.00000", "2147419555.00000"}); brokerResponse = getBrokerResponseForQueryWithFilter(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 73548L, 120000L, new String[]{"2146232405.00000", "999309554.00000"}); } @Test public void testPercentileEst50() { String query = "SELECT PERCENTILEEST50(column1), PERCENTILEEST50(column3) FROM testTable"; BrokerResponseNative brokerResponse = getBrokerResponseForQuery(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 240000L, 120000L, new String[]{"1107310944", "1082130431"}); brokerResponse = getBrokerResponseForQueryWithFilter(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 49032L, 120000L, new String[]{"1139674505", "509607935"}); brokerResponse = getBrokerResponseForQuery(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 360000L, 120000L, new String[]{"2146791843", "2141451242"}); brokerResponse = getBrokerResponseForQueryWithFilter(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 73548L, 120000L, new String[]{"2142595699", "999309554"}); } @Test public void testPercentileEst90() { String query = "SELECT PERCENTILEEST90(column1), PERCENTILEEST90(column3) FROM testTable"; BrokerResponseNative brokerResponse = getBrokerResponseForQuery(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 240000L, 120000L, new String[]{"1946157055", "1946157055"}); brokerResponse = getBrokerResponseForQueryWithFilter(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 49032L, 120000L, new String[]{"1939865599", "902299647"}); brokerResponse = getBrokerResponseForQuery(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 360000L, 120000L, new String[]{"2146791843", "2147278341"}); brokerResponse = getBrokerResponseForQueryWithFilter(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 73548L, 120000L, new String[]{"2142595699", "999309554"}); } @Test public void testPercentileEst95() { String query = "SELECT PERCENTILEEST95(column1), PERCENTILEEST95(column3) FROM testTable"; BrokerResponseNative brokerResponse = getBrokerResponseForQuery(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 240000L, 120000L, new String[]{"2080374783", "2051014655"}); brokerResponse = getBrokerResponseForQueryWithFilter(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 49032L, 120000L, new String[]{"2109734911", "950009855"}); brokerResponse = getBrokerResponseForQuery(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 360000L, 120000L, new String[]{"2146791843", "2147419555"}); brokerResponse = getBrokerResponseForQueryWithFilter(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 73548L, 120000L, new String[]{"2142595699", "999309554"}); } @Test public void testPercentileEst99() { String query = "SELECT PERCENTILEEST99(column1), PERCENTILEEST99(column3) FROM testTable"; BrokerResponseNative brokerResponse = getBrokerResponseForQuery(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 240000L, 120000L, new String[]{"2143289343", "2143289343"}); brokerResponse = getBrokerResponseForQueryWithFilter(query); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 49032L, 120000L, new String[]{"2146232405", "991952895"}); brokerResponse = getBrokerResponseForQuery(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 120000L, 0L, 360000L, 120000L, new String[]{"2146791843", "2147419555"}); brokerResponse = getBrokerResponseForQueryWithFilter(query + GROUP_BY); QueriesTestUtils.verifyAggregationResult(brokerResponse, 24516L, 336536L, 73548L, 120000L, new String[]{"2146232405", "999309554"}); } }