diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java index 2a42a1718a8886db0d44267412bf3cf5ca402ab6..90c0deae0e159dce727a8149de47cc5d27fd1c43 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/ObjectStore.java @@ -6295,8 +6295,8 @@ public boolean deleteTableColumnStatistics(String dbName, String tableName, Stri if (colName != null) { query.setUnique(true); - mStatsObj = (MTableColumnStatistics)query.execute(tableName.trim(), - dbName.trim(), colName.trim()); + mStatsObj = (MTableColumnStatistics)query.execute(tableName.trim().toLowerCase(), + dbName.trim().toLowerCase(), colName.trim().toLowerCase()); pm.retrieve(mStatsObj); if (mStatsObj != null) { @@ -6306,7 +6306,8 @@ public boolean deleteTableColumnStatistics(String dbName, String tableName, Stri + tableName + " col=" + colName); } } else { - mStatsObjColl= (List)query.execute(tableName.trim(), dbName.trim()); + mStatsObjColl= (List)query.execute(tableName.trim().toLowerCase(), + dbName.trim().toLowerCase()); pm.retrieveAll(mStatsObjColl); if (mStatsObjColl != null) { diff --git a/ql/src/test/queries/clientpositive/drop_table_with_stats.q b/ql/src/test/queries/clientpositive/drop_table_with_stats.q new file mode 100644 index 0000000000000000000000000000000000000000..f5c77793cbcc8d8f9eedc834a53a12b2beec3310 --- /dev/null +++ b/ql/src/test/queries/clientpositive/drop_table_with_stats.q @@ -0,0 +1,42 @@ +-- This test verifies that the a table is able to be dropped with columns stats computed +CREATE DATABASE IF NOT EXISTS testdb; +USE testdb; +CREATE TABLE IF NOT EXISTS testtable (key STRING, value STRING); +LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE testtable; +ANALYZE TABLE testtable COMPUTE STATISTICS FOR COLUMNS key; + +CREATE TABLE IF NOT EXISTS TestTable1 (key STRING, value STRING); +LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE TestTable1; +ANALYZE TABLE TestTable1 COMPUTE STATISTICS FOR COLUMNS key; + +CREATE TABLE IF NOT EXISTS TESTTABLE2 (key STRING, value STRING); +LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE TESTTABLE2; +ANALYZE TABLE TESTTABLE2 COMPUTE STATISTICS FOR COLUMNS key; + +DROP TABLE testdb.testtable; +DROP TABLE testdb.TestTable1; +DROP TABLE testdb.TESTTABLE2; +DROP DATABASE testdb; + +CREATE DATABASE IF NOT EXISTS TESTDB; +USE TESTDB; +CREATE TABLE IF NOT EXISTS testtable (key STRING, value STRING); +LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE testtable; +ANALYZE TABLE testtable COMPUTE STATISTICS FOR COLUMNS key; + + +CREATE TABLE IF NOT EXISTS TestTable1 (key STRING, value STRING); +LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE TestTable1; +ANALYZE TABLE TestTable1 COMPUTE STATISTICS FOR COLUMNS key; + + +CREATE TABLE IF NOT EXISTS TESTTABLE2 (key STRING, value STRING); +LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE TESTTABLE2; +ANALYZE TABLE TESTTABLE2 COMPUTE STATISTICS FOR COLUMNS key; + + +DROP TABLE TESTDB.testtable; +DROP TABLE TESTDB.TestTable1; +DROP TABLE TESTDB.TESTTABLE2; +DROP DATABASE TESTDB; + diff --git a/ql/src/test/results/clientpositive/drop_table_with_stats.q.out b/ql/src/test/results/clientpositive/drop_table_with_stats.q.out new file mode 100644 index 0000000000000000000000000000000000000000..6e35e857c15bc8a3bfe25d5a95d9cf28f1cbf86a --- /dev/null +++ b/ql/src/test/results/clientpositive/drop_table_with_stats.q.out @@ -0,0 +1,234 @@ +PREHOOK: query: -- This test verifies that the a table is able to be dropped with columns stats computed +CREATE DATABASE IF NOT EXISTS testdb +PREHOOK: type: CREATEDATABASE +PREHOOK: Output: database:testdb +POSTHOOK: query: -- This test verifies that the a table is able to be dropped with columns stats computed +CREATE DATABASE IF NOT EXISTS testdb +POSTHOOK: type: CREATEDATABASE +POSTHOOK: Output: database:testdb +PREHOOK: query: USE testdb +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:testdb +POSTHOOK: query: USE testdb +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:testdb +PREHOOK: query: CREATE TABLE IF NOT EXISTS testtable (key STRING, value STRING) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:testdb +PREHOOK: Output: testdb@testtable +POSTHOOK: query: CREATE TABLE IF NOT EXISTS testtable (key STRING, value STRING) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:testdb +POSTHOOK: Output: testdb@testtable +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE testtable +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: testdb@testtable +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE testtable +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: testdb@testtable +PREHOOK: query: ANALYZE TABLE testtable COMPUTE STATISTICS FOR COLUMNS key +PREHOOK: type: QUERY +PREHOOK: Input: testdb@testtable +#### A masked pattern was here #### +POSTHOOK: query: ANALYZE TABLE testtable COMPUTE STATISTICS FOR COLUMNS key +POSTHOOK: type: QUERY +POSTHOOK: Input: testdb@testtable +#### A masked pattern was here #### +PREHOOK: query: CREATE TABLE IF NOT EXISTS TestTable1 (key STRING, value STRING) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:testdb +PREHOOK: Output: testdb@TestTable1 +POSTHOOK: query: CREATE TABLE IF NOT EXISTS TestTable1 (key STRING, value STRING) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:testdb +POSTHOOK: Output: testdb@TestTable1 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE TestTable1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: testdb@testtable1 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE TestTable1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: testdb@testtable1 +PREHOOK: query: ANALYZE TABLE TestTable1 COMPUTE STATISTICS FOR COLUMNS key +PREHOOK: type: QUERY +PREHOOK: Input: testdb@testtable1 +#### A masked pattern was here #### +POSTHOOK: query: ANALYZE TABLE TestTable1 COMPUTE STATISTICS FOR COLUMNS key +POSTHOOK: type: QUERY +POSTHOOK: Input: testdb@testtable1 +#### A masked pattern was here #### +PREHOOK: query: CREATE TABLE IF NOT EXISTS TESTTABLE2 (key STRING, value STRING) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:testdb +PREHOOK: Output: testdb@TESTTABLE2 +POSTHOOK: query: CREATE TABLE IF NOT EXISTS TESTTABLE2 (key STRING, value STRING) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:testdb +POSTHOOK: Output: testdb@TESTTABLE2 +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE TESTTABLE2 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: testdb@testtable2 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE TESTTABLE2 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: testdb@testtable2 +PREHOOK: query: ANALYZE TABLE TESTTABLE2 COMPUTE STATISTICS FOR COLUMNS key +PREHOOK: type: QUERY +PREHOOK: Input: testdb@testtable2 +#### A masked pattern was here #### +POSTHOOK: query: ANALYZE TABLE TESTTABLE2 COMPUTE STATISTICS FOR COLUMNS key +POSTHOOK: type: QUERY +POSTHOOK: Input: testdb@testtable2 +#### A masked pattern was here #### +PREHOOK: query: DROP TABLE testdb.testtable +PREHOOK: type: DROPTABLE +PREHOOK: Input: testdb@testtable +PREHOOK: Output: testdb@testtable +POSTHOOK: query: DROP TABLE testdb.testtable +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: testdb@testtable +POSTHOOK: Output: testdb@testtable +PREHOOK: query: DROP TABLE testdb.TestTable1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: testdb@testtable1 +PREHOOK: Output: testdb@testtable1 +POSTHOOK: query: DROP TABLE testdb.TestTable1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: testdb@testtable1 +POSTHOOK: Output: testdb@testtable1 +PREHOOK: query: DROP TABLE testdb.TESTTABLE2 +PREHOOK: type: DROPTABLE +PREHOOK: Input: testdb@testtable2 +PREHOOK: Output: testdb@testtable2 +POSTHOOK: query: DROP TABLE testdb.TESTTABLE2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: testdb@testtable2 +POSTHOOK: Output: testdb@testtable2 +PREHOOK: query: DROP DATABASE testdb +PREHOOK: type: DROPDATABASE +PREHOOK: Input: database:testdb +PREHOOK: Output: database:testdb +POSTHOOK: query: DROP DATABASE testdb +POSTHOOK: type: DROPDATABASE +POSTHOOK: Input: database:testdb +POSTHOOK: Output: database:testdb +PREHOOK: query: CREATE DATABASE IF NOT EXISTS TESTDB +PREHOOK: type: CREATEDATABASE +PREHOOK: Output: database:TESTDB +POSTHOOK: query: CREATE DATABASE IF NOT EXISTS TESTDB +POSTHOOK: type: CREATEDATABASE +POSTHOOK: Output: database:TESTDB +PREHOOK: query: USE TESTDB +PREHOOK: type: SWITCHDATABASE +PREHOOK: Input: database:testdb +POSTHOOK: query: USE TESTDB +POSTHOOK: type: SWITCHDATABASE +POSTHOOK: Input: database:testdb +PREHOOK: query: CREATE TABLE IF NOT EXISTS testtable (key STRING, value STRING) +PREHOOK: type: CREATETABLE +PREHOOK: Output: TESTDB@testtable +PREHOOK: Output: database:testdb +POSTHOOK: query: CREATE TABLE IF NOT EXISTS testtable (key STRING, value STRING) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: TESTDB@testtable +POSTHOOK: Output: database:testdb +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE testtable +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: testdb@testtable +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE testtable +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: testdb@testtable +PREHOOK: query: ANALYZE TABLE testtable COMPUTE STATISTICS FOR COLUMNS key +PREHOOK: type: QUERY +PREHOOK: Input: testdb@testtable +#### A masked pattern was here #### +POSTHOOK: query: ANALYZE TABLE testtable COMPUTE STATISTICS FOR COLUMNS key +POSTHOOK: type: QUERY +POSTHOOK: Input: testdb@testtable +#### A masked pattern was here #### +PREHOOK: query: CREATE TABLE IF NOT EXISTS TestTable1 (key STRING, value STRING) +PREHOOK: type: CREATETABLE +PREHOOK: Output: TESTDB@TestTable1 +PREHOOK: Output: database:testdb +POSTHOOK: query: CREATE TABLE IF NOT EXISTS TestTable1 (key STRING, value STRING) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: TESTDB@TestTable1 +POSTHOOK: Output: database:testdb +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE TestTable1 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: testdb@testtable1 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE TestTable1 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: testdb@testtable1 +PREHOOK: query: ANALYZE TABLE TestTable1 COMPUTE STATISTICS FOR COLUMNS key +PREHOOK: type: QUERY +PREHOOK: Input: testdb@testtable1 +#### A masked pattern was here #### +POSTHOOK: query: ANALYZE TABLE TestTable1 COMPUTE STATISTICS FOR COLUMNS key +POSTHOOK: type: QUERY +POSTHOOK: Input: testdb@testtable1 +#### A masked pattern was here #### +PREHOOK: query: CREATE TABLE IF NOT EXISTS TESTTABLE2 (key STRING, value STRING) +PREHOOK: type: CREATETABLE +PREHOOK: Output: TESTDB@TESTTABLE2 +PREHOOK: Output: database:testdb +POSTHOOK: query: CREATE TABLE IF NOT EXISTS TESTTABLE2 (key STRING, value STRING) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: TESTDB@TESTTABLE2 +POSTHOOK: Output: database:testdb +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE TESTTABLE2 +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: testdb@testtable2 +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/kv1.txt' OVERWRITE INTO TABLE TESTTABLE2 +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: testdb@testtable2 +PREHOOK: query: ANALYZE TABLE TESTTABLE2 COMPUTE STATISTICS FOR COLUMNS key +PREHOOK: type: QUERY +PREHOOK: Input: testdb@testtable2 +#### A masked pattern was here #### +POSTHOOK: query: ANALYZE TABLE TESTTABLE2 COMPUTE STATISTICS FOR COLUMNS key +POSTHOOK: type: QUERY +POSTHOOK: Input: testdb@testtable2 +#### A masked pattern was here #### +PREHOOK: query: DROP TABLE TESTDB.testtable +PREHOOK: type: DROPTABLE +PREHOOK: Input: testdb@testtable +PREHOOK: Output: testdb@testtable +POSTHOOK: query: DROP TABLE TESTDB.testtable +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: testdb@testtable +POSTHOOK: Output: testdb@testtable +PREHOOK: query: DROP TABLE TESTDB.TestTable1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: testdb@testtable1 +PREHOOK: Output: testdb@testtable1 +POSTHOOK: query: DROP TABLE TESTDB.TestTable1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: testdb@testtable1 +POSTHOOK: Output: testdb@testtable1 +PREHOOK: query: DROP TABLE TESTDB.TESTTABLE2 +PREHOOK: type: DROPTABLE +PREHOOK: Input: testdb@testtable2 +PREHOOK: Output: testdb@testtable2 +POSTHOOK: query: DROP TABLE TESTDB.TESTTABLE2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: testdb@testtable2 +POSTHOOK: Output: testdb@testtable2 +PREHOOK: query: DROP DATABASE TESTDB +PREHOOK: type: DROPDATABASE +PREHOOK: Input: database:testdb +PREHOOK: Output: database:testdb +POSTHOOK: query: DROP DATABASE TESTDB +POSTHOOK: type: DROPDATABASE +POSTHOOK: Input: database:testdb +POSTHOOK: Output: database:testdb