You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by GitBox <gi...@apache.org> on 2022/05/13 07:45:31 UTC

[GitHub] [incubator-doris] weizhengte commented on a diff in pull request #8861: [feature-wip](statistics) step4: collect statistics by implementing statistics tasks

weizhengte commented on code in PR #8861:
URL: https://github.com/apache/incubator-doris/pull/8861#discussion_r872096088


##########
fe/fe-core/src/main/java/org/apache/doris/statistics/MetaStatisticsTask.java:
##########
@@ -17,21 +17,85 @@
 
 package org.apache.doris.statistics;
 
+import org.apache.doris.catalog.Catalog;
+import org.apache.doris.catalog.Column;
+import org.apache.doris.catalog.Database;
+import org.apache.doris.catalog.OlapTable;
+import org.apache.doris.catalog.Table;
+import org.apache.doris.common.DdlException;
+
+import com.google.common.collect.Maps;
+
 import java.util.List;
+import java.util.Map;
 
-/*
-A statistics task that directly collects statistics by reading FE meta.
+/**
+ * A statistics task that directly collects statistics by reading FE meta.
+ * e.g. for fixed-length types such as Int type and Long type we get their size from metadata.
  */

Review Comment:
   ok



##########
fe/fe-core/src/main/java/org/apache/doris/statistics/MetaStatisticsTask.java:
##########
@@ -17,21 +17,85 @@
 
 package org.apache.doris.statistics;
 
+import org.apache.doris.catalog.Catalog;
+import org.apache.doris.catalog.Column;
+import org.apache.doris.catalog.Database;
+import org.apache.doris.catalog.OlapTable;
+import org.apache.doris.catalog.Table;
+import org.apache.doris.common.DdlException;
+
+import com.google.common.collect.Maps;
+
 import java.util.List;
+import java.util.Map;
 
-/*
-A statistics task that directly collects statistics by reading FE meta.
+/**
+ * A statistics task that directly collects statistics by reading FE meta.
+ * e.g. for fixed-length types such as Int type and Long type we get their size from metadata.
  */
 public class MetaStatisticsTask extends StatisticsTask {
 
-    public MetaStatisticsTask(long jobId, StatsGranularityDesc granularityDesc,
-                              StatsCategoryDesc categoryDesc, List<StatsType> statsTypeList) {
+    public MetaStatisticsTask(long jobId,
+                              StatsGranularityDesc granularityDesc,
+                              StatsCategoryDesc categoryDesc,
+                              List<StatsType> statsTypeList) {
         super(jobId, granularityDesc, categoryDesc, statsTypeList);
     }
 
     @Override
     public StatisticsTaskResult call() throws Exception {
-        // TODO
-        return null;
+        Map<StatsType, String> statsTypeToValue = Maps.newHashMap();
+        List<StatsType> statsTypeList = getStatsTypeList();
+
+        for (StatsType statsType : statsTypeList) {
+            switch (statsType) {
+                case ROW_COUNT:
+                    getRowCount(statsType, statsTypeToValue);
+                    break;
+                case DATA_SIZE:
+                    getDataSize(statsType, statsTypeToValue);
+                    break;
+                case MAX_SIZE:
+                case AVG_SIZE:
+                    getColSize(statsType, statsTypeToValue);
+                    break;
+                default:
+                    throw new DdlException("Unsupported statistics type(" + statsType + ").");
+            }
+        }
+
+        return new StatisticsTaskResult(granularityDesc, categoryDesc, statsTypeToValue);
+    }
+
+    private void getRowCount(StatsType statsType, Map<StatsType, String> statsTypeToValue) throws DdlException {
+        StatsCategoryDesc categoryDesc = getCategoryDesc();
+        long dbId = categoryDesc.getDbId();
+        long tableId = categoryDesc.getTableId();
+        Database db = Catalog.getCurrentCatalog().getDbOrDdlException(dbId);
+        OlapTable olapTable = (OlapTable) db.getTableOrDdlException(tableId);

Review Comment:
   ok



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org