From f80bb6c9a2518ff2ef3ad32cd3c3303a3f6769d1 Mon Sep 17 00:00:00 2001 From: Ashutosh Chauhan Date: Thu, 2 Mar 2017 18:56:14 -0800 Subject: [PATCH] HIVE-16098 : Describe table doesn't show stats for partitioned tables --- .../org/apache/hadoop/hive/ql/exec/DDLTask.java | 41 ++++++++++++++++++++-- .../metadata/formatting/MetaDataFormatUtils.java | 14 ++++---- .../metadata/formatting/TextMetaDataFormatter.java | 10 ++++++ .../results/clientpositive/describe_syntax.q.out | 13 +++++++ .../results/clientpositive/describe_table.q.out | 34 ++++++++++++++++-- .../results/clientpositive/describe_xpath.q.out | 6 ++++ ql/src/test/results/clientpositive/stats10.q.out | 5 +++ ql/src/test/results/clientpositive/stats12.q.out | 4 +++ ql/src/test/results/clientpositive/stats13.q.out | 9 +++++ ql/src/test/results/clientpositive/stats14.q.out | 10 ++++++ ql/src/test/results/clientpositive/stats15.q.out | 10 ++++++ ql/src/test/results/clientpositive/stats2.q.out | 9 +++++ ql/src/test/results/clientpositive/stats3.q.out | 5 +++ ql/src/test/results/clientpositive/stats4.q.out | 10 ++++++ ql/src/test/results/clientpositive/stats6.q.out | 4 +++ ql/src/test/results/clientpositive/stats7.q.out | 4 +++ ql/src/test/results/clientpositive/stats8.q.out | 9 +++++ .../results/clientpositive/stats_noscan_1.q.out | 4 +++ 18 files changed, 189 insertions(+), 12 deletions(-) diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index c11ba97..285a314 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -36,6 +36,7 @@ import java.util.AbstractList; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; @@ -69,6 +70,7 @@ import org.apache.hadoop.hive.metastore.PartitionDropOptions; import org.apache.hadoop.hive.metastore.TableType; import org.apache.hadoop.hive.metastore.Warehouse; +import org.apache.hadoop.hive.metastore.api.AggrStats; import org.apache.hadoop.hive.metastore.api.AlreadyExistsException; import org.apache.hadoop.hive.metastore.api.ColumnStatisticsObj; import org.apache.hadoop.hive.metastore.api.CompactionResponse; @@ -3253,7 +3255,7 @@ private int describeTable(Hive db, DescTableDesc descTbl) throws HiveException { DataOutputStream outStream = getOutputStream(descTbl.getResFile()); try { - LOG.info("DDLTask: got data for " + tbl.getTableName()); + LOG.debug("DDLTask: got data for " + tbl.getTableName()); List cols = null; List colStats = null; @@ -3273,6 +3275,26 @@ private int describeTable(Hive db, DescTableDesc descTbl) throws HiveException { if (!descTbl.isFormatted()) { cols.addAll(tbl.getPartCols()); } + + if (tbl.isPartitioned() && part == null) { + // No partitioned specified for partitioned table, lets fetch all. + Map tblProps = tbl.getParameters() == null ? new HashMap() : tbl.getParameters(); + Collection parts = db.getAllPartitionsOf(tbl); + for (String stat : StatsSetupConst.supportedStats) { + boolean state = true; + long statVal = 0l; + for (Partition partition : parts) { + Map props = partition.getParameters(); + state &= StatsSetupConst.areBasicStatsUptoDate(props); + if (props != null && props.get(stat) != null) { + statVal += Long.parseLong(props.get(stat)); + } + } + StatsSetupConst.setBasicStatsState(tblProps, Boolean.toString(state)); + tblProps.put(stat, String.valueOf(statVal)); + } + tbl.setParameters(tblProps); + } } else { cols = Hive.getFieldsFromDeserializer(colPath, deserializer); if (descTbl.isFormatted()) { @@ -3283,7 +3305,20 @@ private int describeTable(Hive db, DescTableDesc descTbl) throws HiveException { List colNames = new ArrayList(); colNames.add(colName.toLowerCase()); if (null == part) { - colStats = db.getTableColumnStatistics(dbTab[0].toLowerCase(), dbTab[1].toLowerCase(), colNames); + if (tbl.isPartitioned()) { + List parts = db.getPartitionNames(dbTab[0].toLowerCase(), dbTab[1].toLowerCase(), (short) -1); + AggrStats aggrStats = db.getAggrColStatsFor(dbTab[0].toLowerCase(), dbTab[1].toLowerCase(), colNames, parts); + colStats = aggrStats.getColStats(); + Map tblProps = tbl.getParameters() == null ? new HashMap() : tbl.getParameters(); + if (parts.size() == aggrStats.getPartsFound()) { + StatsSetupConst.setColumnStatsState(tblProps, colNames); + } else { + StatsSetupConst.removeColumnStatsState(tblProps, colNames); + } + tbl.setParameters(tblProps); + } else { + colStats = db.getTableColumnStatistics(dbTab[0].toLowerCase(), dbTab[1].toLowerCase(), colNames); + } } else { List partitions = new ArrayList(); partitions.add(part.getName()); @@ -3305,7 +3340,7 @@ private int describeTable(Hive db, DescTableDesc descTbl) throws HiveException { cols, descTbl.isFormatted(), descTbl.isExt(), descTbl.isPretty(), isOutputPadded, colStats, pkInfo, fkInfo); - LOG.info("DDLTask: written data for " + tbl.getTableName()); + LOG.debug("DDLTask: written data for " + tbl.getTableName()); } catch (SQLException e) { throw new HiveException(e, ErrorMsg.GENERIC_ERROR, tableName); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java index 03f74dd..f73c610 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java @@ -491,10 +491,10 @@ private static void displayAllParameters(Map params, StringBuild static String getComment(FieldSchema col) { return col.getComment() != null ? col.getComment() : ""; } - + /** * Compares to lists of object T as vectors - * + * * @param the base object type. Must be {@link Comparable} */ private static class VectorComparator> implements Comparator>{ @@ -518,7 +518,7 @@ public int compare(List listA, List listB) { return Integer.compare(listA.size(), listB.size()); } } - + /** * Returns a sorted version of the given list */ @@ -544,7 +544,7 @@ public int compare(List listA, List listB) { Collections.sort(ret,comp); return ret; } - + private static String formatDate(long timeInSeconds) { if (timeInSeconds != 0) { Date date = new Date(timeInSeconds * 1000); @@ -616,7 +616,7 @@ private static void formatOutput(String name, String value, StringBuilder tableI * @param tableInfo The target builder * @param isOutputPadded Should the value printed as a padded string? */ - private static void formatOutput(String name, String value, StringBuilder tableInfo, + protected static void formatOutput(String name, String value, StringBuilder tableInfo, boolean isOutputPadded) { String unescapedValue = (isOutputPadded && value != null) ? value.replaceAll("\\\\n|\\\\r|\\\\r\\\\n","\n"):value; @@ -646,8 +646,8 @@ private static void formatWithIndentation(String colName, String colType, String bcsd.getNumTrues(), bcsd.getNumFalses()); } else if (csd.isSetDecimalStats()) { DecimalColumnStatsData dcsd = csd.getDecimalStats(); - appendColumnStats(tableInfo, convertToString(dcsd.getLowValue()), - convertToString(dcsd.getHighValue()), dcsd.getNumNulls(), dcsd.getNumDVs(), + appendColumnStats(tableInfo, convertToString(dcsd.getLowValue()), + convertToString(dcsd.getHighValue()), dcsd.getNumNulls(), dcsd.getNumDVs(), "", "", "", ""); } else if (csd.isSetDoubleStats()) { DoubleColumnStatsData dcsd = csd.getDoubleStats(); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/TextMetaDataFormatter.java b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/TextMetaDataFormatter.java index b990bda..39a327d 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/TextMetaDataFormatter.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/TextMetaDataFormatter.java @@ -30,10 +30,12 @@ import org.apache.hive.common.util.HiveStringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.apache.commons.lang.StringEscapeUtils; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hive.common.FileUtils; +import org.apache.hadoop.hive.common.StatsSetupConst; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.MetaStoreUtils; import org.apache.hadoop.hive.metastore.api.ColumnStatisticsObj; @@ -132,6 +134,14 @@ public void describeTable(DataOutputStream outStream, String colPath, MetaDataFormatUtils.getAllColumnsInformation(cols, partCols, isFormatted, isOutputPadded, showPartColsSeparately); } else { output = MetaDataFormatUtils.getAllColumnsInformation(cols, isFormatted, isOutputPadded, colStats); + String statsState; + if (tbl.getParameters() != null && (statsState = tbl.getParameters().get(StatsSetupConst.COLUMN_STATS_ACCURATE)) != null) { + StringBuilder str = new StringBuilder(); + MetaDataFormatUtils.formatOutput(StatsSetupConst.COLUMN_STATS_ACCURATE, + isFormatted ? StringEscapeUtils.escapeJava(statsState) : HiveStringUtils.escapeJava(statsState), + str, isOutputPadded); + output = output.concat(str.toString()); + } } outStream.write(output.getBytes("UTF-8")); diff --git a/ql/src/test/results/clientpositive/describe_syntax.q.out b/ql/src/test/results/clientpositive/describe_syntax.q.out index 34f0816..67ae6eb 100644 --- a/ql/src/test/results/clientpositive/describe_syntax.q.out +++ b/ql/src/test/results/clientpositive/describe_syntax.q.out @@ -97,6 +97,11 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} + numFiles 0 + numRows 0 + rawDataSize 0 + totalSize 0 #### A masked pattern was here #### # Storage Information @@ -167,6 +172,11 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} + numFiles 0 + numRows 0 + rawDataSize 0 + totalSize 0 #### A masked pattern was here #### # Storage Information @@ -202,6 +212,7 @@ POSTHOOK: Input: db1@t1 # col_name data_type min max num_nulls distinct_count avg_col_len max_col_len num_trues num_falses comment key1 int from deserializer +COLUMN_STATS_ACCURATE {} PREHOOK: query: DESCRIBE db1.t1 key1 PREHOOK: type: DESCTABLE PREHOOK: Input: db1@t1 @@ -225,6 +236,7 @@ POSTHOOK: Input: db1@t1 # col_name data_type min max num_nulls distinct_count avg_col_len max_col_len num_trues num_falses comment key1 int from deserializer +COLUMN_STATS_ACCURATE {} PREHOOK: query: DESCRIBE t1 key1 PREHOOK: type: DESCTABLE PREHOOK: Input: db1@t1 @@ -248,6 +260,7 @@ POSTHOOK: Input: db1@t1 # col_name data_type min max num_nulls distinct_count avg_col_len max_col_len num_trues num_falses comment key1 int from deserializer +COLUMN_STATS_ACCURATE {} PREHOOK: query: DESCRIBE t1 PARTITION(ds='4', part='5') PREHOOK: type: DESCTABLE PREHOOK: Input: db1@t1 diff --git a/ql/src/test/results/clientpositive/describe_table.q.out b/ql/src/test/results/clientpositive/describe_table.q.out index ad3bfc1..ed0201a 100644 --- a/ql/src/test/results/clientpositive/describe_table.q.out +++ b/ql/src/test/results/clientpositive/describe_table.q.out @@ -186,6 +186,11 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} + numFiles 4 + numRows 2000 + rawDataSize 21248 + totalSize 23248 #### A masked pattern was here #### # Storage Information @@ -206,7 +211,8 @@ POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@srcpart # col_name data_type min max num_nulls distinct_count avg_col_len max_col_len num_trues num_falses comment -key string from deserializer +key string 0 205 2.812 3 from deserializer +COLUMN_STATS_ACCURATE {\"COLUMN_STATS\":{\"key\":\"true\"}} PREHOOK: query: describe formatted srcpart PARTITION(ds='2008-04-08', hr='12') PREHOOK: type: DESCTABLE PREHOOK: Input: default@srcpart @@ -271,6 +277,11 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} + numFiles 4 + numRows 2000 + rawDataSize 21248 + totalSize 23248 #### A masked pattern was here #### # Storage Information @@ -291,7 +302,8 @@ POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@srcpart # col_name data_type min max num_nulls distinct_count avg_col_len max_col_len num_trues num_falses comment -key string from deserializer +key string 0 205 2.812 3 from deserializer +COLUMN_STATS_ACCURATE {\"COLUMN_STATS\":{\"key\":\"true\"}} PREHOOK: query: describe formatted `srcpart` PARTITION(ds='2008-04-08', hr='12') PREHOOK: type: DESCTABLE PREHOOK: Input: default@srcpart @@ -396,6 +408,12 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} +#### A masked pattern was here #### + numFiles 0 + numRows 0 + rawDataSize 0 + totalSize 0 #### A masked pattern was here #### # Storage Information @@ -531,6 +549,7 @@ POSTHOOK: query: DESCRIBE name1.name2 name3 POSTHOOK: type: DESCTABLE POSTHOOK: Input: name1@name2 name3 int from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: DESCRIBE name1.name2 name4 PREHOOK: type: DESCTABLE PREHOOK: Input: name1@name2 @@ -538,6 +557,7 @@ POSTHOOK: query: DESCRIBE name1.name2 name4 POSTHOOK: type: DESCTABLE POSTHOOK: Input: name1@name2 name4 string from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: use name1 PREHOOK: type: SWITCHDATABASE PREHOOK: Input: database:name1 @@ -629,6 +649,7 @@ POSTHOOK: query: DESCRIBE name2 name3 POSTHOOK: type: DESCTABLE POSTHOOK: Input: name1@name2 name3 int from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: DESCRIBE name2 name4 PREHOOK: type: DESCTABLE PREHOOK: Input: name1@name2 @@ -636,6 +657,7 @@ POSTHOOK: query: DESCRIBE name2 name4 POSTHOOK: type: DESCTABLE POSTHOOK: Input: name1@name2 name4 string from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: DESCRIBE name1.name2 PREHOOK: type: DESCTABLE PREHOOK: Input: name1@name2 @@ -651,6 +673,7 @@ POSTHOOK: query: DESCRIBE name1.name2 name3 POSTHOOK: type: DESCTABLE POSTHOOK: Input: name1@name2 name3 int from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: DESCRIBE name1.name2 name4 PREHOOK: type: DESCTABLE PREHOOK: Input: name1@name2 @@ -658,6 +681,7 @@ POSTHOOK: query: DESCRIBE name1.name2 name4 POSTHOOK: type: DESCTABLE POSTHOOK: Input: name1@name2 name4 string from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: DESCRIBE name2.table1 PREHOOK: type: DESCTABLE PREHOOK: Input: name2@table1 @@ -673,6 +697,7 @@ POSTHOOK: query: DESCRIBE name2.table1 col1 POSTHOOK: type: DESCTABLE POSTHOOK: Input: name2@table1 col1 int from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: DESCRIBE name2.table1 col2 PREHOOK: type: DESCTABLE PREHOOK: Input: name2@table1 @@ -680,6 +705,7 @@ POSTHOOK: query: DESCRIBE name2.table1 col2 POSTHOOK: type: DESCTABLE POSTHOOK: Input: name2@table1 col2 string from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: use name2 PREHOOK: type: SWITCHDATABASE PREHOOK: Input: database:name2 @@ -701,6 +727,7 @@ POSTHOOK: query: DESCRIBE table1 col1 POSTHOOK: type: DESCTABLE POSTHOOK: Input: name2@table1 col1 int from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: DESCRIBE table1 col2 PREHOOK: type: DESCTABLE PREHOOK: Input: name2@table1 @@ -708,6 +735,7 @@ POSTHOOK: query: DESCRIBE table1 col2 POSTHOOK: type: DESCTABLE POSTHOOK: Input: name2@table1 col2 string from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: DESCRIBE name2.table1 PREHOOK: type: DESCTABLE PREHOOK: Input: name2@table1 @@ -723,6 +751,7 @@ POSTHOOK: query: DESCRIBE name2.table1 col1 POSTHOOK: type: DESCTABLE POSTHOOK: Input: name2@table1 col1 int from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: DESCRIBE name2.table1 col2 PREHOOK: type: DESCTABLE PREHOOK: Input: name2@table1 @@ -730,6 +759,7 @@ POSTHOOK: query: DESCRIBE name2.table1 col2 POSTHOOK: type: DESCTABLE POSTHOOK: Input: name2@table1 col2 string from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: DROP TABLE IF EXISTS table1 PREHOOK: type: DROPTABLE PREHOOK: Input: name2@table1 diff --git a/ql/src/test/results/clientpositive/describe_xpath.q.out b/ql/src/test/results/clientpositive/describe_xpath.q.out index 4d40fc2..e3d16a9 100644 --- a/ql/src/test/results/clientpositive/describe_xpath.q.out +++ b/ql/src/test/results/clientpositive/describe_xpath.q.out @@ -5,6 +5,7 @@ POSTHOOK: query: describe src_thrift lint POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@src_thrift lint array from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: describe src_thrift lint.$elem$ PREHOOK: type: DESCTABLE PREHOOK: Input: default@src_thrift @@ -12,6 +13,7 @@ POSTHOOK: query: describe src_thrift lint.$elem$ POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@src_thrift $elem$ int from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: describe src_thrift mStringString.$key$ PREHOOK: type: DESCTABLE PREHOOK: Input: default@src_thrift @@ -19,6 +21,7 @@ POSTHOOK: query: describe src_thrift mStringString.$key$ POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@src_thrift $key$ string from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: describe src_thrift mStringString.$value$ PREHOOK: type: DESCTABLE PREHOOK: Input: default@src_thrift @@ -26,6 +29,7 @@ POSTHOOK: query: describe src_thrift mStringString.$value$ POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@src_thrift $value$ string from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: describe src_thrift lintString.$elem$ PREHOOK: type: DESCTABLE PREHOOK: Input: default@src_thrift @@ -35,6 +39,7 @@ POSTHOOK: Input: default@src_thrift myint int from deserializer mystring string from deserializer underscore_int int from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} PREHOOK: query: describe src_thrift lintString.$elem$.myint PREHOOK: type: DESCTABLE PREHOOK: Input: default@src_thrift @@ -42,3 +47,4 @@ POSTHOOK: query: describe src_thrift lintString.$elem$.myint POSTHOOK: type: DESCTABLE POSTHOOK: Input: default@src_thrift myint int from deserializer +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} diff --git a/ql/src/test/results/clientpositive/stats10.q.out b/ql/src/test/results/clientpositive/stats10.q.out index d7519af..b1fba31 100644 --- a/ql/src/test/results/clientpositive/stats10.q.out +++ b/ql/src/test/results/clientpositive/stats10.q.out @@ -493,6 +493,11 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} + numFiles 4 + numRows 1000 + rawDataSize 10624 + totalSize 11624 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/stats12.q.out b/ql/src/test/results/clientpositive/stats12.q.out index 9d13315..5a0bb4c 100644 --- a/ql/src/test/results/clientpositive/stats12.q.out +++ b/ql/src/test/results/clientpositive/stats12.q.out @@ -193,6 +193,10 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + numFiles 4 + numRows 1000 + rawDataSize 10624 + totalSize 23248 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/stats13.q.out b/ql/src/test/results/clientpositive/stats13.q.out index cb90c35..70523e6 100644 --- a/ql/src/test/results/clientpositive/stats13.q.out +++ b/ql/src/test/results/clientpositive/stats13.q.out @@ -143,6 +143,10 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + numFiles 4 + numRows 500 + rawDataSize 5312 + totalSize 23248 #### A masked pattern was here #### # Storage Information @@ -338,6 +342,11 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} + numFiles 0 + numRows 0 + rawDataSize 0 + totalSize 0 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/stats14.q.out b/ql/src/test/results/clientpositive/stats14.q.out index e8fe776..b466fe6 100644 --- a/ql/src/test/results/clientpositive/stats14.q.out +++ b/ql/src/test/results/clientpositive/stats14.q.out @@ -145,6 +145,11 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} + numFiles 3 + numRows 1500 + rawDataSize 15936 + totalSize 17436 #### A masked pattern was here #### # Storage Information @@ -281,6 +286,11 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} + numFiles 3 + numRows 1500 + rawDataSize 15936 + totalSize 17436 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/stats15.q.out b/ql/src/test/results/clientpositive/stats15.q.out index e8fe776..b466fe6 100644 --- a/ql/src/test/results/clientpositive/stats15.q.out +++ b/ql/src/test/results/clientpositive/stats15.q.out @@ -145,6 +145,11 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} + numFiles 3 + numRows 1500 + rawDataSize 15936 + totalSize 17436 #### A masked pattern was here #### # Storage Information @@ -281,6 +286,11 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} + numFiles 3 + numRows 1500 + rawDataSize 15936 + totalSize 17436 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/stats2.q.out b/ql/src/test/results/clientpositive/stats2.q.out index ac1d5cb..a52e582 100644 --- a/ql/src/test/results/clientpositive/stats2.q.out +++ b/ql/src/test/results/clientpositive/stats2.q.out @@ -100,6 +100,10 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + numFiles 4 + numRows 0 + rawDataSize 0 + totalSize 23248 #### A masked pattern was here #### # Storage Information @@ -179,6 +183,11 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} + numFiles 4 + numRows 2000 + rawDataSize 21248 + totalSize 23248 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/stats3.q.out b/ql/src/test/results/clientpositive/stats3.q.out index 14eaf78..7e9eda3 100644 --- a/ql/src/test/results/clientpositive/stats3.q.out +++ b/ql/src/test/results/clientpositive/stats3.q.out @@ -220,6 +220,11 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} + numFiles 1 + numRows 6 + rawDataSize 6 + totalSize 171 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/stats4.q.out b/ql/src/test/results/clientpositive/stats4.q.out index 6105017..247cc96 100644 --- a/ql/src/test/results/clientpositive/stats4.q.out +++ b/ql/src/test/results/clientpositive/stats4.q.out @@ -2466,6 +2466,11 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} + numFiles 2 + numRows 1000 + rawDataSize 10624 + totalSize 11624 #### A masked pattern was here #### # Storage Information @@ -2502,6 +2507,11 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} + numFiles 2 + numRows 1000 + rawDataSize 10624 + totalSize 11624 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/stats6.q.out b/ql/src/test/results/clientpositive/stats6.q.out index f2a756f..613ac58 100644 --- a/ql/src/test/results/clientpositive/stats6.q.out +++ b/ql/src/test/results/clientpositive/stats6.q.out @@ -235,6 +235,10 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + numFiles 4 + numRows 1000 + rawDataSize 10624 + totalSize 23248 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/stats7.q.out b/ql/src/test/results/clientpositive/stats7.q.out index 86adcea..b7946ea 100644 --- a/ql/src/test/results/clientpositive/stats7.q.out +++ b/ql/src/test/results/clientpositive/stats7.q.out @@ -172,6 +172,10 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + numFiles 4 + numRows 1000 + rawDataSize 10624 + totalSize 23248 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/stats8.q.out b/ql/src/test/results/clientpositive/stats8.q.out index 7c8ce8c..636925f 100644 --- a/ql/src/test/results/clientpositive/stats8.q.out +++ b/ql/src/test/results/clientpositive/stats8.q.out @@ -128,6 +128,10 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + numFiles 4 + numRows 500 + rawDataSize 5312 + totalSize 23248 #### A masked pattern was here #### # Storage Information @@ -580,6 +584,11 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} + numFiles 4 + numRows 2000 + rawDataSize 21248 + totalSize 23248 #### A masked pattern was here #### # Storage Information diff --git a/ql/src/test/results/clientpositive/stats_noscan_1.q.out b/ql/src/test/results/clientpositive/stats_noscan_1.q.out index 9e1652b..ec46fa1 100644 --- a/ql/src/test/results/clientpositive/stats_noscan_1.q.out +++ b/ql/src/test/results/clientpositive/stats_noscan_1.q.out @@ -244,6 +244,10 @@ Retention: 0 #### A masked pattern was here #### Table Type: MANAGED_TABLE Table Parameters: + numFiles 4 + numRows 0 + rawDataSize 0 + totalSize 23248 #### A masked pattern was here #### # Storage Information -- 2.10.1 (Apple Git-78)