This is an automated email from the ASF dual-hosted git repository. dkuzmenko pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push: new 10ece7c7538 HIVE-27725: Remove redundant columns in TAB_COL_STATS and PART_COL_STATS tables (Wechar Yu, reviewed by Butao Zhang, Denys Kuzmenko, Zhihua Deng) 10ece7c7538 is described below commit 10ece7c75386256e49cac3d41230ca24540430a5 Author: Wechar Yu <yuwq1...@gmail.com> AuthorDate: Tue Apr 9 22:49:11 2024 +0800 HIVE-27725: Remove redundant columns in TAB_COL_STATS and PART_COL_STATS tables (Wechar Yu, reviewed by Butao Zhang, Denys Kuzmenko, Zhihua Deng) Closes #4744 --- .../upgrade/hive/hive-schema-4.1.0.hive.sql | 10 -- .../ql/ddl/table/info/desc/DescTableOperation.java | 5 +- ql/src/test/queries/clientpositive/sysdb.q | 4 +- .../llap/constraints_explain_ddl.q.out | 152 ++++++++++----------- .../test/results/clientpositive/llap/sysdb.q.out | 23 ++-- .../hadoop/hive/metastore/DirectSqlUpdatePart.java | 47 +++---- .../apache/hadoop/hive/metastore/HMSHandler.java | 52 ++----- .../hadoop/hive/metastore/MetaStoreDirectSql.java | 119 ++++++++++------ .../apache/hadoop/hive/metastore/ObjectStore.java | 36 ++--- .../hadoop/hive/metastore/StatObjectConverter.java | 34 ++--- .../model/MPartitionColumnStatistics.java | 36 ----- .../metastore/model/MTableColumnStatistics.java | 27 ---- .../schematool/SchemaToolTaskMoveDatabase.java | 2 - .../tools/schematool/SchemaToolTaskMoveTable.java | 2 - .../jdbc/queries/FindColumnsWithStatsHandler.java | 11 +- .../src/main/resources/package.jdo | 21 --- .../src/main/sql/derby/hive-schema-4.1.0.derby.sql | 11 +- .../sql/derby/upgrade-4.0.0-to-4.1.0.derby.sql | 14 ++ .../src/main/sql/mssql/hive-schema-4.1.0.mssql.sql | 17 +-- .../sql/mssql/upgrade-4.0.0-to-4.1.0.mssql.sql | 11 ++ .../src/main/sql/mysql/hive-schema-4.1.0.mysql.sql | 11 +- .../sql/mysql/upgrade-4.0.0-to-4.1.0.mysql.sql | 9 ++ .../main/sql/oracle/hive-schema-4.1.0.oracle.sql | 15 +- .../sql/oracle/upgrade-4.0.0-to-4.1.0.oracle.sql | 11 ++ .../sql/postgres/hive-schema-4.1.0.postgres.sql | 23 +--- .../postgres/upgrade-4.0.0-to-4.1.0.postgres.sql | 11 ++ .../hadoop/hive/metastore/TestObjectStore.java | 48 ++++++- .../hadoop/hive/metastore/tools/BenchmarkTool.java | 10 ++ .../hadoop/hive/metastore/tools/HMSBenchmarks.java | 48 +++++++ .../hadoop/hive/metastore/tools/HMSClient.java | 11 ++ .../apache/hadoop/hive/metastore/tools/Util.java | 31 +++++ 31 files changed, 446 insertions(+), 416 deletions(-) diff --git a/metastore/scripts/upgrade/hive/hive-schema-4.1.0.hive.sql b/metastore/scripts/upgrade/hive/hive-schema-4.1.0.hive.sql index 7a1cef3f97a..bd478dee30d 100644 --- a/metastore/scripts/upgrade/hive/hive-schema-4.1.0.hive.sql +++ b/metastore/scripts/upgrade/hive/hive-schema-4.1.0.hive.sql @@ -719,8 +719,6 @@ FROM CREATE EXTERNAL TABLE IF NOT EXISTS `TAB_COL_STATS` ( `CS_ID` bigint, - `DB_NAME` string, - `TABLE_NAME` string, `COLUMN_NAME` string, `COLUMN_TYPE` string, `TBL_ID` bigint, @@ -746,8 +744,6 @@ TBLPROPERTIES ( "hive.sql.query" = "SELECT \"CS_ID\", - \"DB_NAME\", - \"TABLE_NAME\", \"COLUMN_NAME\", \"COLUMN_TYPE\", \"TBL_ID\", @@ -771,9 +767,6 @@ FROM CREATE EXTERNAL TABLE IF NOT EXISTS `PART_COL_STATS` ( `CS_ID` bigint, - `DB_NAME` string, - `TABLE_NAME` string, - `PARTITION_NAME` string, `COLUMN_NAME` string, `COLUMN_TYPE` string, `PART_ID` bigint, @@ -799,9 +792,6 @@ TBLPROPERTIES ( "hive.sql.query" = "SELECT \"CS_ID\", - \"DB_NAME\", - \"TABLE_NAME\", - \"PARTITION_NAME\", \"COLUMN_NAME\", \"COLUMN_TYPE\", \"PART_ID\", diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/desc/DescTableOperation.java b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/desc/DescTableOperation.java index 940f80526d2..f6ec72bc609 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/desc/DescTableOperation.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/info/desc/DescTableOperation.java @@ -31,7 +31,6 @@ import org.apache.hadoop.hive.common.StatsSetupConst; import org.apache.hadoop.hive.common.TableName; import org.apache.hadoop.hive.common.type.HiveDecimal; import org.apache.hadoop.hive.conf.HiveConf; -import org.apache.hadoop.hive.metastore.HMSHandler; import org.apache.hadoop.hive.metastore.StatObjectConverter; import org.apache.hadoop.hive.metastore.TableType; import org.apache.hadoop.hive.metastore.api.AggrStats; @@ -217,9 +216,7 @@ public class DescTableOperation extends DDLOperation<DescTableDesc> { } } else { List<String> partitions = new ArrayList<String>(); - // The partition name is converted to lowercase before generating the stats. So we should use the same - // lower case name to get the stats. - String partName = HMSHandler.lowerCaseConvertPartName(part.getName()); + String partName = part.getName(); partitions.add(partName); cols.addAll(Hive.getFieldsFromDeserializer(desc.getColumnPath(), deserializer, context.getConf())); Map<String, List<ColumnStatisticsObj>> partitionColumnStatistics = context.getDb().getPartitionColumnStatistics( diff --git a/ql/src/test/queries/clientpositive/sysdb.q b/ql/src/test/queries/clientpositive/sysdb.q index 4ecd1881850..9370c44ddbf 100644 --- a/ql/src/test/queries/clientpositive/sysdb.q +++ b/ql/src/test/queries/clientpositive/sysdb.q @@ -102,9 +102,9 @@ select column_name, grantor, principal_name from tbl_col_privs order by column_n select grantor, principal_name from tbl_privs order by grantor, principal_name limit 5; -select table_name, column_name, num_nulls, num_distincts from tab_col_stats order by table_name, column_name limit 10; +select tbls.tbl_name, column_name, num_nulls, num_distincts from tab_col_stats inner join tbls on tab_col_stats.tbl_id=tbls.tbl_id join dbs on tbls.db_id=dbs.db_id order by tbls.tbl_name, column_name limit 10; -select table_name, partition_name, column_name, num_nulls, num_distincts from part_col_stats order by table_name, partition_name, column_name limit 10; +select tbls.tbl_name, partitions.part_name, column_name, num_nulls, num_distincts from part_col_stats inner join partitions on part_col_stats.part_id=partitions.part_id inner join tbls on partitions.tbl_id=tbls.tbl_id order by tbls.tbl_name, partitions.part_name, column_name limit 10; select schema_version from version order by schema_version limit 5; diff --git a/ql/src/test/results/clientpositive/llap/constraints_explain_ddl.q.out b/ql/src/test/results/clientpositive/llap/constraints_explain_ddl.q.out index d2daeff2d7f..6c01f90cdcb 100644 --- a/ql/src/test/results/clientpositive/llap/constraints_explain_ddl.q.out +++ b/ql/src/test/results/clientpositive/llap/constraints_explain_ddl.q.out @@ -901,58 +901,58 @@ ALTER TABLE `default`.`customer_removal_n0` ADD CONSTRAINT `#### A masked patter ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS SET('numRows'='1','rawDataSize'='22' ); ALTER TABLE `default`.`dates_removal_n0` ADD CONSTRAINT `#### A masked pattern was here ####` PRIMARY KEY (`d_datekey`,`d_id`) DISABLE NOVALIDATE RELY; ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS SET('numRows'='2','rawDataSize'='102' ); -ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_address` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_address` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_city` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_city` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_custkey` SET('lowValue'='3','highValue'='3','numNulls'='0','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_custkey` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEBgq/rqgE= -ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_mktsegment` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_mktsegment` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_name` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_name` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_address` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_address` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_city` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_city` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_nation` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_nation` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_phone` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_phone` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_region` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_region` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_date` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_date` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_phone` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_phone` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_mktsegment` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_mktsegment` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_datekey` SET('lowValue'='3','highValue'='3','numNulls'='0','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_datekey` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEBgq/rqgE= -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_daynuminmonth` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_daynuminmonth` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_daynuminweek` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_daynuminweek` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_daynuminyear` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_daynuminyear` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_dayofweek` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_dayofweek` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_holidayfl` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_holidayfl` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_id` SET('lowValue'='0','highValue'='1','numNulls'='0','numDVs'='2' ); -- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_id` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAICwfO+SIDgz8///////wE= -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_lastdayinmonthfl` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_lastdayinmonthfl` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_lastdayinweekfl` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_lastdayinweekfl` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_date` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_date` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_dayofweek` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_dayofweek` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_month` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_month` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_year` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_year` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_yearmonthnum` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_yearmonthnum` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_yearmonth` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_yearmonth` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_daynuminweek` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_daynuminweek` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_daynuminmonth` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_daynuminmonth` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_daynuminyear` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_daynuminyear` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_monthnuminyear` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_monthnuminyear` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_weeknuminyear` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_weeknuminyear` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_sellingseason` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_sellingseason` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_lastdayinweekfl` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_lastdayinweekfl` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_lastdayinmonthfl` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_lastdayinmonthfl` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_holidayfl` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_holidayfl` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_weekdayfl` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_weekdayfl` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_weeknuminyear` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_weeknuminyear` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_year` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_year` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_yearmonth` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_yearmonth` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_yearmonthnum` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_yearmonthnum` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA @@ -1109,42 +1109,42 @@ TBLPROPERTIES ( #### A masked pattern was here #### ALTER TABLE `default`.`dates_removal_n0` ADD CONSTRAINT `#### A masked pattern was here ####` PRIMARY KEY (`d_datekey`,`d_id`) DISABLE NOVALIDATE RELY; ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS SET('numRows'='2','rawDataSize'='102' ); -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_date` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_date` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_datekey` SET('lowValue'='3','highValue'='3','numNulls'='0','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_datekey` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEBgq/rqgE= -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_daynuminmonth` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_daynuminmonth` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_daynuminweek` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_daynuminweek` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_daynuminyear` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_daynuminyear` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_dayofweek` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_dayofweek` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_holidayfl` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_holidayfl` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_id` SET('lowValue'='0','highValue'='1','numNulls'='0','numDVs'='2' ); -- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_id` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAICwfO+SIDgz8///////wE= -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_lastdayinmonthfl` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_lastdayinmonthfl` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_lastdayinweekfl` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_lastdayinweekfl` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_date` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_date` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_dayofweek` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_dayofweek` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_month` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_month` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_year` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_year` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_yearmonthnum` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_yearmonthnum` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_yearmonth` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_yearmonth` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_daynuminweek` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_daynuminweek` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_daynuminmonth` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_daynuminmonth` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_daynuminyear` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_daynuminyear` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_monthnuminyear` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_monthnuminyear` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_weeknuminyear` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_weeknuminyear` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_sellingseason` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_sellingseason` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_lastdayinweekfl` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_lastdayinweekfl` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_lastdayinmonthfl` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_lastdayinmonthfl` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_holidayfl` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_holidayfl` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_weekdayfl` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_weekdayfl` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_weeknuminyear` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_weeknuminyear` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_year` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_year` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_yearmonth` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_yearmonth` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`dates_removal_n0` UPDATE STATISTICS FOR COLUMN `d_yearmonthnum` SET('lowValue'='0','highValue'='0','numNulls'='2','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`dates_removal_n0` FOR COLUMN `d_yearmonthnum` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA @@ -1312,22 +1312,22 @@ TBLPROPERTIES ( #### A masked pattern was here #### ALTER TABLE `default`.`customer_removal_n0` ADD CONSTRAINT `#### A masked pattern was here ####` PRIMARY KEY (`c_custkey`) DISABLE NOVALIDATE RELY; ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS SET('numRows'='1','rawDataSize'='22' ); -ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_address` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_address` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_city` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_city` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_custkey` SET('lowValue'='3','highValue'='3','numNulls'='0','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_custkey` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEBgq/rqgE= -ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_mktsegment` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_mktsegment` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_name` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_name` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_address` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_address` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_city` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_city` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_nation` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_nation` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA -ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_phone` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_phone` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_region` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_region` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_phone` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_phone` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA +ALTER TABLE `default`.`customer_removal_n0` UPDATE STATISTICS FOR COLUMN `c_mktsegment` SET('avgColLen'='0.0','maxColLen'='0','numNulls'='1','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`customer_removal_n0` FOR COLUMN `c_mktsegment` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEA @@ -2515,12 +2515,12 @@ TBLPROPERTIES ( #### A masked pattern was here #### ALTER TABLE `default`.`tconst` UPDATE STATISTICS SET('numRows'='3','rawDataSize'='25' ); ALTER TABLE `default`.`tconst` CHANGE COLUMN `i` `i` int CONSTRAINT `#### A masked pattern was here ####` NOT NULL DISABLE NOVALIDATE RELY; -ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `d_year` SET('avgColLen'='4.0','maxColLen'='4','numNulls'='0','numDVs'='3' ); --- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `d_year` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAMDwrjb8gb/vrr2+f////8BgaCT+///////AQ== ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `i` SET('lowValue'='1','highValue'='3','numNulls'='0','numDVs'='3' ); -- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `i` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAMDwfO+SMG7rGLC0vSOAw== ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `j` SET('lowValue'='1','highValue'='3','numNulls'='1','numDVs'='2' ); -- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `j` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAICwfO+SMG7rGI= +ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `d_year` SET('avgColLen'='4.0','maxColLen'='4','numNulls'='0','numDVs'='3' ); +-- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `d_year` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAMDwrjb8gb/vrr2+f////8BgaCT+///////AQ== @@ -2644,12 +2644,12 @@ TBLPROPERTIES ( #### A masked pattern was here #### ALTER TABLE `default`.`tconst` UPDATE STATISTICS SET('numRows'='3','rawDataSize'='25' ); ALTER TABLE `default`.`tconst` CHANGE COLUMN `i` `i` int CONSTRAINT `#### A masked pattern was here ####` NOT NULL DISABLE NOVALIDATE RELY; -ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `d_year` SET('avgColLen'='4.0','maxColLen'='4','numNulls'='0','numDVs'='3' ); --- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `d_year` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAMDwrjb8gb/vrr2+f////8BgaCT+///////AQ== ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `i` SET('lowValue'='1','highValue'='3','numNulls'='0','numDVs'='3' ); -- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `i` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAMDwfO+SMG7rGLC0vSOAw== ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `j` SET('lowValue'='1','highValue'='3','numNulls'='1','numDVs'='2' ); -- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `j` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAICwfO+SMG7rGI= +ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `d_year` SET('avgColLen'='4.0','maxColLen'='4','numNulls'='0','numDVs'='3' ); +-- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `d_year` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAMDwrjb8gb/vrr2+f////8BgaCT+///////AQ== @@ -2774,12 +2774,12 @@ TBLPROPERTIES ( #### A masked pattern was here #### ALTER TABLE `default`.`tconst` UPDATE STATISTICS SET('numRows'='3','rawDataSize'='25' ); ALTER TABLE `default`.`tconst` CHANGE COLUMN `i` `i` int CONSTRAINT `#### A masked pattern was here ####` NOT NULL DISABLE NOVALIDATE RELY; -ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `d_year` SET('avgColLen'='4.0','maxColLen'='4','numNulls'='0','numDVs'='3' ); --- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `d_year` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAMDwrjb8gb/vrr2+f////8BgaCT+///////AQ== ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `i` SET('lowValue'='1','highValue'='3','numNulls'='0','numDVs'='3' ); -- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `i` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAMDwfO+SMG7rGLC0vSOAw== ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `j` SET('lowValue'='1','highValue'='3','numNulls'='1','numDVs'='2' ); -- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `j` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAICwfO+SMG7rGI= +ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `d_year` SET('avgColLen'='4.0','maxColLen'='4','numNulls'='0','numDVs'='3' ); +-- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `d_year` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAMDwrjb8gb/vrr2+f////8BgaCT+///////AQ== @@ -2903,12 +2903,12 @@ TBLPROPERTIES ( #### A masked pattern was here #### ALTER TABLE `default`.`tconst` UPDATE STATISTICS SET('numRows'='3','rawDataSize'='25' ); ALTER TABLE `default`.`tconst` CHANGE COLUMN `i` `i` int CONSTRAINT `#### A masked pattern was here ####` NOT NULL DISABLE NOVALIDATE RELY; -ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `d_year` SET('avgColLen'='4.0','maxColLen'='4','numNulls'='0','numDVs'='3' ); --- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `d_year` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAMDwrjb8gb/vrr2+f////8BgaCT+///////AQ== ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `i` SET('lowValue'='1','highValue'='3','numNulls'='0','numDVs'='3' ); -- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `i` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAMDwfO+SMG7rGLC0vSOAw== ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `j` SET('lowValue'='1','highValue'='3','numNulls'='1','numDVs'='2' ); -- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `j` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAICwfO+SMG7rGI= +ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `d_year` SET('avgColLen'='4.0','maxColLen'='4','numNulls'='0','numDVs'='3' ); +-- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `d_year` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAMDwrjb8gb/vrr2+f////8BgaCT+///////AQ== @@ -3092,12 +3092,12 @@ TBLPROPERTIES ( #### A masked pattern was here #### ALTER TABLE `default`.`tconst` UPDATE STATISTICS SET('numRows'='3','rawDataSize'='25' ); ALTER TABLE `default`.`tconst` CHANGE COLUMN `i` `i` int CONSTRAINT `#### A masked pattern was here ####` NOT NULL DISABLE NOVALIDATE RELY; -ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `d_year` SET('avgColLen'='4.0','maxColLen'='4','numNulls'='0','numDVs'='3' ); --- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `d_year` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAMDwrjb8gb/vrr2+f////8BgaCT+///////AQ== ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `i` SET('lowValue'='1','highValue'='3','numNulls'='0','numDVs'='3' ); -- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `i` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAMDwfO+SMG7rGLC0vSOAw== ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `j` SET('lowValue'='1','highValue'='3','numNulls'='1','numDVs'='2' ); -- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `j` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAICwfO+SMG7rGI= +ALTER TABLE `default`.`tconst` UPDATE STATISTICS FOR COLUMN `d_year` SET('avgColLen'='4.0','maxColLen'='4','numNulls'='0','numDVs'='3' ); +-- BIT VECTORS PRESENT FOR `default`.`tconst` FOR COLUMN `d_year` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAMDwrjb8gb/vrr2+f////8BgaCT+///////AQ== @@ -7035,10 +7035,10 @@ TBLPROPERTIES ( #### A masked pattern was here #### ALTER TABLE `default`.`web_sales` ADD CONSTRAINT `pk1` PRIMARY KEY (`ws_order_number`,`ws_item_sk`) DISABLE NOVALIDATE RELY; ALTER TABLE `default`.`web_sales` UPDATE STATISTICS SET('numRows'='2','rawDataSize'='14' ); -ALTER TABLE `default`.`web_sales` UPDATE STATISTICS FOR COLUMN `ws_item_sk` SET('lowValue'='1','highValue'='1','numNulls'='0','numDVs'='1' ); --- BIT VECTORS PRESENT FOR `default`.`web_sales` FOR COLUMN `ws_item_sk` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEBwfO+SA== ALTER TABLE `default`.`web_sales` UPDATE STATISTICS FOR COLUMN `ws_order_number` SET('lowValue'='1','highValue'='1','numNulls'='0','numDVs'='1' ); -- BIT VECTORS PRESENT FOR `default`.`web_sales` FOR COLUMN `ws_order_number` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEBwfO+SA== +ALTER TABLE `default`.`web_sales` UPDATE STATISTICS FOR COLUMN `ws_item_sk` SET('lowValue'='1','highValue'='1','numNulls'='0','numDVs'='1' ); +-- BIT VECTORS PRESENT FOR `default`.`web_sales` FOR COLUMN `ws_item_sk` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEBwfO+SA== ALTER TABLE `default`.`web_sales` UPDATE STATISTICS FOR COLUMN `ws_price` SET('numNulls'='0','numDVs'='1','highValue'='1.2000000476837158','lowValue'='1.2000000476837158' ); -- BIT VECTORS PRESENT FOR `default`.`web_sales` FOR COLUMN `ws_price` BUT THEY ARE NOT SUPPORTED YET. THE BASE64 VALUE FOR THE BITVECTOR IS SExMoAEBwbaGtAM= diff --git a/ql/src/test/results/clientpositive/llap/sysdb.q.out b/ql/src/test/results/clientpositive/llap/sysdb.q.out index 368544c35bf..7fe712061b4 100644 --- a/ql/src/test/results/clientpositive/llap/sysdb.q.out +++ b/ql/src/test/results/clientpositive/llap/sysdb.q.out @@ -735,7 +735,6 @@ part_col_stats big_decimal_low_value part_col_stats column_name part_col_stats column_type part_col_stats cs_id -part_col_stats db_name part_col_stats double_high_value part_col_stats double_low_value part_col_stats engine @@ -748,8 +747,6 @@ part_col_stats num_falses part_col_stats num_nulls part_col_stats num_trues part_col_stats part_id -part_col_stats partition_name -part_col_stats table_name part_privs authorizer part_privs create_time part_privs grant_option @@ -907,7 +904,6 @@ tab_col_stats big_decimal_low_value tab_col_stats column_name tab_col_stats column_type tab_col_stats cs_id -tab_col_stats db_name tab_col_stats double_high_value tab_col_stats double_low_value tab_col_stats engine @@ -919,7 +915,6 @@ tab_col_stats num_distincts tab_col_stats num_falses tab_col_stats num_nulls tab_col_stats num_trues -tab_col_stats table_name tab_col_stats tbl_id table_params param_key table_params param_value @@ -1446,13 +1441,17 @@ hive_test_user hive_test_user hive_test_user hive_test_user hive_test_user hive_test_user hive_test_user hive_test_user -PREHOOK: query: select table_name, column_name, num_nulls, num_distincts from tab_col_stats order by table_name, column_name limit 10 +PREHOOK: query: select tbls.tbl_name, column_name, num_nulls, num_distincts from tab_col_stats inner join tbls on tab_col_stats.tbl_id=tbls.tbl_id join dbs on tbls.db_id=dbs.db_id order by tbls.tbl_name, column_name limit 10 PREHOOK: type: QUERY +PREHOOK: Input: sys@dbs PREHOOK: Input: sys@tab_col_stats +PREHOOK: Input: sys@tbls #### A masked pattern was here #### -POSTHOOK: query: select table_name, column_name, num_nulls, num_distincts from tab_col_stats order by table_name, column_name limit 10 +POSTHOOK: query: select tbls.tbl_name, column_name, num_nulls, num_distincts from tab_col_stats inner join tbls on tab_col_stats.tbl_id=tbls.tbl_id join dbs on tbls.db_id=dbs.db_id order by tbls.tbl_name, column_name limit 10 POSTHOOK: type: QUERY +POSTHOOK: Input: sys@dbs POSTHOOK: Input: sys@tab_col_stats +POSTHOOK: Input: sys@tbls #### A masked pattern was here #### part p_brand 0 16 part p_comment 0 25 @@ -1464,13 +1463,17 @@ part p_retailprice 0 25 part p_size 0 21 part p_type 0 24 src key 0 316 -PREHOOK: query: select table_name, partition_name, column_name, num_nulls, num_distincts from part_col_stats order by table_name, partition_name, column_name limit 10 +PREHOOK: query: select tbls.tbl_name, partitions.part_name, column_name, num_nulls, num_distincts from part_col_stats inner join partitions on part_col_stats.part_id=partitions.part_id inner join tbls on partitions.tbl_id=tbls.tbl_id order by tbls.tbl_name, partitions.part_name, column_name limit 10 PREHOOK: type: QUERY PREHOOK: Input: sys@part_col_stats +PREHOOK: Input: sys@partitions +PREHOOK: Input: sys@tbls #### A masked pattern was here #### -POSTHOOK: query: select table_name, partition_name, column_name, num_nulls, num_distincts from part_col_stats order by table_name, partition_name, column_name limit 10 +POSTHOOK: query: select tbls.tbl_name, partitions.part_name, column_name, num_nulls, num_distincts from part_col_stats inner join partitions on part_col_stats.part_id=partitions.part_id inner join tbls on partitions.tbl_id=tbls.tbl_id order by tbls.tbl_name, partitions.part_name, column_name limit 10 POSTHOOK: type: QUERY POSTHOOK: Input: sys@part_col_stats +POSTHOOK: Input: sys@partitions +POSTHOOK: Input: sys@tbls #### A masked pattern was here #### PREHOOK: query: select schema_version from version order by schema_version limit 5 PREHOOK: type: QUERY @@ -1536,8 +1539,6 @@ POSTHOOK: query: describe sys.tab_col_stats POSTHOOK: type: DESCTABLE POSTHOOK: Input: sys@tab_col_stats cs_id bigint from deserializer -db_name string from deserializer -table_name string from deserializer column_name string from deserializer column_type string from deserializer tbl_id bigint from deserializer diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/DirectSqlUpdatePart.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/DirectSqlUpdatePart.java index 441ce26ac6d..2e908ebc1f1 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/DirectSqlUpdatePart.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/DirectSqlUpdatePart.java @@ -222,12 +222,11 @@ class DirectSqlUpdatePart { long maxCsId, Connection dbConn) throws SQLException, MetaException, NoSuchObjectException { int numRows = 0; - String insert = "INSERT INTO \"PART_COL_STATS\" (\"CS_ID\", \"CAT_NAME\", \"DB_NAME\"," - + "\"TABLE_NAME\", \"PARTITION_NAME\", \"COLUMN_NAME\", \"COLUMN_TYPE\", \"PART_ID\"," + String insert = "INSERT INTO \"PART_COL_STATS\" (\"CS_ID\", \"COLUMN_NAME\", \"COLUMN_TYPE\", \"PART_ID\"," + " \"LONG_LOW_VALUE\", \"LONG_HIGH_VALUE\", \"DOUBLE_HIGH_VALUE\", \"DOUBLE_LOW_VALUE\"," + " \"BIG_DECIMAL_LOW_VALUE\", \"BIG_DECIMAL_HIGH_VALUE\", \"NUM_NULLS\", \"NUM_DISTINCTS\", \"BIT_VECTOR\" ," + " \"HISTOGRAM\", \"AVG_COL_LEN\", \"MAX_COL_LEN\", \"NUM_TRUES\", \"NUM_FALSES\", \"LAST_ANALYZED\", \"ENGINE\") values " - + "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + + "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; try (PreparedStatement preparedStatement = dbConn.prepareStatement(insert)) { for (Map.Entry entry : insertMap.entrySet()) { @@ -236,29 +235,25 @@ class DirectSqlUpdatePart { MPartitionColumnStatistics mPartitionColumnStatistics = (MPartitionColumnStatistics) entry.getValue(); preparedStatement.setLong(1, maxCsId); - preparedStatement.setString(2, mPartitionColumnStatistics.getCatName()); - preparedStatement.setString(3, mPartitionColumnStatistics.getDbName()); - preparedStatement.setString(4, mPartitionColumnStatistics.getTableName()); - preparedStatement.setString(5, mPartitionColumnStatistics.getPartitionName()); - preparedStatement.setString(6, mPartitionColumnStatistics.getColName()); - preparedStatement.setString(7, mPartitionColumnStatistics.getColType()); - preparedStatement.setLong(8, partId); - preparedStatement.setObject(9, mPartitionColumnStatistics.getLongLowValue()); - preparedStatement.setObject(10, mPartitionColumnStatistics.getLongHighValue()); - preparedStatement.setObject(11, mPartitionColumnStatistics.getDoubleHighValue()); - preparedStatement.setObject(12, mPartitionColumnStatistics.getDoubleLowValue()); - preparedStatement.setString(13, mPartitionColumnStatistics.getDecimalLowValue()); - preparedStatement.setString(14, mPartitionColumnStatistics.getDecimalHighValue()); - preparedStatement.setObject(15, mPartitionColumnStatistics.getNumNulls()); - preparedStatement.setObject(16, mPartitionColumnStatistics.getNumDVs()); - preparedStatement.setObject(17, mPartitionColumnStatistics.getBitVector()); - preparedStatement.setBytes(18, mPartitionColumnStatistics.getHistogram()); - preparedStatement.setObject(19, mPartitionColumnStatistics.getAvgColLen()); - preparedStatement.setObject(20, mPartitionColumnStatistics.getMaxColLen()); - preparedStatement.setObject(21, mPartitionColumnStatistics.getNumTrues()); - preparedStatement.setObject(22, mPartitionColumnStatistics.getNumFalses()); - preparedStatement.setLong(23, mPartitionColumnStatistics.getLastAnalyzed()); - preparedStatement.setString(24, mPartitionColumnStatistics.getEngine()); + preparedStatement.setString(2, mPartitionColumnStatistics.getColName()); + preparedStatement.setString(3, mPartitionColumnStatistics.getColType()); + preparedStatement.setLong(4, partId); + preparedStatement.setObject(5, mPartitionColumnStatistics.getLongLowValue()); + preparedStatement.setObject(6, mPartitionColumnStatistics.getLongHighValue()); + preparedStatement.setObject(7, mPartitionColumnStatistics.getDoubleHighValue()); + preparedStatement.setObject(8, mPartitionColumnStatistics.getDoubleLowValue()); + preparedStatement.setString(9, mPartitionColumnStatistics.getDecimalLowValue()); + preparedStatement.setString(10, mPartitionColumnStatistics.getDecimalHighValue()); + preparedStatement.setObject(11, mPartitionColumnStatistics.getNumNulls()); + preparedStatement.setObject(12, mPartitionColumnStatistics.getNumDVs()); + preparedStatement.setObject(13, mPartitionColumnStatistics.getBitVector()); + preparedStatement.setBytes(14, mPartitionColumnStatistics.getHistogram()); + preparedStatement.setObject(15, mPartitionColumnStatistics.getAvgColLen()); + preparedStatement.setObject(16, mPartitionColumnStatistics.getMaxColLen()); + preparedStatement.setObject(17, mPartitionColumnStatistics.getNumTrues()); + preparedStatement.setObject(18, mPartitionColumnStatistics.getNumFalses()); + preparedStatement.setLong(19, mPartitionColumnStatistics.getLastAnalyzed()); + preparedStatement.setString(20, mPartitionColumnStatistics.getEngine()); maxCsId++; numRows++; diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java index f143ed6ee45..a4c476e48fc 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HMSHandler.java @@ -6750,28 +6750,6 @@ public class HMSHandler extends FacebookBase implements IHMSHandler { return Warehouse.makeSpecFromName(part_name); } - public static String lowerCaseConvertPartName(String partName) throws MetaException { - if (partName == null) { - return partName; - } - boolean isFirst = true; - Map<String, String> partSpec = Warehouse.makeEscSpecFromName(partName); - String convertedPartName = new String(); - - for (Map.Entry<String, String> entry : partSpec.entrySet()) { - String partColName = entry.getKey(); - String partColVal = entry.getValue(); - - if (!isFirst) { - convertedPartName += "/"; - } else { - isFirst = false; - } - convertedPartName += partColName.toLowerCase() + "=" + partColVal; - } - return convertedPartName; - } - @Override @Deprecated public ColumnStatistics get_table_column_statistics(String dbName, String tableName, @@ -6839,16 +6817,15 @@ public class HMSHandler extends FacebookBase implements IHMSHandler { String[] parsedDbName = parseDbName(dbName, conf); tableName = tableName.toLowerCase(); colName = colName.toLowerCase(); - String convertedPartName = lowerCaseConvertPartName(partName); startFunction("get_column_statistics_by_partition", ": table=" + TableName.getQualified(parsedDbName[CAT_NAME], parsedDbName[DB_NAME], - tableName) + " partition=" + convertedPartName + " column=" + colName); + tableName) + " partition=" + partName + " column=" + colName); ColumnStatistics statsObj = null; try { List<ColumnStatistics> list = getMS().getPartitionColumnStatistics( parsedDbName[CAT_NAME], parsedDbName[DB_NAME], tableName, - Lists.newArrayList(convertedPartName), Lists.newArrayList(colName), + Lists.newArrayList(partName), Lists.newArrayList(colName), "hive"); if (list.isEmpty()) { return null; @@ -6876,13 +6853,9 @@ public class HMSHandler extends FacebookBase implements IHMSHandler { for (String colName : request.getColNames()) { lowerCaseColNames.add(colName.toLowerCase()); } - List<String> lowerCasePartNames = new ArrayList<>(request.getPartNames().size()); - for (String partName : request.getPartNames()) { - lowerCasePartNames.add(lowerCaseConvertPartName(partName)); - } try { List<ColumnStatistics> stats = getMS().getPartitionColumnStatistics( - catName, dbName, tblName, lowerCasePartNames, lowerCaseColNames, + catName, dbName, tblName, request.getPartNames(), lowerCaseColNames, request.getEngine(), request.isSetValidWriteIdList() ? request.getValidWriteIdList() : null); Map<String, List<ColumnStatisticsObj>> map = new HashMap<>(); if (stats != null) { @@ -6977,7 +6950,7 @@ public class HMSHandler extends FacebookBase implements IHMSHandler { statsDesc.setCatName(statsDesc.isSetCatName() ? statsDesc.getCatName().toLowerCase() : getDefaultCatalog(conf)); statsDesc.setDbName(statsDesc.getDbName().toLowerCase()); statsDesc.setTableName(statsDesc.getTableName().toLowerCase()); - statsDesc.setPartName(lowerCaseConvertPartName(statsDesc.getPartName())); + statsDesc.setPartName(statsDesc.getPartName()); long time = System.currentTimeMillis() / 1000; statsDesc.setLastAnalyzed(time); @@ -7136,15 +7109,14 @@ public class HMSHandler extends FacebookBase implements IHMSHandler { if (colName != null) { colName = colName.toLowerCase(); } - String convertedPartName = lowerCaseConvertPartName(partName); startFunction("delete_column_statistics_by_partition",": table=" + TableName.getQualified(parsedDbName[CAT_NAME], parsedDbName[DB_NAME], tableName) + - " partition=" + convertedPartName + " column=" + colName); + " partition=" + partName + " column=" + colName); boolean ret = false, committed = false; getMS().openTransaction(); try { - List<String> partVals = getPartValsFromName(getMS(), parsedDbName[CAT_NAME], parsedDbName[DB_NAME], tableName, convertedPartName); + List<String> partVals = getPartValsFromName(getMS(), parsedDbName[CAT_NAME], parsedDbName[DB_NAME], tableName, partName); Table table = getMS().getTable(parsedDbName[CAT_NAME], parsedDbName[DB_NAME], tableName); // This API looks unused; if it were used we'd need to update stats state and write ID. // We cannot just randomly nuke some txn stats. @@ -7153,19 +7125,19 @@ public class HMSHandler extends FacebookBase implements IHMSHandler { } ret = getMS().deletePartitionColumnStatistics(parsedDbName[CAT_NAME], parsedDbName[DB_NAME], tableName, - convertedPartName, partVals, colName, engine); + partName, partVals, colName, engine); if (ret) { if (transactionalListeners != null && !transactionalListeners.isEmpty()) { MetaStoreListenerNotifier.notifyEvent(transactionalListeners, EventType.DELETE_PARTITION_COLUMN_STAT, new DeletePartitionColumnStatEvent(parsedDbName[CAT_NAME], parsedDbName[DB_NAME], tableName, - convertedPartName, partVals, colName, engine, this)); + partName, partVals, colName, engine, this)); } if (!listeners.isEmpty()) { MetaStoreListenerNotifier.notifyEvent(listeners, EventType.DELETE_PARTITION_COLUMN_STAT, new DeletePartitionColumnStatEvent(parsedDbName[CAT_NAME], parsedDbName[DB_NAME], tableName, - convertedPartName, partVals, colName, engine, this)); + partName, partVals, colName, engine, this)); } } committed = getMS().commitTransaction(); @@ -9141,15 +9113,11 @@ public class HMSHandler extends FacebookBase implements IHMSHandler { for (String colName : request.getColNames()) { lowerCaseColNames.add(colName.toLowerCase()); } - List<String> lowerCasePartNames = new ArrayList<>(request.getPartNames().size()); - for (String partName : request.getPartNames()) { - lowerCasePartNames.add(lowerCaseConvertPartName(partName)); - } AggrStats aggrStats = null; try { aggrStats = getMS().get_aggr_stats_for(catName, dbName, tblName, - lowerCasePartNames, lowerCaseColNames, request.getEngine(), request.getValidWriteIdList()); + request.getPartNames(), lowerCaseColNames, request.getEngine(), request.getValidWriteIdList()); return aggrStats; } finally { endFunction("get_aggr_stats_for", aggrStats == null, null, request.getTblName()); diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java index 4a1f2ca8db2..25174e0f0a3 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/MetaStoreDirectSql.java @@ -300,8 +300,8 @@ class MetaStoreDirectSql { try { // Force the underlying db to initialize. initQueries.add(pm.newQuery(MDatabase.class, "name == ''")); - initQueries.add(pm.newQuery(MTableColumnStatistics.class, "dbName == ''")); - initQueries.add(pm.newQuery(MPartitionColumnStatistics.class, "dbName == ''")); + initQueries.add(pm.newQuery(MTableColumnStatistics.class, "colName == ''")); + initQueries.add(pm.newQuery(MPartitionColumnStatistics.class, "colName == ''")); initQueries.add(pm.newQuery(MConstraint.class, "childIntegerIndex < 0")); initQueries.add(pm.newQuery(MNotificationLog.class, "dbName == ''")); initQueries.add(pm.newQuery(MNotificationNextId.class, "nextEventId < -1")); @@ -1601,7 +1601,9 @@ class MetaStoreDirectSql { } final boolean doTrace = LOG.isDebugEnabled(); final String queryText0 = "select " + getStatsList(enableBitVector, enableKll) + " from " + TAB_COL_STATS - + " where \"CAT_NAME\" = ? and \"DB_NAME\" = ? and \"TABLE_NAME\" = ? " + + " inner join " + TBLS + " on " + TAB_COL_STATS + ".\"TBL_ID\" = " + TBLS + ".\"TBL_ID\" " + + " inner join " + DBS + " on " + TBLS + ".\"DB_ID\" = " + DBS + ".\"DB_ID\" " + + " where " + DBS + ".\"CTLG_NAME\" = ? and " + DBS + ".\"NAME\" = ? and " + TBLS + ".\"TBL_NAME\" = ?" + " and \"ENGINE\" = ? and \"COLUMN_NAME\" in ("; Batchable<String, Object[]> b = new Batchable<String, Object[]>() { @Override @@ -1800,11 +1802,15 @@ class MetaStoreDirectSql { final List<String> partNames, List<String> colNames, String engine) throws MetaException { assert !colNames.isEmpty() && !partNames.isEmpty(); final boolean doTrace = LOG.isDebugEnabled(); - final String queryText0 = "select count(\"COLUMN_NAME\") from " + PART_COL_STATS + "" - + " where \"CAT_NAME\" = ? and \"DB_NAME\" = ? and \"TABLE_NAME\" = ? " - + " and \"COLUMN_NAME\" in (%1$s) and \"PARTITION_NAME\" in (%2$s)" - + " and \"ENGINE\" = ? " - + " group by \"PARTITION_NAME\""; + final String queryText0 = "select count(\"COLUMN_NAME\") from " + PART_COL_STATS + "" + + " inner join " + PARTITIONS + " on " + PART_COL_STATS + ".\"PART_ID\" = " + PARTITIONS + ".\"PART_ID\"" + + " inner join " + TBLS + " on " + PARTITIONS + ".\"TBL_ID\" = " + TBLS + ".\"TBL_ID\"" + + " inner join " + DBS + " on " + TBLS + ".\"DB_ID\" = " + DBS + ".\"DB_ID\"" + + " where " + DBS + ".\"CTLG_NAME\" = ? and " + DBS + ".\"NAME\" = ?" + + " and " + TBLS + ".\"TBL_NAME\" = ?" + + " and " + PART_COL_STATS + ".\"COLUMN_NAME\" in (%1$s) and " + PARTITIONS + ".\"PART_NAME\" in (%2$s)" + + " and " + PART_COL_STATS + ".\"ENGINE\" = ?" + + " group by " + PART_COL_STATS + ".\"PART_ID\""; List<Long> allCounts = Batchable.runBatched(batchSize, colNames, new Batchable<String, Long>() { @Override public List<Long> run(final List<String> inputColName) throws MetaException { @@ -1862,8 +1868,13 @@ class MetaStoreDirectSql { public List<ColStatsObjWithSourceInfo> getColStatsForAllTablePartitions(String catName, String dbName, boolean enableBitVector, boolean enableKll) throws MetaException { - String queryText = "select \"TABLE_NAME\", \"PARTITION_NAME\", " + getStatsList(enableBitVector, enableKll) - + " from " + " " + PART_COL_STATS + " where \"DB_NAME\" = ? and \"CAT_NAME\" = ?"; + String queryText = "select \"TBLS\".\"TBL_NAME\", \"PARTITIONS\".\"PART_NAME\", " + + getStatsList(enableBitVector, enableKll) + + " from " + PART_COL_STATS + + " inner join " + PARTITIONS + " on " + PART_COL_STATS + ".\"PART_ID\" = " + PARTITIONS + ".\"PART_ID\"" + + " inner join " + TBLS + " on " + PARTITIONS + ".\"TBL_ID\" = " + TBLS + ".\"TBL_ID\"" + + " inner join " + DBS + " on " + TBLS + ".\"DB_ID\" = " + DBS + ".\"DB_ID\"" + + " where " + DBS + ".\"NAME\" = ? and " + DBS + ".\"CTLG_NAME\" = ?"; long start = 0; long end = 0; boolean doTrace = LOG.isDebugEnabled(); @@ -1943,7 +1954,10 @@ class MetaStoreDirectSql { + "avg((\"DOUBLE_HIGH_VALUE\"-\"DOUBLE_LOW_VALUE\")/\"NUM_DISTINCTS\")," + "avg((cast(\"BIG_DECIMAL_HIGH_VALUE\" as decimal)-cast(\"BIG_DECIMAL_LOW_VALUE\" as decimal))/\"NUM_DISTINCTS\")," + "sum(\"NUM_DISTINCTS\")" + " from " + PART_COL_STATS + "" - + " where \"CAT_NAME\" = ? and \"DB_NAME\" = ? and \"TABLE_NAME\" = ? "; + + " inner join " + PARTITIONS + " on " + PART_COL_STATS + ".\"PART_ID\" = " + PARTITIONS + ".\"PART_ID\"" + + " inner join " + TBLS + " on " + PARTITIONS + ".\"TBL_ID\" = " + TBLS + ".\"TBL_ID\"" + + " inner join " + DBS + " on " + TBLS + ".\"DB_ID\" = " + DBS + ".\"DB_ID\"" + + " where " + DBS + ".\"CTLG_NAME\" = ? and " + DBS + ".\"NAME\" = ? and " + TBLS + ".\"TBL_NAME\" = ? "; String queryText = null; long start = 0; long end = 0; @@ -1982,13 +1996,16 @@ class MetaStoreDirectSql { // In this case, at least a column status for a partition is missing. // We need to extrapolate this partition based on the other partitions List<ColumnStatisticsObj> colStats = new ArrayList<ColumnStatisticsObj>(colNames.size()); - queryText = "select \"COLUMN_NAME\", \"COLUMN_TYPE\", count(\"PARTITION_NAME\") " + queryText = "select \"COLUMN_NAME\", \"COLUMN_TYPE\", count(\"PART_COL_STATS\".\"PART_ID\") " + " from " + PART_COL_STATS - + " where \"CAT_NAME\" = ? and \"DB_NAME\" = ? and \"TABLE_NAME\" = ? " - + " and \"COLUMN_NAME\" in (" + makeParams(colNames.size()) + ")" - + " and \"PARTITION_NAME\" in (" + makeParams(partNames.size()) + ")" - + " and \"ENGINE\" = ? " - + " group by \"COLUMN_NAME\", \"COLUMN_TYPE\""; + + " inner join " + PARTITIONS + " on " + PART_COL_STATS + ".\"PART_ID\" = " + PARTITIONS + ".\"PART_ID\"" + + " inner join " + TBLS + " on " + PARTITIONS + ".\"TBL_ID\" = " + TBLS + ".\"TBL_ID\"" + + " inner join " + DBS + " on " + TBLS + ".\"DB_ID\" = " + DBS + ".\"DB_ID\"" + + " where " + DBS + ".\"CTLG_NAME\" = ? and " + DBS + ".\"NAME\" = ? and " + TBLS + ".\"TBL_NAME\" = ? " + + " and " + PART_COL_STATS + ".\"COLUMN_NAME\" in (" + makeParams(colNames.size()) + ")" + + " and " + PARTITIONS + ".\"PART_NAME\" in (" + makeParams(partNames.size()) + ")" + + " and " + PART_COL_STATS + ".\"ENGINE\" = ? " + + " group by " + PART_COL_STATS + ".\"COLUMN_NAME\", " + PART_COL_STATS + ".\"COLUMN_TYPE\""; start = doTrace ? System.nanoTime() : 0; List<String> noExtraColumnNames = new ArrayList<String>(); Map<String, String[]> extraColumnNameTypeParts = new HashMap<String, String[]>(); @@ -2055,11 +2072,15 @@ class MetaStoreDirectSql { // get sum for all columns to reduce the number of queries Map<String, Map<Integer, Object>> sumMap = new HashMap<String, Map<Integer, Object>>(); queryText = "select \"COLUMN_NAME\", sum(\"NUM_NULLS\"), sum(\"NUM_TRUES\"), sum(\"NUM_FALSES\"), sum(\"NUM_DISTINCTS\")" - + " from " + PART_COL_STATS + " where \"CAT_NAME\" = ? and \"DB_NAME\" = ? and \"TABLE_NAME\" = ? " - + " and \"COLUMN_NAME\" in (" + makeParams(extraColumnNameTypeParts.size()) + ")" - + " and \"PARTITION_NAME\" in (" + makeParams(partNames.size()) + ")" - + " and \"ENGINE\" = ? " - + " group by \"COLUMN_NAME\""; + + " from " + PART_COL_STATS + + " inner join " + PARTITIONS + " on " + PART_COL_STATS + ".\"PART_ID\" = " + PARTITIONS + ".\"PART_ID\"" + + " inner join " + TBLS + " on " + PARTITIONS + ".\"TBL_ID\" = " + TBLS + ".\"TBL_ID\"" + + " inner join " + DBS + " on " + TBLS + ".\"DB_ID\" = " + DBS + ".\"DB_ID\"" + + " where " + DBS + ".\"CTLG_NAME\" = ? and " + DBS + ".\"NAME\" = ? and " + TBLS + ".\"TBL_NAME\" = ? " + + " and " + PART_COL_STATS + ".\"COLUMN_NAME\" in (" + makeParams(extraColumnNameTypeParts.size()) + ")" + + " and " + PARTITIONS + ".\"PART_NAME\" in (" + makeParams(partNames.size()) + ")" + + " and " + PART_COL_STATS + ".\"ENGINE\" = ? " + + " group by " + PART_COL_STATS + ".\"COLUMN_NAME\""; start = doTrace ? System.nanoTime() : 0; try (QueryWrapper query = new QueryWrapper(pm.newQuery("javax.jdo.query.SQL", queryText))) { List<String> extraColumnNames = new ArrayList<String>(); @@ -2127,18 +2148,24 @@ class MetaStoreDirectSql { // if the aggregation type is min/max, we extrapolate from the // left/right borders if (!decimal) { - queryText = "select \"" + colStatName - + "\",\"PARTITION_NAME\" from " + PART_COL_STATS - + " where \"CAT_NAME\" = ? and \"DB_NAME\" = ? and \"TABLE_NAME\" = ?" + " and \"COLUMN_NAME\" = ?" - + " and \"PARTITION_NAME\" in (" + makeParams(partNames.size()) + ")" - + " and \"ENGINE\" = ? " + queryText = "select \"" + colStatName + "\",\"PART_NAME\" from " + PART_COL_STATS + + " inner join " + PARTITIONS + " on " + PART_COL_STATS + ".\"PART_ID\" = " + PARTITIONS + ".\"PART_ID\"" + + " inner join " + TBLS + " on " + PARTITIONS + ".\"TBL_ID\" = " + TBLS + ".\"TBL_ID\"" + + " inner join " + DBS + " on " + TBLS + ".\"DB_ID\" = " + DBS + ".\"DB_ID\"" + + " where " + DBS + ".\"CTLG_NAME\" = ? and " + DBS + ".\"NAME\" = ? and " + TBLS + ".\"TBL_NAME\" = ? " + + " and " + PART_COL_STATS + ".\"COLUMN_NAME\" = ? " + + " and " + PARTITIONS + ".\"PART_NAME\" in (" + makeParams(partNames.size()) + ")" + + " and " + PART_COL_STATS + ".\"ENGINE\" = ? " + " order by \"" + colStatName + "\""; } else { - queryText = "select \"" + colStatName - + "\",\"PARTITION_NAME\" from " + PART_COL_STATS - + " where \"CAT_NAME\" = ? and \"DB_NAME\" = ? and \"TABLE_NAME\" = ?" + " and \"COLUMN_NAME\" = ?" - + " and \"PARTITION_NAME\" in (" + makeParams(partNames.size()) + ")" - + " and \"ENGINE\" = ? " + queryText = "select \"" + colStatName + "\",\"PART_NAME\" from " + PART_COL_STATS + + " inner join " + PARTITIONS + " on " + PART_COL_STATS + ".\"PART_ID\" = " + PARTITIONS + ".\"PART_ID\"" + + " inner join " + TBLS + " on " + PARTITIONS + ".\"TBL_ID\" = " + TBLS + ".\"TBL_ID\"" + + " inner join " + DBS + " on " + TBLS + ".\"DB_ID\" = " + DBS + ".\"DB_ID\"" + + " where " + DBS + ".\"CTLG_NAME\" = ? and " + DBS + ".\"NAME\" = ? and " + TBLS + ".\"TBL_NAME\" = ? " + + " and " + PART_COL_STATS + ".\"COLUMN_NAME\" = ? " + + " and " + PARTITIONS + ".\"PART_NAME\" in (" + makeParams(partNames.size()) + ")" + + " and " + PART_COL_STATS + ".\"ENGINE\" = ? " + " order by cast(\"" + colStatName + "\" as decimal)"; } start = doTrace ? System.nanoTime() : 0; @@ -2166,10 +2193,14 @@ class MetaStoreDirectSql { + "avg((\"LONG_HIGH_VALUE\"-\"LONG_LOW_VALUE\")/cast(\"NUM_DISTINCTS\" as decimal))," + "avg((\"DOUBLE_HIGH_VALUE\"-\"DOUBLE_LOW_VALUE\")/\"NUM_DISTINCTS\")," + "avg((cast(\"BIG_DECIMAL_HIGH_VALUE\" as decimal)-cast(\"BIG_DECIMAL_LOW_VALUE\" as decimal))/\"NUM_DISTINCTS\")" - + " from " + PART_COL_STATS + "" + " where \"CAT_NAME\" = ? and \"DB_NAME\" = ? and \"TABLE_NAME\" = ?" - + " and \"COLUMN_NAME\" = ?" + " and \"PARTITION_NAME\" in (" - + makeParams(partNames.size()) + ")" - + " and \"ENGINE\" = ? " + + " from " + PART_COL_STATS + "" + + " inner join " + PARTITIONS + " on " + PART_COL_STATS + ".\"PART_ID\" = " + PARTITIONS + ".\"PART_ID\"" + + " inner join " + TBLS + " on " + PARTITIONS + ".\"TBL_ID\" = " + TBLS + ".\"TBL_ID\"" + + " inner join " + DBS + " on " + TBLS + ".\"DB_ID\" = " + DBS + ".\"DB_ID\"" + + " where " + DBS + ".\"CTLG_NAME\" = ? and " + DBS + ".\"NAME\" = ? and " + TBLS + ".\"TBL_NAME\" = ? " + + " and " + PART_COL_STATS + ".\"COLUMN_NAME\" = ? " + + " and " + PARTITIONS + ".\"PART_NAME\" in (" + makeParams(partNames.size()) + ")" + + " and " + PART_COL_STATS + ".\"ENGINE\" = ? " + " group by \"COLUMN_NAME\""; start = doTrace ? System.nanoTime() : 0; try(QueryWrapper query = new QueryWrapper(pm.newQuery("javax.jdo.query.SQL", queryText))) { @@ -2246,12 +2277,16 @@ class MetaStoreDirectSql { return Collections.emptyList(); } final boolean doTrace = LOG.isDebugEnabled(); - final String queryText0 = "select \"PARTITION_NAME\", " + getStatsList(enableBitVector, enableKll) + " from " - + " " + PART_COL_STATS + " where \"CAT_NAME\" = ? and \"DB_NAME\" = ? and \"TABLE_NAME\" = ? and " + - "\"COLUMN_NAME\"" - + " in (%1$s) AND \"PARTITION_NAME\" in (%2$s) " - + " and \"ENGINE\" = ? " - + " order by \"PARTITION_NAME\""; + final String queryText0 = "select \"PARTITIONS\".\"PART_NAME\", " + getStatsList(enableBitVector, enableKll) + + " from " + PART_COL_STATS + + " inner join " + PARTITIONS + " on " + PART_COL_STATS + ".\"PART_ID\" = " + PARTITIONS + ".\"PART_ID\"" + + " inner join " + TBLS + " on " + PARTITIONS + ".\"TBL_ID\" = " + TBLS + ".\"TBL_ID\"" + + " inner join " + DBS + " on " + TBLS + ".\"DB_ID\" = " + DBS + ".\"DB_ID\"" + + " where " + DBS + ".\"CTLG_NAME\" = ? and " + DBS + ".\"NAME\" = ? and " + TBLS + ".\"TBL_NAME\" = ? " + + " and " + PART_COL_STATS + ".\"COLUMN_NAME\" in (%1$s)" + + " and " + PARTITIONS + ".\"PART_NAME\" in (%2$s)" + + " and " + PART_COL_STATS + ".\"ENGINE\" = ? " + + " order by " + PARTITIONS + ".\"PART_NAME\""; Batchable<String, Object[]> b = new Batchable<String, Object[]>() { @Override public List<Object[]> run(final List<String> inputColNames) throws MetaException { diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java index a810c9cc695..8594f3a2aba 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java @@ -10160,10 +10160,10 @@ public class ObjectStore implements RawStore, Configurable { private void writeMPartitionColumnStatistics(Table table, Partition partition, MPartitionColumnStatistics mStatsObj, MPartitionColumnStatistics oldStats) { - String catName = mStatsObj.getCatName(); - String dbName = mStatsObj.getDbName(); - String tableName = mStatsObj.getTableName(); - String partName = mStatsObj.getPartitionName(); + String catName = mStatsObj.getPartition().getTable().getDatabase().getCatalogName(); + String dbName = mStatsObj.getPartition().getTable().getDatabase().getName(); + String tableName = mStatsObj.getPartition().getTable().getTableName(); + String partName = mStatsObj.getPartition().getPartitionName(); String colName = mStatsObj.getColName(); Preconditions.checkState(this.currentTransaction.isActive()); @@ -10415,7 +10415,7 @@ public class ObjectStore implements RawStore, Configurable { public List<MTableColumnStatistics> run(List<String> input) throws MetaException { StringBuilder filter = - new StringBuilder("tableName == t1 && dbName == t2 && catName == t3 && engine == t4 && ("); + new StringBuilder("table.tableName == t1 && table.database.name == t2 && table.database.catalogName == t3 && engine == t4 && ("); StringBuilder paramStr = new StringBuilder( "java.lang.String t1, java.lang.String t2, java.lang.String t3, java.lang.String t4"); Object[] params = new Object[input.size() + 4]; @@ -10490,7 +10490,7 @@ public class ObjectStore implements RawStore, Configurable { try { openTransaction(); query = pm.newQuery(MTableColumnStatistics.class); - query.setFilter("tableName == t1 && dbName == t2 && catName == t3"); + query.setFilter("table.tableName == t1 && table.database.name == t2 && table.database.catalogName == t3"); query.declareParameters("java.lang.String t1, java.lang.String t2, java.lang.String t3"); query.setResult("DISTINCT engine"); Collection names = (Collection) query.execute(tableName, dbName, catName); @@ -10602,7 +10602,7 @@ public class ObjectStore implements RawStore, Configurable { try { openTransaction(); query = pm.newQuery(MPartitionColumnStatistics.class); - query.setFilter("tableName == t1 && dbName == t2 && catName == t3"); + query.setFilter("partition.table.tableName == t1 && partition.table.database.name == t2 && partition.table.database.catalogName == t3"); query.declareParameters("java.lang.String t1, java.lang.String t2, java.lang.String t3"); query.setResult("DISTINCT engine"); Collection names = (Collection) query.execute(tableName, dbName, catName); @@ -10701,7 +10701,7 @@ public class ObjectStore implements RawStore, Configurable { for (int i = 0; i <= mStats.size(); ++i) { boolean isLast = i == mStats.size(); MPartitionColumnStatistics mStatsObj = isLast ? null : mStats.get(i); - String partName = isLast ? null : mStatsObj.getPartitionName(); + String partName = isLast ? null : mStatsObj.getPartition().getPartitionName(); if (isLast || !partName.equals(lastPartName)) { if (i != 0) { ColumnStatistics colStat = new ColumnStatistics(csd, curList); @@ -10845,7 +10845,7 @@ public class ObjectStore implements RawStore, Configurable { List<MPartitionColumnStatistics> result = Collections.emptyList(); try (Query query = pm.newQuery(MPartitionColumnStatistics.class)) { String paramStr = "java.lang.String t1, java.lang.String t2, java.lang.String t3, java.lang.String t4"; - String filter = "tableName == t1 && dbName == t2 && catName == t3 && engine == t4 && ("; + String filter = "partition.table.tableName == t1 && partition.table.database.name == t2 && partition.table.database.catalogName == t3 && engine == t4 && ("; Object[] params = new Object[colNames.size() + partNames.size() + 4]; int i = 0; params[i++] = table.getTableName(); @@ -10854,7 +10854,7 @@ public class ObjectStore implements RawStore, Configurable { params[i++] = engine; int firstI = i; for (String s : partNames) { - filter += ((i == firstI) ? "" : " || ") + "partitionName == p" + i; + filter += ((i == firstI) ? "" : " || ") + "partition.partitionName == p" + i; paramStr += ", java.lang.String p" + i; params[i++] = s; } @@ -10868,7 +10868,7 @@ public class ObjectStore implements RawStore, Configurable { filter += ")"; query.setFilter(filter); query.declareParameters(paramStr); - query.setOrdering("partitionName ascending"); + query.setOrdering("partition.partitionName ascending"); result = (List<MPartitionColumnStatistics>) query.executeWithArray(params); pm.retrieveAll(result); result = new ArrayList<>(result); @@ -10890,7 +10890,7 @@ public class ObjectStore implements RawStore, Configurable { String catName, String dbName, String tableName, List<String> partNames) { Pair<Query, Object[]> queryWithParams = makeQueryByPartitionNames( catName, dbName, tableName, partNames, MPartitionColumnStatistics.class, - "tableName", "dbName", "partition.partitionName", "catName"); + "partition.table.tableName", "partition.table.database.name", "partition.partitionName", "partition.table.database.catalogName"); try (QueryWrapper wrapper = new QueryWrapper(queryWithParams.getLeft())) { wrapper.deletePersistentAll(queryWithParams.getRight()); } @@ -10916,7 +10916,7 @@ public class ObjectStore implements RawStore, Configurable { query = pm.newQuery(MPartitionColumnStatistics.class); - String filter = "dbName == t2 && tableName == t3 && catName == t4"; + String filter = "partition.table.database.name == t2 && partition.table.tableName == t3 && partition.table.database.catalogName == t4"; String parameters = "java.lang.String t2, java.lang.String t3, java.lang.String t4"; query.setFilter(filter); @@ -11002,13 +11002,13 @@ public class ObjectStore implements RawStore, Configurable { String parameters; if (colName != null) { filter = - "partition.partitionName == t1 && dbName == t2 && tableName == t3 && " - + "colName == t4 && catName == t5" + (engine != null ? " && engine == t6" : ""); + "partition.partitionName == t1 && partition.table.database.name == t2 && partition.table.tableName == t3 && " + + "colName == t4 && partition.table.database.catalogName == t5" + (engine != null ? " && engine == t6" : ""); parameters = "java.lang.String t1, java.lang.String t2, " + "java.lang.String t3, java.lang.String t4, java.lang.String t5" + (engine != null ? ", java.lang.String t6" : ""); } else { - filter = "partition.partitionName == t1 && dbName == t2 && tableName == t3 && catName == t4" + (engine != null ? " && engine == t5" : ""); + filter = "partition.partitionName == t1 && partition.table.database.name == t2 && partition.table.tableName == t3 && partition.table.database.catalogName == t4" + (engine != null ? " && engine == t5" : ""); parameters = "java.lang.String t1, java.lang.String t2, java.lang.String t3, java.lang.String t4" + (engine != null ? ", java.lang.String t5" : ""); } query.setFilter(filter); @@ -11096,10 +11096,10 @@ public class ObjectStore implements RawStore, Configurable { String filter; String parameters; if (colName != null) { - filter = "table.tableName == t1 && dbName == t2 && catName == t3 && colName == t4" + (engine != null ? " && engine == t5" : ""); + filter = "table.tableName == t1 && table.database.name == t2 && table.database.catalogName == t3 && colName == t4" + (engine != null ? " && engine == t5" : ""); parameters = "java.lang.String t1, java.lang.String t2, java.lang.String t3, java.lang.String t4" + (engine != null ? ", java.lang.String t5" : ""); } else { - filter = "table.tableName == t1 && dbName == t2 && catName == t3" + (engine != null ? " && engine == t4" : ""); + filter = "table.tableName == t1 && table.database.name == t2 && table.database.catalogName == t3" + (engine != null ? " && engine == t4" : ""); parameters = "java.lang.String t1, java.lang.String t2, java.lang.String t3" + (engine != null ? ", java.lang.String t4" : ""); } diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/StatObjectConverter.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/StatObjectConverter.java index 163c855833e..3c5c1d7f7dd 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/StatObjectConverter.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/StatObjectConverter.java @@ -69,9 +69,6 @@ public class StatObjectConverter { MTableColumnStatistics mColStats = new MTableColumnStatistics(); mColStats.setTable(table); - mColStats.setDbName(statsDesc.getDbName()); - mColStats.setCatName(table.getDatabase().getCatalogName()); - mColStats.setTableName(statsDesc.getTableName()); mColStats.setLastAnalyzed(statsDesc.getLastAnalyzed()); mColStats.setColName(statsObj.getColName()); mColStats.setColType(statsObj.getColType()); @@ -288,9 +285,7 @@ public class StatObjectConverter { if (mStatsObj.getNumNulls() != null) { setStmt.append("\"NUM_NULLS\" = ? ,"); } - setStmt.append("\"ENGINE\" = ? ,"); - setStmt.append("\"DB_NAME\" = ? ,"); - setStmt.append("\"TABLE_NAME\" = ? "); + setStmt.append("\"ENGINE\" = ? "); return setStmt.toString(); } @@ -341,8 +336,6 @@ public class StatObjectConverter { pst.setObject(colIdx++, mStatsObj.getNumNulls()); } pst.setString(colIdx++, mStatsObj.getEngine()); - pst.setString(colIdx++, mStatsObj.getDbName()); - pst.setString(colIdx++, mStatsObj.getTableName()); return colIdx; } @@ -460,9 +453,9 @@ public class StatObjectConverter { MTableColumnStatistics mStatsObj) { ColumnStatisticsDesc statsDesc = new ColumnStatisticsDesc(); statsDesc.setIsTblLevel(true); - statsDesc.setCatName(mStatsObj.getCatName()); - statsDesc.setDbName(mStatsObj.getDbName()); - statsDesc.setTableName(mStatsObj.getTableName()); + statsDesc.setCatName(mStatsObj.getTable().getDatabase().getCatalogName()); + statsDesc.setDbName(mStatsObj.getTable().getDatabase().getName()); + statsDesc.setTableName(mStatsObj.getTable().getTableName()); statsDesc.setLastAnalyzed(mStatsObj.getLastAnalyzed()); return statsDesc; } @@ -475,16 +468,7 @@ public class StatObjectConverter { } MPartitionColumnStatistics mColStats = new MPartitionColumnStatistics(); - if (partition != null) { - mColStats.setCatName(partition.getTable().getDatabase().getCatalogName()); - mColStats.setPartition(partition); - } else { - // Assume that the statsDesc has already set catalogName when partition is null - mColStats.setCatName(statsDesc.getCatName()); - } - mColStats.setDbName(statsDesc.getDbName()); - mColStats.setTableName(statsDesc.getTableName()); - mColStats.setPartitionName(statsDesc.getPartName()); + mColStats.setPartition(partition); mColStats.setLastAnalyzed(statsDesc.getLastAnalyzed()); mColStats.setColName(statsObj.getColName()); mColStats.setColType(statsObj.getColType()); @@ -668,10 +652,10 @@ public class StatObjectConverter { MPartitionColumnStatistics mStatsObj) { ColumnStatisticsDesc statsDesc = new ColumnStatisticsDesc(); statsDesc.setIsTblLevel(false); - statsDesc.setCatName(mStatsObj.getCatName()); - statsDesc.setDbName(mStatsObj.getDbName()); - statsDesc.setTableName(mStatsObj.getTableName()); - statsDesc.setPartName(mStatsObj.getPartitionName()); + statsDesc.setCatName(mStatsObj.getPartition().getTable().getDatabase().getCatalogName()); + statsDesc.setDbName(mStatsObj.getPartition().getTable().getDatabase().getName()); + statsDesc.setTableName(mStatsObj.getPartition().getTable().getTableName()); + statsDesc.setPartName(mStatsObj.getPartition().getPartitionName()); statsDesc.setLastAnalyzed(mStatsObj.getLastAnalyzed()); return statsDesc; } diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/model/MPartitionColumnStatistics.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/model/MPartitionColumnStatistics.java index 7e51b92e49e..f4ad37d9b53 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/model/MPartitionColumnStatistics.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/model/MPartitionColumnStatistics.java @@ -34,10 +34,6 @@ public class MPartitionColumnStatistics { private MPartition partition; - private String catName; - private String dbName; - private String tableName; - private String partitionName; private String colName; private String colType; private String engine; @@ -60,14 +56,6 @@ public class MPartitionColumnStatistics { public MPartitionColumnStatistics() {} - public String getTableName() { - return tableName; - } - - public void setTableName(String tableName) { - this.tableName = tableName; - } - public String getColName() { return colName; } @@ -132,22 +120,6 @@ public class MPartitionColumnStatistics { this.lastAnalyzed = lastAnalyzed; } - public String getDbName() { - return dbName; - } - - public void setDbName(String dbName) { - this.dbName = dbName; - } - - public String getCatName() { - return catName; - } - - public void setCatName(String catName) { - this.catName = catName; - } - public MPartition getPartition() { return partition; } @@ -156,14 +128,6 @@ public class MPartitionColumnStatistics { this.partition = partition; } - public String getPartitionName() { - return partitionName; - } - - public void setPartitionName(String partitionName) { - this.partitionName = partitionName; - } - public String getColType() { return colType; } diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/model/MTableColumnStatistics.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/model/MTableColumnStatistics.java index 30ba9bf32b7..9feea1958b0 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/model/MTableColumnStatistics.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/model/MTableColumnStatistics.java @@ -33,9 +33,6 @@ package org.apache.hadoop.hive.metastore.model; public class MTableColumnStatistics { private MTable table; - private String catName; - private String dbName; - private String tableName; private String colName; private String colType; private String engine; @@ -66,14 +63,6 @@ public class MTableColumnStatistics { this.table = table; } - public String getTableName() { - return tableName; - } - - public void setTableName(String tableName) { - this.tableName = tableName; - } - public String getColName() { return colName; } @@ -146,22 +135,6 @@ public class MTableColumnStatistics { this.lastAnalyzed = lastAnalyzed; } - public String getDbName() { - return dbName; - } - - public void setDbName(String dbName) { - this.dbName = dbName; - } - - public String getCatName() { - return catName; - } - - public void setCatName(String catName) { - this.catName = catName; - } - public void setBooleanStats(Long numTrues, Long numFalses, Long numNulls) { this.numTrues = numTrues; this.numFalses = numFalses; diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/tools/schematool/SchemaToolTaskMoveDatabase.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/tools/schematool/SchemaToolTaskMoveDatabase.java index 7b06f3f7185..08cb4037206 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/tools/schematool/SchemaToolTaskMoveDatabase.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/tools/schematool/SchemaToolTaskMoveDatabase.java @@ -54,8 +54,6 @@ class SchemaToolTaskMoveDatabase extends SchemaToolTask { conn.setAutoCommit(false); try (Statement stmt = conn.createStatement()) { updateCatalogNameInTable(stmt, "DBS", "CTLG_NAME", "NAME", fromCatName, toCatName, dbName, false); - updateCatalogNameInTable(stmt, "TAB_COL_STATS", "CAT_NAME", "DB_NAME", fromCatName, toCatName, dbName, true); - updateCatalogNameInTable(stmt, "PART_COL_STATS", "CAT_NAME", "DB_NAME", fromCatName, toCatName, dbName, true); updateCatalogNameInTable(stmt, "PARTITION_EVENTS", "CAT_NAME", "DB_NAME", fromCatName, toCatName, dbName, true); updateCatalogNameInTable(stmt, "NOTIFICATION_LOG", "CAT_NAME", "DB_NAME", fromCatName, toCatName, dbName, true); conn.commit(); diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/tools/schematool/SchemaToolTaskMoveTable.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/tools/schematool/SchemaToolTaskMoveTable.java index 70831b00dfc..f7587ba7dac 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/tools/schematool/SchemaToolTaskMoveTable.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/tools/schematool/SchemaToolTaskMoveTable.java @@ -57,8 +57,6 @@ class SchemaToolTaskMoveTable extends SchemaToolTask { conn.setAutoCommit(false); try (Statement stmt = conn.createStatement()) { updateTableId(stmt); - updateDbNameForTable(stmt, "TAB_COL_STATS", "TABLE_NAME", fromCat, toCat, fromDb, toDb, tableName); - updateDbNameForTable(stmt, "PART_COL_STATS", "TABLE_NAME", fromCat, toCat, fromDb, toDb, tableName); updateDbNameForTable(stmt, "PARTITION_EVENTS", "TBL_NAME", fromCat, toCat, fromDb, toDb, tableName); updateDbNameForTable(stmt, "NOTIFICATION_LOG", "TBL_NAME", fromCat, toCat, fromDb, toDb, tableName); conn.commit(); diff --git a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/jdbc/queries/FindColumnsWithStatsHandler.java b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/jdbc/queries/FindColumnsWithStatsHandler.java index e20d429e25f..ddea652bcf8 100644 --- a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/jdbc/queries/FindColumnsWithStatsHandler.java +++ b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/jdbc/queries/FindColumnsWithStatsHandler.java @@ -37,11 +37,16 @@ public class FindColumnsWithStatsHandler implements QueryHandler<List<String>> { //language=SQL private static final String TABLE_SELECT = "SELECT \"COLUMN_NAME\" FROM \"TAB_COL_STATS\" " + - "WHERE \"DB_NAME\" = :dbName AND \"TABLE_NAME\" = :tableName"; + "INNER JOIN \"TBLS\" ON \"TAB_COL_STATS\".\"TBL_ID\" = \"TBLS\".\"TBL_ID\" " + + "INNER JOIN \"DBS\" ON \"TBLS\".\"DB_ID\" = \"DBS\".\"DB_ID\" " + + "WHERE \"DBS\".\"NAME\" = :dbName AND \"TBLS\".\"TBL_NAME\" = :tableName"; //language=SQL private static final String PARTITION_SELECT = "SELECT \"COLUMN_NAME\" FROM \"PART_COL_STATS\" " + - "WHERE \"DB_NAME\" = :dbName AND \"TABLE_NAME\" = :tableName AND \"PARTITION_NAME\" = :partName"; - + "INNER JOIN \"PARTITIONS\" ON \"PART_COL_STATS\".\"PART_ID\" = \"PARTITIONS\".\"PART_ID\" " + + "INNER JOIN \"TBLS\" ON \"PARTITIONS\".\"TBL_ID\" = \"TBLS\".\"TBL_ID\" " + + "INNER JOIN \"DBS\" ON \"TBLS\".\"DB_ID\" = \"DBS\".\"DB_ID\" " + + "WHERE \"DBS\".\"NAME\" = :dbName AND \"TBLS\".\"TBL_NAME\" = :tableName AND \"PARTITIONS\".\"PART_NAME\" = :partName"; + private final CompactionInfo ci; public FindColumnsWithStatsHandler(CompactionInfo ci) { diff --git a/standalone-metastore/metastore-server/src/main/resources/package.jdo b/standalone-metastore/metastore-server/src/main/resources/package.jdo index 982703b2783..5e2f686bff8 100644 --- a/standalone-metastore/metastore-server/src/main/resources/package.jdo +++ b/standalone-metastore/metastore-server/src/main/resources/package.jdo @@ -939,15 +939,6 @@ <column name="CS_ID"/> </datastore-identity> - <field name ="catName"> - <column name="CAT_NAME" length="256" jdbc-type="VARCHAR" allows-null="false"/> - </field> - <field name ="dbName"> - <column name="DB_NAME" length="128" jdbc-type="VARCHAR" allows-null="false"/> - </field> - <field name="tableName"> - <column name="TABLE_NAME" length="256" jdbc-type="VARCHAR" allows-null="false"/> - </field> <field name="table"> <column name="TBL_ID"/> </field> @@ -1013,18 +1004,6 @@ <column name="CS_ID"/> </datastore-identity> - <field name ="catName"> - <column name="CAT_NAME" length="256" jdbc-type="VARCHAR" allows-null="false"/> - </field> - <field name ="dbName"> - <column name="DB_NAME" length="128" jdbc-type="VARCHAR" allows-null="false"/> - </field> - <field name="tableName"> - <column name="TABLE_NAME" length="256" jdbc-type="VARCHAR" allows-null="false"/> - </field> - <field name="partitionName"> - <column name="PARTITION_NAME" length="767" jdbc-type="VARCHAR" allows-null="false"/> - </field> <field name="partition"> <column name="PART_ID"/> </field> diff --git a/standalone-metastore/metastore-server/src/main/sql/derby/hive-schema-4.1.0.derby.sql b/standalone-metastore/metastore-server/src/main/sql/derby/hive-schema-4.1.0.derby.sql index 6216a47e9ac..ea1f90aff89 100644 --- a/standalone-metastore/metastore-server/src/main/sql/derby/hive-schema-4.1.0.derby.sql +++ b/standalone-metastore/metastore-server/src/main/sql/derby/hive-schema-4.1.0.derby.sql @@ -89,9 +89,6 @@ CREATE TABLE "APP"."SDS" ("SD_ID" BIGINT NOT NULL, "INPUT_FORMAT" VARCHAR(4000), CREATE TABLE "APP"."SEQUENCE_TABLE" ("SEQUENCE_NAME" VARCHAR(256) NOT NULL, "NEXT_VAL" BIGINT NOT NULL); CREATE TABLE "APP"."TAB_COL_STATS"( - "CAT_NAME" VARCHAR(256) NOT NULL, - "DB_NAME" VARCHAR(128) NOT NULL, - "TABLE_NAME" VARCHAR(256) NOT NULL, "COLUMN_NAME" VARCHAR(767) NOT NULL, "COLUMN_TYPE" VARCHAR(128) NOT NULL, "LONG_LOW_VALUE" BIGINT, @@ -139,10 +136,6 @@ CREATE TABLE "APP"."MASTER_KEYS" ("KEY_ID" INTEGER NOT NULL generated always as CREATE TABLE "APP"."DELEGATION_TOKENS" ( "TOKEN_IDENT" VARCHAR(767) NOT NULL, "TOKEN" VARCHAR(767)); CREATE TABLE "APP"."PART_COL_STATS"( - "CAT_NAME" VARCHAR(256) NOT NULL, - "DB_NAME" VARCHAR(128) NOT NULL, - "TABLE_NAME" VARCHAR(256) NOT NULL, - "PARTITION_NAME" VARCHAR(767) NOT NULL, "COLUMN_NAME" VARCHAR(767) NOT NULL, "COLUMN_TYPE" VARCHAR(128) NOT NULL, "LONG_LOW_VALUE" BIGINT, @@ -266,9 +259,9 @@ CREATE UNIQUE INDEX "APP"."DBPRIVILEGEINDEX" ON "APP"."DB_PRIVS" ("AUTHORIZER", CREATE UNIQUE INDEX "APP"."DCPRIVILEGEINDEX" ON "APP"."DC_PRIVS" ("AUTHORIZER", "NAME", "PRINCIPAL_NAME", "PRINCIPAL_TYPE", "DC_PRIV", "GRANTOR", "GRANTOR_TYPE"); -CREATE INDEX "APP"."PCS_STATS_IDX" ON "APP"."PART_COL_STATS" ("DB_NAME","TABLE_NAME","COLUMN_NAME","PARTITION_NAME","CAT_NAME"); +CREATE INDEX "APP"."PCS_STATS_IDX" ON "APP"."PART_COL_STATS" ("PART_ID","COLUMN_NAME"); -CREATE INDEX "APP"."TAB_COL_STATS_IDX" ON "APP"."TAB_COL_STATS" ("DB_NAME", "TABLE_NAME", "COLUMN_NAME", "CAT_NAME"); +CREATE INDEX "APP"."TAB_COL_STATS_IDX" ON "APP"."TAB_COL_STATS" ("TBL_ID", "COLUMN_NAME"); CREATE INDEX "APP"."PARTPRIVILEGEINDEX" ON "APP"."PART_PRIVS" ("AUTHORIZER", "PART_ID", "PRINCIPAL_NAME", "PRINCIPAL_TYPE", "PART_PRIV", "GRANTOR", "GRANTOR_TYPE"); diff --git a/standalone-metastore/metastore-server/src/main/sql/derby/upgrade-4.0.0-to-4.1.0.derby.sql b/standalone-metastore/metastore-server/src/main/sql/derby/upgrade-4.0.0-to-4.1.0.derby.sql index 12028a9b460..fd56b427ae7 100644 --- a/standalone-metastore/metastore-server/src/main/sql/derby/upgrade-4.0.0-to-4.1.0.derby.sql +++ b/standalone-metastore/metastore-server/src/main/sql/derby/upgrade-4.0.0-to-4.1.0.derby.sql @@ -1,2 +1,16 @@ +-- HIVE-27725 +DROP INDEX "APP"."TAB_COL_STATS_IDX"; +CREATE INDEX "APP"."TAB_COL_STATS_IDX" ON "APP"."TAB_COL_STATS" ("TBL_ID", "COLUMN_NAME"); +ALTER TABLE "APP"."TAB_COL_STATS" DROP COLUMN "CAT_NAME"; +ALTER TABLE "APP"."TAB_COL_STATS" DROP COLUMN "DB_NAME"; +ALTER TABLE "APP"."TAB_COL_STATS" DROP COLUMN "TABLE_NAME"; + +DROP INDEX "APP"."PCS_STATS_IDX"; +CREATE INDEX "APP"."PCS_STATS_IDX" ON "APP"."PART_COL_STATS" ("PART_ID","COLUMN_NAME"); +ALTER TABLE "APP"."PART_COL_STATS" DROP COLUMN "CAT_NAME"; +ALTER TABLE "APP"."PART_COL_STATS" DROP COLUMN "DB_NAME"; +ALTER TABLE "APP"."PART_COL_STATS" DROP COLUMN "TABLE_NAME"; +ALTER TABLE "APP"."PART_COL_STATS" DROP COLUMN "PARTITION_NAME"; + -- This needs to be the last thing done. Insert any changes above this line. UPDATE "APP".VERSION SET SCHEMA_VERSION='4.1.0', VERSION_COMMENT='Hive release version 4.1.0' where VER_ID=1; \ No newline at end of file diff --git a/standalone-metastore/metastore-server/src/main/sql/mssql/hive-schema-4.1.0.mssql.sql b/standalone-metastore/metastore-server/src/main/sql/mssql/hive-schema-4.1.0.mssql.sql index c32de734c6c..c0cfeafc370 100644 --- a/standalone-metastore/metastore-server/src/main/sql/mssql/hive-schema-4.1.0.mssql.sql +++ b/standalone-metastore/metastore-server/src/main/sql/mssql/hive-schema-4.1.0.mssql.sql @@ -61,7 +61,6 @@ CREATE TABLE PART_COL_STATS AVG_COL_LEN float NULL, "COLUMN_NAME" nvarchar(767) NOT NULL, COLUMN_TYPE nvarchar(128) NOT NULL, - DB_NAME nvarchar(128) NOT NULL, BIG_DECIMAL_HIGH_VALUE nvarchar(255) NULL, BIG_DECIMAL_LOW_VALUE nvarchar(255) NULL, DOUBLE_HIGH_VALUE float NULL, @@ -76,16 +75,13 @@ CREATE TABLE PART_COL_STATS NUM_NULLS bigint NOT NULL, NUM_TRUES bigint NULL, PART_ID bigint NULL, - PARTITION_NAME nvarchar(767) NOT NULL, - "TABLE_NAME" nvarchar(256) NOT NULL, - "CAT_NAME" nvarchar(256) NOT NULL, "ENGINE" nvarchar(128) NOT NULL, HISTOGRAM varbinary(max) NULL ); ALTER TABLE PART_COL_STATS ADD CONSTRAINT PART_COL_STATS_PK PRIMARY KEY (CS_ID); -CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (DB_NAME,TABLE_NAME,COLUMN_NAME,PARTITION_NAME, CAT_NAME); +CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (PART_ID,COLUMN_NAME); -- Table PART_PRIVS for classes [org.apache.hadoop.hive.metastore.model.MPartitionPrivilege] CREATE TABLE PART_PRIVS @@ -230,7 +226,6 @@ CREATE TABLE TAB_COL_STATS AVG_COL_LEN float NULL, "COLUMN_NAME" nvarchar(767) NOT NULL, COLUMN_TYPE nvarchar(128) NOT NULL, - DB_NAME nvarchar(128) NOT NULL, BIG_DECIMAL_HIGH_VALUE nvarchar(255) NULL, BIG_DECIMAL_LOW_VALUE nvarchar(255) NULL, DOUBLE_HIGH_VALUE float NULL, @@ -245,14 +240,12 @@ CREATE TABLE TAB_COL_STATS NUM_NULLS bigint NOT NULL, NUM_TRUES bigint NULL, TBL_ID bigint NULL, - "TABLE_NAME" nvarchar(256) NOT NULL, - "CAT_NAME" nvarchar(256) NOT NULL, "ENGINE" nvarchar(128) NOT NULL, HISTOGRAM varbinary(max) NULL ); ALTER TABLE TAB_COL_STATS ADD CONSTRAINT TAB_COL_STATS_PK PRIMARY KEY (CS_ID); -CREATE INDEX TAB_COL_STATS_IDX ON TAB_COL_STATS (DB_NAME, TABLE_NAME, COLUMN_NAME, CAT_NAME); +CREATE INDEX TAB_COL_STATS_IDX ON TAB_COL_STATS (TBL_ID, COLUMN_NAME); -- Table TYPES for classes [org.apache.hadoop.hive.metastore.model.MType] CREATE TABLE TYPES @@ -723,9 +716,6 @@ CREATE UNIQUE INDEX UNIQUE_CTLG ON CTLGS ("NAME"); -- Constraints for table PART_COL_STATS for class(es) [org.apache.hadoop.hive.metastore.model.MPartitionColumnStatistics] ALTER TABLE PART_COL_STATS ADD CONSTRAINT PART_COL_STATS_FK1 FOREIGN KEY (PART_ID) REFERENCES PARTITIONS (PART_ID) ; -CREATE INDEX PART_COL_STATS_N49 ON PART_COL_STATS (PART_ID); - - -- Constraints for table PART_PRIVS for class(es) [org.apache.hadoop.hive.metastore.model.MPartitionPrivilege] ALTER TABLE PART_PRIVS ADD CONSTRAINT PART_PRIVS_FK1 FOREIGN KEY (PART_ID) REFERENCES PARTITIONS (PART_ID) ; @@ -777,9 +767,6 @@ CREATE INDEX DB_PRIVS_N49 ON DB_PRIVS (DB_ID); -- Constraints for table TAB_COL_STATS for class(es) [org.apache.hadoop.hive.metastore.model.MTableColumnStatistics] ALTER TABLE TAB_COL_STATS ADD CONSTRAINT TAB_COL_STATS_FK1 FOREIGN KEY (TBL_ID) REFERENCES TBLS (TBL_ID) ; -CREATE INDEX TAB_COL_STATS_N49 ON TAB_COL_STATS (TBL_ID); - - -- Constraints for table TYPES for class(es) [org.apache.hadoop.hive.metastore.model.MType] CREATE UNIQUE INDEX UNIQUETYPE ON TYPES (TYPE_NAME); diff --git a/standalone-metastore/metastore-server/src/main/sql/mssql/upgrade-4.0.0-to-4.1.0.mssql.sql b/standalone-metastore/metastore-server/src/main/sql/mssql/upgrade-4.0.0-to-4.1.0.mssql.sql index 723f5642dd2..9fbf56fa5d7 100644 --- a/standalone-metastore/metastore-server/src/main/sql/mssql/upgrade-4.0.0-to-4.1.0.mssql.sql +++ b/standalone-metastore/metastore-server/src/main/sql/mssql/upgrade-4.0.0-to-4.1.0.mssql.sql @@ -1,5 +1,16 @@ SELECT 'Upgrading MetaStore schema from 4.0.0 to 4.1.0' AS MESSAGE; +-- HIVE-27725 +DROP INDEX TAB_COL_STATS_IDX ON TAB_COL_STATS; +CREATE INDEX TAB_COL_STATS_IDX ON TAB_COL_STATS (TBL_ID, COLUMN_NAME); +DROP INDEX TAB_COL_STATS_N49 ON TAB_COL_STATS; +ALTER TABLE TAB_COL_STATS DROP COLUMN CAT_NAME, DB_NAME, TABLE_NAME; + +DROP INDEX PCS_STATS_IDX ON PART_COL_STATS; +CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (PART_ID,COLUMN_NAME); +DROP INDEX PART_COL_STATS_N49 on PART_COL_STATS; +ALTER TABLE PART_COL_STATS DROP COLUMN CAT_NAME, DB_NAME, TABLE_NAME, PARTITION_NAME; + -- These lines need to be last. Insert any changes above. UPDATE VERSION SET SCHEMA_VERSION='4.1.0', VERSION_COMMENT='Hive release version 4.1.0' where VER_ID=1; SELECT 'Finished upgrading MetaStore schema from 4.0.0 to 4.1.0' AS MESSAGE; diff --git a/standalone-metastore/metastore-server/src/main/sql/mysql/hive-schema-4.1.0.mysql.sql b/standalone-metastore/metastore-server/src/main/sql/mysql/hive-schema-4.1.0.mysql.sql index 9f3b8835332..078f81a097a 100644 --- a/standalone-metastore/metastore-server/src/main/sql/mysql/hive-schema-4.1.0.mysql.sql +++ b/standalone-metastore/metastore-server/src/main/sql/mysql/hive-schema-4.1.0.mysql.sql @@ -677,9 +677,6 @@ CREATE TABLE IF NOT EXISTS `TBL_PRIVS` ( -- CREATE TABLE IF NOT EXISTS `TAB_COL_STATS` ( `CS_ID` bigint(20) NOT NULL, - `CAT_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, - `DB_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, - `TABLE_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, `COLUMN_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, `COLUMN_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, `TBL_ID` bigint(20) NOT NULL, @@ -703,16 +700,12 @@ CREATE TABLE IF NOT EXISTS `TAB_COL_STATS` ( CONSTRAINT `TAB_COL_STATS_FK` FOREIGN KEY (`TBL_ID`) REFERENCES `TBLS` (`TBL_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -CREATE INDEX TAB_COL_STATS_IDX ON TAB_COL_STATS (DB_NAME, TABLE_NAME, COLUMN_NAME, CAT_NAME) USING BTREE; +CREATE INDEX TAB_COL_STATS_IDX ON TAB_COL_STATS (TBL_ID, COLUMN_NAME) USING BTREE; -- -- Table structure for table `PART_COL_STATS` -- CREATE TABLE IF NOT EXISTS `PART_COL_STATS` ( `CS_ID` bigint(20) NOT NULL, - `CAT_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, - `DB_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, - `TABLE_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, - `PARTITION_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, `COLUMN_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, `COLUMN_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, `PART_ID` bigint(20) NOT NULL, @@ -736,7 +729,7 @@ CREATE TABLE IF NOT EXISTS `PART_COL_STATS` ( CONSTRAINT `PART_COL_STATS_FK` FOREIGN KEY (`PART_ID`) REFERENCES `PARTITIONS` (`PART_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (DB_NAME,TABLE_NAME,COLUMN_NAME,PARTITION_NAME,CAT_NAME) USING BTREE; +CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (PART_ID,COLUMN_NAME) USING BTREE; -- -- Table structure for table `TYPES` diff --git a/standalone-metastore/metastore-server/src/main/sql/mysql/upgrade-4.0.0-to-4.1.0.mysql.sql b/standalone-metastore/metastore-server/src/main/sql/mysql/upgrade-4.0.0-to-4.1.0.mysql.sql index ffa92601d79..5d535289dff 100644 --- a/standalone-metastore/metastore-server/src/main/sql/mysql/upgrade-4.0.0-to-4.1.0.mysql.sql +++ b/standalone-metastore/metastore-server/src/main/sql/mysql/upgrade-4.0.0-to-4.1.0.mysql.sql @@ -1,5 +1,14 @@ SELECT 'Upgrading MetaStore schema from 4.0.0 to 4.1.0' AS MESSAGE; +-- HIVE-27725 +DROP INDEX TAB_COL_STATS_IDX ON TAB_COL_STATS; +CREATE INDEX TAB_COL_STATS_IDX ON TAB_COL_STATS (TBL_ID, COLUMN_NAME) USING BTREE; +ALTER TABLE TAB_COL_STATS DROP COLUMN CAT_NAME, DROP COLUMN DB_NAME, DROP COLUMN TABLE_NAME; + +DROP INDEX PCS_STATS_IDX ON PART_COL_STATS; +CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (PART_ID, COLUMN_NAME) USING BTREE; +ALTER TABLE PART_COL_STATS DROP COLUMN CAT_NAME, DROP COLUMN DB_NAME, DROP COLUMN TABLE_NAME, DROP COLUMN PARTITION_NAME; + -- These lines need to be last. Insert any changes above. UPDATE VERSION SET SCHEMA_VERSION='4.1.0', VERSION_COMMENT='Hive release version 4.1.0' where VER_ID=1; SELECT 'Finished upgrading MetaStore schema from 4.0.0 to 4.1.0' AS MESSAGE; diff --git a/standalone-metastore/metastore-server/src/main/sql/oracle/hive-schema-4.1.0.oracle.sql b/standalone-metastore/metastore-server/src/main/sql/oracle/hive-schema-4.1.0.oracle.sql index 5623e23092d..b878606fe6e 100644 --- a/standalone-metastore/metastore-server/src/main/sql/oracle/hive-schema-4.1.0.oracle.sql +++ b/standalone-metastore/metastore-server/src/main/sql/oracle/hive-schema-4.1.0.oracle.sql @@ -527,9 +527,6 @@ ALTER TABLE DBS ADD CONSTRAINT CTLGS_FK FOREIGN KEY (CTLG_NAME) REFERENCES CTLGS CREATE TABLE TAB_COL_STATS ( CS_ID NUMBER NOT NULL, - CAT_NAME VARCHAR2(256) NOT NULL, - DB_NAME VARCHAR2(128) NOT NULL, - TABLE_NAME VARCHAR2(256) NOT NULL, COLUMN_NAME VARCHAR2(767) NOT NULL, COLUMN_TYPE VARCHAR2(128) NOT NULL, TBL_ID NUMBER NOT NULL, @@ -555,9 +552,7 @@ ALTER TABLE TAB_COL_STATS ADD CONSTRAINT TAB_COL_STATS_PKEY PRIMARY KEY (CS_ID); ALTER TABLE TAB_COL_STATS ADD CONSTRAINT TAB_COL_STATS_FK FOREIGN KEY (TBL_ID) REFERENCES TBLS (TBL_ID) INITIALLY DEFERRED ; -CREATE INDEX TAB_COL_STATS_N49 ON TAB_COL_STATS(TBL_ID); - -CREATE INDEX TAB_COL_STATS_IDX ON TAB_COL_STATS (DB_NAME, TABLE_NAME, COLUMN_NAME, CAT_NAME); +CREATE INDEX TAB_COL_STATS_IDX ON TAB_COL_STATS (TBL_ID, COLUMN_NAME); CREATE TABLE VERSION ( VER_ID NUMBER NOT NULL, @@ -568,10 +563,6 @@ ALTER TABLE VERSION ADD CONSTRAINT VERSION_PK PRIMARY KEY (VER_ID); CREATE TABLE PART_COL_STATS ( CS_ID NUMBER NOT NULL, - CAT_NAME VARCHAR2(256) NOT NULL, - DB_NAME VARCHAR2(128) NOT NULL, - TABLE_NAME VARCHAR2(256) NOT NULL, - PARTITION_NAME VARCHAR2(767) NOT NULL, COLUMN_NAME VARCHAR2(767) NOT NULL, COLUMN_TYPE VARCHAR2(128) NOT NULL, PART_ID NUMBER NOT NULL, @@ -597,9 +588,7 @@ ALTER TABLE PART_COL_STATS ADD CONSTRAINT PART_COL_STATS_PKEY PRIMARY KEY (CS_ID ALTER TABLE PART_COL_STATS ADD CONSTRAINT PART_COL_STATS_FK FOREIGN KEY (PART_ID) REFERENCES PARTITIONS (PART_ID) INITIALLY DEFERRED; -CREATE INDEX PART_COL_STATS_N49 ON PART_COL_STATS (PART_ID); - -CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (DB_NAME,TABLE_NAME,COLUMN_NAME,PARTITION_NAME,CAT_NAME); +CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (PART_ID,COLUMN_NAME); CREATE TABLE FUNCS ( FUNC_ID NUMBER NOT NULL, diff --git a/standalone-metastore/metastore-server/src/main/sql/oracle/upgrade-4.0.0-to-4.1.0.oracle.sql b/standalone-metastore/metastore-server/src/main/sql/oracle/upgrade-4.0.0-to-4.1.0.oracle.sql index e4c9f9a9343..fbc3de39e28 100644 --- a/standalone-metastore/metastore-server/src/main/sql/oracle/upgrade-4.0.0-to-4.1.0.oracle.sql +++ b/standalone-metastore/metastore-server/src/main/sql/oracle/upgrade-4.0.0-to-4.1.0.oracle.sql @@ -1,5 +1,16 @@ SELECT 'Upgrading MetaStore schema from 4.0.0 to 4.1.0' AS Status from dual; +-- HIVE-27725 +DROP INDEX TAB_COL_STATS_IDX; +CREATE INDEX TAB_COL_STATS_IDX ON TAB_COL_STATS (TBL_ID, COLUMN_NAME); +DROP INDEX TAB_COL_STATS_N49; +ALTER TABLE TAB_COL_STATS DROP (CAT_NAME, DB_NAME, TABLE_NAME); + +DROP INDEX PCS_STATS_IDX; +CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (PART_ID, COLUMN_NAME); +DROP INDEX PART_COL_STATS_N49; +ALTER TABLE PART_COL_STATS DROP (CAT_NAME, DB_NAME, TABLE_NAME, PARTITION_NAME); + -- These lines need to be last. Insert any changes above. UPDATE VERSION SET SCHEMA_VERSION='4.1.0', VERSION_COMMENT='Hive release version 4.1.0' where VER_ID=1; SELECT 'Finished upgrading MetaStore schema from 4.0.0 to 4.1.0' AS Status from dual; diff --git a/standalone-metastore/metastore-server/src/main/sql/postgres/hive-schema-4.1.0.postgres.sql b/standalone-metastore/metastore-server/src/main/sql/postgres/hive-schema-4.1.0.postgres.sql index 7abb5e78777..2b3a4cd17db 100644 --- a/standalone-metastore/metastore-server/src/main/sql/postgres/hive-schema-4.1.0.postgres.sql +++ b/standalone-metastore/metastore-server/src/main/sql/postgres/hive-schema-4.1.0.postgres.sql @@ -531,9 +531,6 @@ CREATE TABLE "DELEGATION_TOKENS" CREATE TABLE "TAB_COL_STATS" ( "CS_ID" bigint NOT NULL, - "CAT_NAME" character varying(256) DEFAULT NULL::character varying, - "DB_NAME" character varying(128) DEFAULT NULL::character varying, - "TABLE_NAME" character varying(256) DEFAULT NULL::character varying, "COLUMN_NAME" character varying(767) DEFAULT NULL::character varying, "COLUMN_TYPE" character varying(128) DEFAULT NULL::character varying, "TBL_ID" bigint NOT NULL, @@ -570,10 +567,6 @@ CREATE TABLE "VERSION" ( CREATE TABLE "PART_COL_STATS" ( "CS_ID" bigint NOT NULL, - "CAT_NAME" character varying(256) DEFAULT NULL::character varying, - "DB_NAME" character varying(128) DEFAULT NULL::character varying, - "TABLE_NAME" character varying(256) DEFAULT NULL::character varying, - "PARTITION_NAME" character varying(767) DEFAULT NULL::character varying, "COLUMN_NAME" character varying(767) DEFAULT NULL::character varying, "COLUMN_TYPE" character varying(128) DEFAULT NULL::character varying, "PART_ID" bigint NOT NULL, @@ -1188,7 +1181,7 @@ CREATE INDEX "PART_PRIVS_N49" ON "PART_PRIVS" USING btree ("PART_ID"); -- Name: PCS_STATS_IDX; Type: INDEX; Schema: public; Owner: hiveuser; Tablespace: -- -CREATE INDEX "PCS_STATS_IDX" ON "PART_COL_STATS" USING btree ("DB_NAME","TABLE_NAME","COLUMN_NAME","PARTITION_NAME","CAT_NAME"); +CREATE INDEX "PCS_STATS_IDX" ON "PART_COL_STATS" USING btree ("PART_ID","COLUMN_NAME"); -- @@ -1276,7 +1269,7 @@ CREATE INDEX "TBL_COL_PRIVS_N49" ON "TBL_COL_PRIVS" USING btree ("TBL_ID"); -- Name: TAB_COL_STATS_IDX; Type: INDEX; Schema: public; Owner: hiveuser; Tablespace: -- -CREATE INDEX "TAB_COL_STATS_IDX" ON "TAB_COL_STATS" USING btree ("DB_NAME","TABLE_NAME","COLUMN_NAME","CAT_NAME"); +CREATE INDEX "TAB_COL_STATS_IDX" ON "TAB_COL_STATS" USING btree ("TBL_ID","COLUMN_NAME"); -- -- Name: TBL_PRIVS_N49; Type: INDEX; Schema: public; Owner: hiveuser; Tablespace: @@ -1291,18 +1284,6 @@ CREATE INDEX "TBL_PRIVS_N49" ON "TBL_PRIVS" USING btree ("TBL_ID"); CREATE INDEX "TYPE_FIELDS_N49" ON "TYPE_FIELDS" USING btree ("TYPE_NAME"); --- --- Name: TAB_COL_STATS_N49; Type: INDEX; Schema: public; Owner: hiveuser; Tablespace: --- - -CREATE INDEX "TAB_COL_STATS_N49" ON "TAB_COL_STATS" USING btree ("TBL_ID"); - --- --- Name: PART_COL_STATS_N49; Type: INDEX; Schema: public; Owner: hiveuser; Tablespace: --- - -CREATE INDEX "PART_COL_STATS_N49" ON "PART_COL_STATS" USING btree ("PART_ID"); - -- -- Name: UNIQUEFUNCTION; Type: INDEX; Schema: public; Owner: hiveuser; Tablespace: -- diff --git a/standalone-metastore/metastore-server/src/main/sql/postgres/upgrade-4.0.0-to-4.1.0.postgres.sql b/standalone-metastore/metastore-server/src/main/sql/postgres/upgrade-4.0.0-to-4.1.0.postgres.sql index 13d7dd5b107..cae50ce4100 100644 --- a/standalone-metastore/metastore-server/src/main/sql/postgres/upgrade-4.0.0-to-4.1.0.postgres.sql +++ b/standalone-metastore/metastore-server/src/main/sql/postgres/upgrade-4.0.0-to-4.1.0.postgres.sql @@ -1,5 +1,16 @@ SELECT 'Upgrading MetaStore schema from 4.0.0 to 4.1.0'; +-- HIVE-27725 +DROP INDEX "TAB_COL_STATS_IDX"; +CREATE INDEX "TAB_COL_STATS_IDX" ON "TAB_COL_STATS" USING btree ("TBL_ID","COLUMN_NAME"); +DROP INDEX "TAB_COL_STATS_N49"; +ALTER TABLE "TAB_COL_STATS" DROP COLUMN "CAT_NAME", DROP COLUMN "DB_NAME", DROP COLUMN "TABLE_NAME"; + +DROP INDEX "PCS_STATS_IDX"; +CREATE INDEX "PCS_STATS_IDX" ON "PART_COL_STATS" USING btree ("PART_ID","COLUMN_NAME"); +DROP INDEX "PART_COL_STATS_N49"; +ALTER TABLE "PART_COL_STATS" DROP COLUMN "CAT_NAME", DROP COLUMN "DB_NAME", DROP COLUMN "TABLE_NAME", DROP COLUMN "PARTITION_NAME"; + -- These lines need to be last. Insert any changes above. UPDATE "VERSION" SET "SCHEMA_VERSION"='4.1.0', "VERSION_COMMENT"='Hive release version 4.1.0' where "VER_ID"=1; SELECT 'Finished upgrading MetaStore schema from 4.0.0 to 4.1.0'; diff --git a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestObjectStore.java b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestObjectStore.java index 1da814dd092..40674b9691f 100644 --- a/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestObjectStore.java +++ b/standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/TestObjectStore.java @@ -32,6 +32,7 @@ import org.apache.hadoop.hive.metastore.api.ColumnStatisticsObj; import org.apache.hadoop.hive.metastore.api.CreationMetadata; import org.apache.hadoop.hive.metastore.api.CurrentNotificationEventId; import org.apache.hadoop.hive.metastore.api.Database; +import org.apache.hadoop.hive.metastore.api.DecimalColumnStatsData; import org.apache.hadoop.hive.metastore.api.AddPackageRequest; import org.apache.hadoop.hive.metastore.api.DropPackageRequest; import org.apache.hadoop.hive.metastore.api.FieldSchema; @@ -646,14 +647,14 @@ public class TestObjectStore { createPartitionedTable(false, false); // query the partitions with JDO List<Partition> partitions; - try(AutoCloseable c =deadline()) { + try(AutoCloseable c = deadline()) { partitions = objectStore.getPartitionsInternal(DEFAULT_CATALOG_NAME, DB1, TABLE1, false, true, new GetPartitionsArgs.GetPartitionsArgsBuilder().max(10).build()); } Assert.assertEquals(3, partitions.size()); // drop partitions with directSql - try(AutoCloseable c =deadline()) { + try(AutoCloseable c = deadline()) { objectStore.dropPartitionsInternal(DEFAULT_CATALOG_NAME, DB1, TABLE1, Arrays.asList("test_part_col=a0", "test_part_col=a1"), true, false); } @@ -780,6 +781,49 @@ public class TestObjectStore { checkBackendTableSize("COLUMNS_V2", 5); } + @Test + public void testTableStatisticsOps() throws Exception { + createPartitionedTable(true, true); + + List<ColumnStatistics> tabColStats; + try (AutoCloseable c = deadline()) { + tabColStats = objectStore.getTableColumnStatistics(DEFAULT_CATALOG_NAME, DB1, TABLE1, + Arrays.asList("test_col1", "test_col2")); + } + Assert.assertEquals(0, tabColStats.size()); + + ColumnStatisticsDesc statsDesc = new ColumnStatisticsDesc(true, DB1, TABLE1); + ColumnStatisticsObj statsObj1 = new ColumnStatisticsObj("test_col1", "int", + new ColumnStatisticsData(ColumnStatisticsData._Fields.DECIMAL_STATS, new DecimalColumnStatsData(100, 1000))); + ColumnStatisticsObj statsObj2 = new ColumnStatisticsObj("test_col2", "int", + new ColumnStatisticsData(ColumnStatisticsData._Fields.DECIMAL_STATS, new DecimalColumnStatsData(200, 2000))); + ColumnStatistics colStats = new ColumnStatistics(statsDesc, Arrays.asList(statsObj1, statsObj2)); + colStats.setEngine(ENGINE); + objectStore.updateTableColumnStatistics(colStats, null, 0); + + try (AutoCloseable c = deadline()) { + tabColStats = objectStore.getTableColumnStatistics(DEFAULT_CATALOG_NAME, DB1, TABLE1, + Arrays.asList("test_col1", "test_col2")); + } + Assert.assertEquals(1, tabColStats.size()); + Assert.assertEquals(2, tabColStats.get(0).getStatsObjSize()); + + objectStore.deleteTableColumnStatistics(DEFAULT_CATALOG_NAME, DB1, TABLE1, "test_col1", ENGINE); + try (AutoCloseable c = deadline()) { + tabColStats = objectStore.getTableColumnStatistics(DEFAULT_CATALOG_NAME, DB1, TABLE1, + Arrays.asList("test_col1", "test_col2")); + } + Assert.assertEquals(1, tabColStats.size()); + Assert.assertEquals(1, tabColStats.get(0).getStatsObjSize()); + + objectStore.deleteTableColumnStatistics(DEFAULT_CATALOG_NAME, DB1, TABLE1, "test_col2", ENGINE); + try (AutoCloseable c = deadline()) { + tabColStats = objectStore.getTableColumnStatistics(DEFAULT_CATALOG_NAME, DB1, TABLE1, + Arrays.asList("test_col1", "test_col2")); + } + Assert.assertEquals(0, tabColStats.size()); + } + @Test public void testGetPartitionStatistics() throws Exception { createPartitionedTable(true, true); diff --git a/standalone-metastore/metastore-tools/metastore-benchmarks/src/main/java/org/apache/hadoop/hive/metastore/tools/BenchmarkTool.java b/standalone-metastore/metastore-tools/metastore-benchmarks/src/main/java/org/apache/hadoop/hive/metastore/tools/BenchmarkTool.java index 93556e7f0fa..5e3cb133953 100644 --- a/standalone-metastore/metastore-tools/metastore-benchmarks/src/main/java/org/apache/hadoop/hive/metastore/tools/BenchmarkTool.java +++ b/standalone-metastore/metastore-tools/metastore-benchmarks/src/main/java/org/apache/hadoop/hive/metastore/tools/BenchmarkTool.java @@ -59,6 +59,7 @@ import static org.apache.hadoop.hive.metastore.tools.HMSBenchmarks.benchmarkGetP import static org.apache.hadoop.hive.metastore.tools.HMSBenchmarks.benchmarkGetPartitions; import static org.apache.hadoop.hive.metastore.tools.HMSBenchmarks.benchmarkGetPartitionsByFilter; import static org.apache.hadoop.hive.metastore.tools.HMSBenchmarks.benchmarkGetPartitionsByName; +import static org.apache.hadoop.hive.metastore.tools.HMSBenchmarks.benchmarkGetPartitionsStat; import static org.apache.hadoop.hive.metastore.tools.HMSBenchmarks.benchmarkGetTable; import static org.apache.hadoop.hive.metastore.tools.HMSBenchmarks.benchmarkListAllTables; import static org.apache.hadoop.hive.metastore.tools.HMSBenchmarks.benchmarkListDatabases; @@ -69,6 +70,7 @@ import static org.apache.hadoop.hive.metastore.tools.HMSBenchmarks.benchmarkOpen import static org.apache.hadoop.hive.metastore.tools.HMSBenchmarks.benchmarkPartitionManagement; import static org.apache.hadoop.hive.metastore.tools.HMSBenchmarks.benchmarkRenameTable; import static org.apache.hadoop.hive.metastore.tools.HMSBenchmarks.benchmarkTableCreate; +import static org.apache.hadoop.hive.metastore.tools.HMSBenchmarks.benchmarkUpdatePartitionsStat; import static org.apache.hadoop.hive.metastore.tools.Util.getServerUri; import static picocli.CommandLine.Command; import static picocli.CommandLine.Option; @@ -287,6 +289,10 @@ public class BenchmarkTool implements Runnable { () -> benchmarkGetPartitionsByName(bench, bData, 1)) .add("getPartitionsByFilter", () -> benchmarkGetPartitionsByFilter(bench, bData, 1)) + .add("getPartitionsStat", + () -> benchmarkGetPartitionsStat(bench, bData, 1)) + .add("updatePartitionsStat", + () -> benchmarkUpdatePartitionsStat(bench, bData, 1)) .add("renameTable", () -> benchmarkRenameTable(bench, bData, 1)) .add("dropDatabase", @@ -313,6 +319,10 @@ public class BenchmarkTool implements Runnable { () -> benchmarkGetPartitionsByName(bench, bData, howMany)) .add("getPartitionsByFilter" + '.' + howMany, () -> benchmarkGetPartitionsByFilter(bench, bData, howMany)) + .add("getPartitionsStat" + '.' + howMany, + () -> benchmarkGetPartitionsStat(bench, bData, howMany)) + .add("updatePartitionsStat" + '.' + howMany, + () -> benchmarkUpdatePartitionsStat(bench, bData, howMany)) .add("addPartitions" + '.' + howMany, () -> benchmarkCreatePartitions(bench, bData, howMany)) .add("dropPartitions" + '.' + howMany, diff --git a/standalone-metastore/metastore-tools/metastore-benchmarks/src/main/java/org/apache/hadoop/hive/metastore/tools/HMSBenchmarks.java b/standalone-metastore/metastore-tools/metastore-benchmarks/src/main/java/org/apache/hadoop/hive/metastore/tools/HMSBenchmarks.java index fdab0717835..f3f4c74662e 100644 --- a/standalone-metastore/metastore-tools/metastore-benchmarks/src/main/java/org/apache/hadoop/hive/metastore/tools/HMSBenchmarks.java +++ b/standalone-metastore/metastore-tools/metastore-benchmarks/src/main/java/org/apache/hadoop/hive/metastore/tools/HMSBenchmarks.java @@ -25,6 +25,7 @@ import org.apache.hadoop.hive.metastore.PartitionManagementTask; import org.apache.hadoop.hive.metastore.TableType; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.metastore.api.Partition; +import org.apache.hadoop.hive.metastore.api.PartitionsStatsRequest; import org.apache.hadoop.hive.metastore.api.Table; import org.apache.thrift.TException; import org.jetbrains.annotations.NotNull; @@ -48,6 +49,7 @@ import static org.apache.hadoop.hive.metastore.tools.Util.addManyPartitionsNoExc import static org.apache.hadoop.hive.metastore.tools.Util.createManyPartitions; import static org.apache.hadoop.hive.metastore.tools.Util.createSchema; import static org.apache.hadoop.hive.metastore.tools.Util.throwingSupplierWrapper; +import static org.apache.hadoop.hive.metastore.tools.Util.updateManyPartitionsStatsNoException; /** * Actual benchmark code. @@ -431,6 +433,52 @@ final class HMSBenchmarks { } } + static DescriptiveStatistics benchmarkGetPartitionsStat(@NotNull MicroBenchmark bench, + @NotNull BenchData data, + int count) { + final HMSClient client = data.getClient(); + String dbName = data.dbName; + String tableName = data.tableName; + + BenchmarkUtils.createPartitionedTable(client, dbName, tableName); + try { + addManyPartitionsNoException(client, dbName, tableName, null, + Collections.singletonList("d"), count); + List<String> partNames = throwingSupplierWrapper(() -> + client.getPartitionNames(dbName, tableName)); + updateManyPartitionsStatsNoException(client, dbName, tableName, partNames); + PartitionsStatsRequest request = new PartitionsStatsRequest( + dbName, tableName, Arrays.asList("name"), partNames); + return bench.measure( + () -> + throwingSupplierWrapper(() -> client.getPartitionsStats(request)) + ); + } finally { + throwingSupplierWrapper(() -> client.dropTable(dbName, tableName)); + } + } + + static DescriptiveStatistics benchmarkUpdatePartitionsStat(@NotNull MicroBenchmark bench, + @NotNull BenchData data, + int count) { + final HMSClient client = data.getClient(); + String dbName = data.dbName; + String tableName = data.tableName; + + BenchmarkUtils.createPartitionedTable(client, dbName, tableName); + try { + addManyPartitionsNoException(client, dbName, tableName, null, + Collections.singletonList("d"), count); + List<String> partNames = throwingSupplierWrapper(() -> + client.getPartitionNames(dbName, tableName)); + return bench.measure( + () -> updateManyPartitionsStatsNoException(client, dbName, tableName, partNames) + ); + } finally { + throwingSupplierWrapper(() -> client.dropTable(dbName, tableName)); + } + } + static DescriptiveStatistics benchmarkRenameTable(@NotNull MicroBenchmark bench, @NotNull BenchData data, int count) { diff --git a/standalone-metastore/metastore-tools/tools-common/src/main/java/org/apache/hadoop/hive/metastore/tools/HMSClient.java b/standalone-metastore/metastore-tools/tools-common/src/main/java/org/apache/hadoop/hive/metastore/tools/HMSClient.java index 61580aa7b22..8b94c423ce2 100644 --- a/standalone-metastore/metastore-tools/tools-common/src/main/java/org/apache/hadoop/hive/metastore/tools/HMSClient.java +++ b/standalone-metastore/metastore-tools/tools-common/src/main/java/org/apache/hadoop/hive/metastore/tools/HMSClient.java @@ -23,6 +23,7 @@ import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.metastore.Warehouse; import org.apache.hadoop.hive.metastore.api.AbortTxnsRequest; import org.apache.hadoop.hive.metastore.api.AllocateTableWriteIdsRequest; +import org.apache.hadoop.hive.metastore.api.ColumnStatistics; import org.apache.hadoop.hive.metastore.api.CommitTxnRequest; import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.metastore.api.DropPartitionsRequest; @@ -35,6 +36,8 @@ import org.apache.hadoop.hive.metastore.api.MetaException; import org.apache.hadoop.hive.metastore.api.OpenTxnRequest; import org.apache.hadoop.hive.metastore.api.OpenTxnsResponse; import org.apache.hadoop.hive.metastore.api.Partition; +import org.apache.hadoop.hive.metastore.api.PartitionsStatsRequest; +import org.apache.hadoop.hive.metastore.api.PartitionsStatsResult; import org.apache.hadoop.hive.metastore.api.RequestPartsSpec; import org.apache.hadoop.hive.metastore.api.Table; import org.apache.hadoop.hive.metastore.api.GetOpenTxnsRequest; @@ -276,6 +279,10 @@ final class HMSClient implements AutoCloseable { client.add_partitions(partitions); } + void updatePartitionColumnStats(ColumnStatistics colStats) throws TException { + client.update_partition_column_statistics(colStats); + } + List<Partition> listPartitions(@NotNull String dbName, @NotNull String tableName) throws TException { @@ -334,6 +341,10 @@ final class HMSClient implements AutoCloseable { return client.get_partitions_by_filter(dbName, tableName, filter, (short) -1); } + PartitionsStatsResult getPartitionsStats(PartitionsStatsRequest request) throws TException { + return client.get_partitions_statistics_req(request); + } + boolean alterTable(@NotNull String dbName, @NotNull String tableName, @NotNull Table newTable) throws TException { client.alter_table(dbName, tableName, newTable); diff --git a/standalone-metastore/metastore-tools/tools-common/src/main/java/org/apache/hadoop/hive/metastore/tools/Util.java b/standalone-metastore/metastore-tools/tools-common/src/main/java/org/apache/hadoop/hive/metastore/tools/Util.java index a3e4a41cb5c..264bfae16b1 100644 --- a/standalone-metastore/metastore-tools/tools-common/src/main/java/org/apache/hadoop/hive/metastore/tools/Util.java +++ b/standalone-metastore/metastore-tools/tools-common/src/main/java/org/apache/hadoop/hive/metastore/tools/Util.java @@ -21,6 +21,10 @@ package org.apache.hadoop.hive.metastore.tools; import com.google.common.base.Joiner; import com.google.common.net.HostAndPort; import org.apache.hadoop.hive.metastore.TableType; +import org.apache.hadoop.hive.metastore.api.ColumnStatistics; +import org.apache.hadoop.hive.metastore.api.ColumnStatisticsData; +import org.apache.hadoop.hive.metastore.api.ColumnStatisticsDesc; +import org.apache.hadoop.hive.metastore.api.ColumnStatisticsObj; import org.apache.hadoop.hive.metastore.api.DataOperationType; import org.apache.hadoop.hive.metastore.api.Database; import org.apache.hadoop.hive.metastore.api.FieldSchema; @@ -31,6 +35,7 @@ import org.apache.hadoop.hive.metastore.api.Partition; import org.apache.hadoop.hive.metastore.api.PrincipalType; import org.apache.hadoop.hive.metastore.api.SerDeInfo; import org.apache.hadoop.hive.metastore.api.StorageDescriptor; +import org.apache.hadoop.hive.metastore.api.StringColumnStatsData; import org.apache.hadoop.hive.metastore.api.Table; import org.apache.thrift.TException; import org.jetbrains.annotations.NotNull; @@ -611,6 +616,24 @@ public final class Util { return null; } + static Object updateManyPartitionsStats(@NotNull HMSClient client, + @NotNull String dbName, + @NotNull String tableName, + @NotNull List<String> partNames) throws TException { + List<ColumnStatisticsObj> statsObj = new ArrayList<>(); + ColumnStatisticsData statsData = new ColumnStatisticsData( + ColumnStatisticsData._Fields.STRING_STATS, new StringColumnStatsData(100, 10.1, 20, 30)); + statsObj.add(new ColumnStatisticsObj("id", "int", statsData)); + ColumnStatisticsDesc partDesc = new ColumnStatisticsDesc(false, dbName, tableName); + for (String partName : partNames) { + partDesc.setPartName(partName); + ColumnStatistics partColStat = new ColumnStatistics(partDesc, statsObj); + partColStat.setEngine("hive"); + client.updatePartitionColumnStats(partColStat); + } + return null; + } + static List<String> generatePartitionNames(@NotNull String prefix, int npartitions) { return IntStream.range(0, npartitions).mapToObj(i -> prefix + i).collect(Collectors.toList()); } @@ -625,6 +648,14 @@ public final class Util { addManyPartitions(client, dbName, tableName, parameters, arguments, npartitions)); } + static void updateManyPartitionsStatsNoException(@NotNull HMSClient client, + @NotNull String dbName, + @NotNull String tableName, + @NotNull List<String> partNames) { + throwingSupplierWrapper(() -> + updateManyPartitionsStats(client, dbName, tableName, partNames)); + } + /** * Filter candidates - find all that match positive matches and do not match * any negative matches.