PHOENIX-3484 Major compaction does not update statistics based on table specific GUIDE_POSTS_WIDTH
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/66d6bba6 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/66d6bba6 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/66d6bba6 Branch: refs/heads/calcite Commit: 66d6bba6d8fa1d58eb636458f9f7095b8f4f5059 Parents: 3b3d8ad Author: James Taylor <jamestay...@apache.org> Authored: Fri Nov 18 12:41:08 2016 -0800 Committer: James Taylor <jamestay...@apache.org> Committed: Fri Nov 18 13:26:23 2016 -0800 ---------------------------------------------------------------------- .../org/apache/phoenix/end2end/GroupByCaseIT.java | 16 ++++++++++++++++ .../schema/stats/DefaultStatisticsCollector.java | 7 +++---- 2 files changed, 19 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/66d6bba6/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java index bec7337..56a94b3 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/GroupByCaseIT.java @@ -412,8 +412,24 @@ public class GroupByCaseIT extends ParallelStatsDisabledIT { Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); Connection conn = DriverManager.getConnection(getUrl(), props); String tableName = generateUniqueName(); + ResultSet rs = conn.createStatement().executeQuery("SELECT COUNT(*) FROM " + PhoenixDatabaseMetaData.SYSTEM_STATS_NAME + " WHERE " + PhoenixDatabaseMetaData.PHYSICAL_NAME + " ='" + tableName + "'"); + assertTrue(rs.next()); + assertEquals(0,rs.getInt(1)); initAvgGroupTable(conn, tableName, PhoenixDatabaseMetaData.GUIDE_POSTS_WIDTH + "=20 "); testAvgGroupByOrderPreserving(conn, tableName, 13); + rs = conn.createStatement().executeQuery("SELECT COUNT(*) FROM " + PhoenixDatabaseMetaData.SYSTEM_STATS_NAME + " WHERE " + PhoenixDatabaseMetaData.PHYSICAL_NAME + " ='" + tableName + "'"); + assertTrue(rs.next()); + assertEquals(13,rs.getInt(1)); + conn.setAutoCommit(true); + conn.createStatement().execute("DELETE FROM " + PhoenixDatabaseMetaData.SYSTEM_STATS_NAME); + rs = conn.createStatement().executeQuery("SELECT COUNT(*) FROM " + PhoenixDatabaseMetaData.SYSTEM_STATS_NAME + " WHERE " + PhoenixDatabaseMetaData.PHYSICAL_NAME + " ='" + tableName + "'"); + assertTrue(rs.next()); + assertEquals(0,rs.getInt(1)); + TestUtil.doMajorCompaction(conn, tableName); + rs = conn.createStatement().executeQuery("SELECT COUNT(*) FROM " + PhoenixDatabaseMetaData.SYSTEM_STATS_NAME + " WHERE " + PhoenixDatabaseMetaData.PHYSICAL_NAME + " ='" + tableName + "'"); + assertTrue(rs.next()); + assertEquals(13,rs.getInt(1)); + testAvgGroupByOrderPreserving(conn, tableName, 13); conn.createStatement().execute("ALTER TABLE " + tableName + " SET " + PhoenixDatabaseMetaData.GUIDE_POSTS_WIDTH + "=100"); testAvgGroupByOrderPreserving(conn, tableName, 6); conn.createStatement().execute("ALTER TABLE " + tableName + " SET " + PhoenixDatabaseMetaData.GUIDE_POSTS_WIDTH + "=null"); http://git-wip-us.apache.org/repos/asf/phoenix/blob/66d6bba6/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/DefaultStatisticsCollector.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/DefaultStatisticsCollector.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/DefaultStatisticsCollector.java index e8ecb14..17010ac 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/DefaultStatisticsCollector.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/stats/DefaultStatisticsCollector.java @@ -27,7 +27,6 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.KeyValueUtil; -import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.HTableInterface; import org.apache.hadoop.hbase.client.Mutation; @@ -297,15 +296,15 @@ class DefaultStatisticsCollector implements StatisticsCollector { @Override public void init() throws IOException { - this.guidePostsInfoWriterMap.clear(); - maxTimeStamp = MetaDataProtocol.MIN_TABLE_TIMESTAMP; initGuidepostDepth(); } @Override public GuidePostsInfo getGuidePosts(ImmutableBytesPtr fam) { Pair<Long, GuidePostsInfoBuilder> pair = guidePostsInfoWriterMap.get(fam); - if (pair != null) { return pair.getSecond().build(); } + if (pair != null) { + return pair.getSecond().build(); + } return null; }