You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by td...@apache.org on 2019/05/30 19:06:00 UTC

[phoenix] branch 4.14-HBase-1.3 updated: PHOENIX-5300 NoopStatisticsCollector shouldn't scan any rows (Rushabh Shah)

This is an automated email from the ASF dual-hosted git repository.

tdsilva pushed a commit to branch 4.14-HBase-1.3
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.14-HBase-1.3 by this push:
     new 4223aff  PHOENIX-5300 NoopStatisticsCollector shouldn't scan any rows (Rushabh Shah)
4223aff is described below

commit 4223affeb66179ca19ae23aa6898c4f91cbe5d45
Author: Thomas D'Silva <td...@apache.org>
AuthorDate: Thu May 30 12:04:42 2019 -0700

    PHOENIX-5300 NoopStatisticsCollector shouldn't scan any rows (Rushabh Shah)
---
 .../UngroupedAggregateRegionObserver.java          | 34 ++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java
index 72ee4a3..c10dd07 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java
@@ -117,6 +117,7 @@ import org.apache.phoenix.schema.SortOrder;
 import org.apache.phoenix.schema.TableNotFoundException;
 import org.apache.phoenix.schema.TableRef;
 import org.apache.phoenix.schema.ValueSchema.Field;
+import org.apache.phoenix.schema.stats.NoOpStatisticsCollector;
 import org.apache.phoenix.schema.stats.StatisticsCollectionRunTracker;
 import org.apache.phoenix.schema.stats.StatisticsCollector;
 import org.apache.phoenix.schema.stats.StatisticsCollectorFactory;
@@ -1148,6 +1149,39 @@ public class UngroupedAggregateRegionObserver extends BaseScannerRegionObserver
     
     private RegionScanner collectStats(final RegionScanner innerScanner, StatisticsCollector stats,
             final Region region, final Scan scan, Configuration config) throws IOException {
+        if (stats instanceof  NoOpStatisticsCollector) {
+            logger.info("UPDATE STATISTICS didn't run because stats is not enabled");
+
+            return new BaseRegionScanner(innerScanner) {
+                @Override
+                public HRegionInfo getRegionInfo() {
+                    return region.getRegionInfo();
+                }
+
+                @Override
+                public boolean isFilterDone() {
+                    return true;
+                }
+
+                @Override
+                public void close() throws IOException {
+                    super.close();
+                }
+
+                @Override
+                public boolean next(List<Cell> results) throws IOException {
+                    byte[] rowCountBytes = PLong.INSTANCE.toBytes(Long.valueOf(0));
+                    results.add(KeyValueUtil.newKeyValue(UNGROUPED_AGG_ROW_KEY, SINGLE_COLUMN_FAMILY,
+                            SINGLE_COLUMN, AGG_TIMESTAMP, rowCountBytes, 0, rowCountBytes.length));
+                    return false;
+                }
+
+                @Override
+                public long getMaxResultSize() {
+                    return scan.getMaxResultSize();
+                }
+            };
+        }
         StatsCollectionCallable callable =
                 new StatsCollectionCallable(stats, region, innerScanner, config, scan);
         byte[] asyncBytes = scan.getAttribute(BaseScannerRegionObserver.RUN_UPDATE_STATS_ASYNC_ATTRIB);