Repository: hive Updated Branches: refs/heads/master 1dccdeada -> f5ec4b556
HIVE-17720 : Bitvectors are not shown in describe statement on beeline Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/f5ec4b55 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/f5ec4b55 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/f5ec4b55 Branch: refs/heads/master Commit: f5ec4b556dd2449c118da0250715117cb7381179 Parents: 1dccdea Author: Ashutosh Chauhan <[email protected]> Authored: Mon Oct 9 08:06:49 2017 -0700 Committer: Ashutosh Chauhan <[email protected]> Committed: Mon Oct 9 08:06:49 2017 -0700 ---------------------------------------------------------------------- .../test/resources/testconfiguration.properties | 1 + .../formatting/MetaDataFormatUtils.java | 49 ++++++++--- .../beeline/colstats_all_nulls.q.out | 91 ++++++++++++++++++++ 3 files changed, 129 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/f5ec4b55/itests/src/test/resources/testconfiguration.properties ---------------------------------------------------------------------- diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties index 038487f..6b23739 100644 --- a/itests/src/test/resources/testconfiguration.properties +++ b/itests/src/test/resources/testconfiguration.properties @@ -781,6 +781,7 @@ encrypted.query.files=encryption_join_unencrypted_tbl.q,\ encryption_drop_table_in_encrypted_db.q beeline.positive.include=create_merge_compressed.q,\ + colstats_all_nulls.q,\ drop_with_concurrency.q,\ escape_comments.q,\ insert_overwrite_local_directory_1.q,\ http://git-wip-us.apache.org/repos/asf/hive/blob/f5ec4b55/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/MetaDataFormatUtils.java ---------------------------------------------------------------------- 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 159fb2b..aa1a99d 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 @@ -591,33 +591,58 @@ public final class MetaDataFormatUtils { if (isColStatsAvailable) { if (columnStatisticsObj != null) { ColumnStatisticsData csd = columnStatisticsObj.getStatsData(); + // @formatter:off if (csd.isSetBinaryStats()) { BinaryColumnStatsData bcsd = csd.getBinaryStats(); - ret.addAll(Lists.newArrayList("", "", "" + bcsd.getNumNulls(), "", "" + bcsd.getAvgColLen(), "" + bcsd.getMaxColLen(), "", "", "")); + ret.addAll(Lists.newArrayList( "", "", + "" + bcsd.getNumNulls(), "", + "" + bcsd.getAvgColLen(), "" + bcsd.getMaxColLen(), + "", "", + convertToString(bcsd.getBitVectors()))); } else if (csd.isSetStringStats()) { StringColumnStatsData scsd = csd.getStringStats(); - ret.addAll(Lists.newArrayList("", "", "" + scsd.getNumNulls(), "" + scsd.getNumDVs(), "" + scsd.getAvgColLen(), "" + scsd.getMaxColLen(), "", "", - convertToString(scsd.getBitVectors()))); + ret.addAll(Lists.newArrayList( "", "", + "" + scsd.getNumNulls(), "" + scsd.getNumDVs(), + "" + scsd.getAvgColLen(), "" + scsd.getMaxColLen(), + "", "", + convertToString(scsd.getBitVectors()))); } else if (csd.isSetBooleanStats()) { BooleanColumnStatsData bcsd = csd.getBooleanStats(); - ret.addAll(Lists.newArrayList("", "", "" + bcsd.getNumNulls(), "", "", "", "" + bcsd.getNumTrues(), "" + bcsd.getNumFalses(), "")); + ret.addAll(Lists.newArrayList( "", "", + "" + bcsd.getNumNulls(), "", + "", "", + "" + bcsd.getNumTrues(), "" + bcsd.getNumFalses(), + convertToString(bcsd.getBitVectors()))); } else if (csd.isSetDecimalStats()) { DecimalColumnStatsData dcsd = csd.getDecimalStats(); - ret.addAll(Lists.newArrayList(convertToString(dcsd.getLowValue()), convertToString(dcsd.getHighValue()), "" + dcsd.getNumNulls(), - "" + dcsd.getNumDVs(), "", "", "", "", convertToString(dcsd.getBitVectors()))); + ret.addAll(Lists.newArrayList( convertToString(dcsd.getLowValue()), convertToString(dcsd.getHighValue()), + "" + dcsd.getNumNulls(), "" + dcsd.getNumDVs(), + "", "", + "", "", + convertToString(dcsd.getBitVectors()))); } else if (csd.isSetDoubleStats()) { DoubleColumnStatsData dcsd = csd.getDoubleStats(); - ret.addAll(Lists.newArrayList("" + dcsd.getLowValue(), "" + dcsd.getHighValue(), "" + dcsd.getNumNulls(), "" + dcsd.getNumDVs(), "", "", "", "", - convertToString(dcsd.getBitVectors()))); + ret.addAll(Lists.newArrayList( "" + dcsd.getLowValue(), "" + dcsd.getHighValue(), + "" + dcsd.getNumNulls(), "" + dcsd.getNumDVs(), + "", "", + "", "", + convertToString(dcsd.getBitVectors()))); } else if (csd.isSetLongStats()) { LongColumnStatsData lcsd = csd.getLongStats(); - ret.addAll(Lists.newArrayList("" + lcsd.getLowValue(), "" + lcsd.getHighValue(), "" + lcsd.getNumNulls(), "" + lcsd.getNumDVs(), "", "", "", "", - convertToString(lcsd.getBitVectors()))); + ret.addAll(Lists.newArrayList( "" + lcsd.getLowValue(), "" + lcsd.getHighValue(), + "" + lcsd.getNumNulls(), "" + lcsd.getNumDVs(), + "", "", + "", "", + convertToString(lcsd.getBitVectors()))); } else if (csd.isSetDateStats()) { DateColumnStatsData dcsd = csd.getDateStats(); - ret.addAll(Lists.newArrayList(convertToString(dcsd.getLowValue()), convertToString(dcsd.getHighValue()), "" + dcsd.getNumNulls(), - "" + dcsd.getNumDVs(), "", "", "", "", convertToString(dcsd.getBitVectors()))); + ret.addAll(Lists.newArrayList( convertToString(dcsd.getLowValue()), convertToString(dcsd.getHighValue()), + "" + dcsd.getNumNulls(), "" + dcsd.getNumDVs(), + "", "", + "", "", + convertToString(dcsd.getBitVectors()))); } + // @formatter:on } else { ret.addAll(Lists.newArrayList("", "", "", "", "", "", "", "", "")); } http://git-wip-us.apache.org/repos/asf/hive/blob/f5ec4b55/ql/src/test/results/clientpositive/beeline/colstats_all_nulls.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/beeline/colstats_all_nulls.q.out b/ql/src/test/results/clientpositive/beeline/colstats_all_nulls.q.out new file mode 100644 index 0000000..7e26ae0 --- /dev/null +++ b/ql/src/test/results/clientpositive/beeline/colstats_all_nulls.q.out @@ -0,0 +1,91 @@ +PREHOOK: query: CREATE TABLE src_null(a bigint) STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@src_null +POSTHOOK: query: CREATE TABLE src_null(a bigint) STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@src_null +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/nulls.txt' INTO TABLE src_null +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@src_null +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/nulls.txt' INTO TABLE src_null +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@src_null +PREHOOK: query: create table all_nulls as SELECT a, cast(a as double) as b, cast(a as decimal) as c FROM src_null where a is null limit 5 +PREHOOK: type: CREATETABLE_AS_SELECT +PREHOOK: Input: default@src_null +PREHOOK: Output: database:default +PREHOOK: Output: default@all_nulls +POSTHOOK: query: create table all_nulls as SELECT a, cast(a as double) as b, cast(a as decimal) as c FROM src_null where a is null limit 5 +POSTHOOK: type: CREATETABLE_AS_SELECT +POSTHOOK: Input: default@src_null +POSTHOOK: Output: database:default +POSTHOOK: Output: default@all_nulls +POSTHOOK: Lineage: all_nulls.a SIMPLE [] +POSTHOOK: Lineage: all_nulls.b SIMPLE [] +POSTHOOK: Lineage: all_nulls.c SIMPLE [] +PREHOOK: query: analyze table all_nulls compute statistics for columns +PREHOOK: type: QUERY +PREHOOK: Input: default@all_nulls +#### A masked pattern was here #### +POSTHOOK: query: analyze table all_nulls compute statistics for columns +POSTHOOK: type: QUERY +POSTHOOK: Input: default@all_nulls +#### A masked pattern was here #### +PREHOOK: query: describe formatted all_nulls a +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@all_nulls +POSTHOOK: query: describe formatted all_nulls a +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@all_nulls +col_name a NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +data_type bigint NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +min 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +max 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +num_nulls 5 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +distinct_count 1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +avg_col_len NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +max_col_len NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +num_trues NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +num_falses NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +bitVector HL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +comment from deserializer NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\",\"b\":\"true\",\"c\":\"true\"}} NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +PREHOOK: query: describe formatted all_nulls b +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@all_nulls +POSTHOOK: query: describe formatted all_nulls b +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@all_nulls +col_name b NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +data_type double NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +min 0.0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +max 0.0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +num_nulls 5 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +distinct_count 1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +avg_col_len NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +max_col_len NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +num_trues NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +num_falses NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +bitVector HL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +comment from deserializer NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\",\"b\":\"true\",\"c\":\"true\"}} NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +PREHOOK: query: drop table all_nulls +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@all_nulls +PREHOOK: Output: default@all_nulls +POSTHOOK: query: drop table all_nulls +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@all_nulls +POSTHOOK: Output: default@all_nulls +PREHOOK: query: drop table src_null +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@src_null +PREHOOK: Output: default@src_null +POSTHOOK: query: drop table src_null +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@src_null +POSTHOOK: Output: default@src_null
