Repository: phoenix Updated Branches: refs/heads/3.2 43abdea7d -> 61f60c24d
Phoenix-1462 - Create unit test for COUNT DISTINCT using compression (Ram) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/61f60c24 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/61f60c24 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/61f60c24 Branch: refs/heads/3.2 Commit: 61f60c24d3794ae282a8a0114634a49f10a1cf32 Parents: 43abdea Author: Ramkrishna <ramkrishna.s.vasude...@intel.com> Authored: Tue Nov 18 11:50:13 2014 +0530 Committer: Ramkrishna <ramkrishna.s.vasude...@intel.com> Committed: Tue Nov 18 11:50:13 2014 +0530 ---------------------------------------------------------------------- .../end2end/CountDistinctCompressionIT.java | 71 ++++++++++++++++++++ 1 file changed, 71 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/61f60c24/phoenix-core/src/it/java/org/apache/phoenix/end2end/CountDistinctCompressionIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/CountDistinctCompressionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CountDistinctCompressionIT.java new file mode 100644 index 0000000..97703f5 --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/CountDistinctCompressionIT.java @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.phoenix.end2end; + +import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.sql.Connection; +import java.sql.Date; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.Map; +import java.util.Properties; + +import org.apache.phoenix.query.QueryServices; +import org.apache.phoenix.util.PropertiesUtil; +import org.apache.phoenix.util.ReadOnlyProps; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.experimental.categories.Category; + +import com.google.common.collect.Maps; + +@Category(NeedsOwnMiniClusterTest.class) +public class CountDistinctCompressionIT extends BaseOwnClusterHBaseManagedTimeIT { + @BeforeClass + public static void doSetup() throws Exception { + Map<String, String> props = Maps.newHashMapWithExpectedSize(3); + // Must update config before starting server + props.put(QueryServices.DISTINCT_VALUE_COMPRESS_THRESHOLD_ATTRIB, Long.toString(1)); + setUpTestDriver(new ReadOnlyProps(props.entrySet().iterator())); + } + + @Test + public void testDistinctCountOnColumn() throws Exception { + String tenantId = getOrganizationId(); + initATableValues(tenantId, getDefaultSplits(tenantId), (Date)null, getUrl()); + + String query = "SELECT count(DISTINCT A_STRING) FROM aTable"; + + Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); + Connection conn = DriverManager.getConnection(getUrl(), props); + try { + PreparedStatement statement = conn.prepareStatement(query); + ResultSet rs = statement.executeQuery(); + assertTrue(rs.next()); + assertEquals(3, rs.getLong(1)); + assertFalse(rs.next()); + } finally { + conn.close(); + } + } +}