Index: ql/src/test/results/clientpositive/insert_into1.q.out =================================================================== --- ql/src/test/results/clientpositive/insert_into1.q.out (revision 1628802) +++ ql/src/test/results/clientpositive/insert_into1.q.out (working copy) @@ -94,6 +94,29 @@ POSTHOOK: Input: default@insert_into1 #### A masked pattern was here #### 10226524244 +PREHOOK: query: explain +select count(*) from insert_into1 +PREHOOK: type: QUERY +POSTHOOK: query: explain +select count(*) from insert_into1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: select count(*) from insert_into1 +PREHOOK: type: QUERY +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from insert_into1 +POSTHOOK: type: QUERY +#### A masked pattern was here #### +100 PREHOOK: query: EXPLAIN INSERT INTO TABLE insert_into1 SELECT * FROM src LIMIT 100 PREHOOK: type: QUERY POSTHOOK: query: EXPLAIN INSERT INTO TABLE insert_into1 SELECT * FROM src LIMIT 100 @@ -178,13 +201,27 @@ POSTHOOK: Input: default@insert_into1 #### A masked pattern was here #### 20453048488 -PREHOOK: query: SELECT COUNT(*) FROM insert_into1 +PREHOOK: query: explain +SELECT COUNT(*) FROM insert_into1 PREHOOK: type: QUERY -PREHOOK: Input: default@insert_into1 +POSTHOOK: query: explain +SELECT COUNT(*) FROM insert_into1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: select count(*) from insert_into1 +PREHOOK: type: QUERY #### A masked pattern was here #### -POSTHOOK: query: SELECT COUNT(*) FROM insert_into1 +POSTHOOK: query: select count(*) from insert_into1 POSTHOOK: type: QUERY -POSTHOOK: Input: default@insert_into1 #### A masked pattern was here #### 200 PREHOOK: query: EXPLAIN INSERT OVERWRITE TABLE insert_into1 SELECT * FROM src LIMIT 10 @@ -271,6 +308,29 @@ POSTHOOK: Input: default@insert_into1 #### A masked pattern was here #### -826625916 +PREHOOK: query: explain +SELECT COUNT(*) FROM insert_into1 +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT COUNT(*) FROM insert_into1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: select count(*) from insert_into1 +PREHOOK: type: QUERY +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from insert_into1 +POSTHOOK: type: QUERY +#### A masked pattern was here #### +10 PREHOOK: query: DROP TABLE insert_into1 PREHOOK: type: DROPTABLE PREHOOK: Input: default@insert_into1 Index: ql/src/test/results/clientpositive/insert_into2.q.out =================================================================== --- ql/src/test/results/clientpositive/insert_into2.q.out (revision 1628802) +++ ql/src/test/results/clientpositive/insert_into2.q.out (working copy) @@ -87,6 +87,29 @@ POSTHOOK: Output: default@insert_into2@ds=1 POSTHOOK: Lineage: insert_into2 PARTITION(ds=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: insert_into2 PARTITION(ds=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: explain +select count (*) from insert_into2 where ds = '1' +PREHOOK: type: QUERY +POSTHOOK: query: explain +select count (*) from insert_into2 where ds = '1' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: select count (*) from insert_into2 where ds = '1' +PREHOOK: type: QUERY +#### A masked pattern was here #### +POSTHOOK: query: select count (*) from insert_into2 where ds = '1' +POSTHOOK: type: QUERY +#### A masked pattern was here #### +100 PREHOOK: query: INSERT INTO TABLE insert_into2 PARTITION (ds='1') SELECT * FROM src limit 100 PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -97,15 +120,27 @@ POSTHOOK: Output: default@insert_into2@ds=1 POSTHOOK: Lineage: insert_into2 PARTITION(ds=1).key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: insert_into2 PARTITION(ds=1).value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='1' +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='1' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + PREHOOK: query: SELECT COUNT(*) FROM insert_into2 WHERE ds='1' PREHOOK: type: QUERY -PREHOOK: Input: default@insert_into2 -PREHOOK: Input: default@insert_into2@ds=1 #### A masked pattern was here #### POSTHOOK: query: SELECT COUNT(*) FROM insert_into2 WHERE ds='1' POSTHOOK: type: QUERY -POSTHOOK: Input: default@insert_into2 -POSTHOOK: Input: default@insert_into2@ds=1 #### A masked pattern was here #### 200 PREHOOK: query: SELECT SUM(HASH(c)) FROM ( @@ -217,6 +252,29 @@ POSTHOOK: Input: default@insert_into2@ds=2 #### A masked pattern was here #### -36239931656 +PREHOOK: query: explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='2' +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='2' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT COUNT(*) FROM insert_into2 WHERE ds='2' +PREHOOK: type: QUERY +#### A masked pattern was here #### +POSTHOOK: query: SELECT COUNT(*) FROM insert_into2 WHERE ds='2' +POSTHOOK: type: QUERY +#### A masked pattern was here #### +100 PREHOOK: query: EXPLAIN INSERT OVERWRITE TABLE insert_into2 PARTITION (ds='2') SELECT * FROM src LIMIT 50 PREHOOK: type: QUERY @@ -311,6 +369,29 @@ POSTHOOK: Input: default@insert_into2@ds=2 #### A masked pattern was here #### -27100860056 +PREHOOK: query: explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='2' +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='2' +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Fetch Operator + limit: 1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT COUNT(*) FROM insert_into2 WHERE ds='2' +PREHOOK: type: QUERY +#### A masked pattern was here #### +POSTHOOK: query: SELECT COUNT(*) FROM insert_into2 WHERE ds='2' +POSTHOOK: type: QUERY +#### A masked pattern was here #### +50 PREHOOK: query: DROP TABLE insert_into2 PREHOOK: type: DROPTABLE PREHOOK: Input: default@insert_into2 Index: ql/src/test/queries/clientpositive/insert_into1.q =================================================================== --- ql/src/test/queries/clientpositive/insert_into1.q (revision 1628802) +++ ql/src/test/queries/clientpositive/insert_into1.q (working copy) @@ -1,3 +1,4 @@ +set hive.compute.query.using.stats=true; DROP TABLE insert_into1; CREATE TABLE insert_into1 (key int, value string); @@ -7,14 +8,18 @@ SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into1 ) t; - +explain +select count(*) from insert_into1; +select count(*) from insert_into1; EXPLAIN INSERT INTO TABLE insert_into1 SELECT * FROM src LIMIT 100; INSERT INTO TABLE insert_into1 SELECT * FROM src LIMIT 100; SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into1 ) t; +explain SELECT COUNT(*) FROM insert_into1; +select count(*) from insert_into1; EXPLAIN INSERT OVERWRITE TABLE insert_into1 SELECT * FROM src LIMIT 10; INSERT OVERWRITE TABLE insert_into1 SELECT * FROM src LIMIT 10; @@ -22,5 +27,10 @@ SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into1 ) t; +explain +SELECT COUNT(*) FROM insert_into1; +select count(*) from insert_into1; DROP TABLE insert_into1; + +set hive.compute.query.using.stats=false; Index: ql/src/test/queries/clientpositive/insert_into2.q =================================================================== --- ql/src/test/queries/clientpositive/insert_into2.q (revision 1628802) +++ ql/src/test/queries/clientpositive/insert_into2.q (working copy) @@ -1,3 +1,4 @@ +set hive.compute.query.using.stats=true; DROP TABLE insert_into2; CREATE TABLE insert_into2 (key int, value string) PARTITIONED BY (ds string); @@ -5,8 +6,13 @@ EXPLAIN INSERT INTO TABLE insert_into2 PARTITION (ds='1') SELECT * FROM src LIMIT 100; INSERT INTO TABLE insert_into2 PARTITION (ds='1') SELECT * FROM src limit 100; +explain +select count (*) from insert_into2 where ds = '1'; +select count (*) from insert_into2 where ds = '1'; INSERT INTO TABLE insert_into2 PARTITION (ds='1') SELECT * FROM src limit 100; +explain SELECT COUNT(*) FROM insert_into2 WHERE ds='1'; +SELECT COUNT(*) FROM insert_into2 WHERE ds='1'; SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into2 ) t; @@ -19,6 +25,9 @@ SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into2 ) t; +explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='2'; +SELECT COUNT(*) FROM insert_into2 WHERE ds='2'; EXPLAIN INSERT OVERWRITE TABLE insert_into2 PARTITION (ds='2') SELECT * FROM src LIMIT 50; @@ -27,5 +36,11 @@ SELECT SUM(HASH(c)) FROM ( SELECT TRANSFORM(*) USING 'tr \t _' AS (c) FROM insert_into2 ) t; +explain +SELECT COUNT(*) FROM insert_into2 WHERE ds='2'; +SELECT COUNT(*) FROM insert_into2 WHERE ds='2'; + DROP TABLE insert_into2; + +set hive.compute.query.using.stats=false; Index: ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java (revision 1628802) +++ ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java (working copy) @@ -1541,6 +1541,7 @@ tbl.replaceFiles(loadPath, isSrcLocal); } else { tbl.copyFiles(loadPath, isSrcLocal, isAcid); + tbl.getParameters().put(StatsSetupConst.STATS_GENERATED_VIA_STATS_TASK, "true"); } try { @@ -1654,17 +1655,6 @@ return getPartition(tbl, partSpec, forceCreate, null, true); } - private static void clearPartitionStats(org.apache.hadoop.hive.metastore.api.Partition tpart) { - Map tpartParams = tpart.getParameters(); - if (tpartParams == null) { - return; - } - - for (String statType : StatsSetupConst.supportedStats) { - tpartParams.remove(statType); - } - } - /** * Returns partition metadata * @@ -1732,7 +1722,7 @@ throw new HiveException("new partition path should not be null or empty."); } tpart.getSd().setLocation(partPath); - clearPartitionStats(tpart); + tpart.getParameters().put(StatsSetupConst.STATS_GENERATED_VIA_STATS_TASK,"true"); String fullName = tbl.getTableName(); if (!org.apache.commons.lang.StringUtils.isEmpty(tbl.getDbName())) { fullName = tbl.getDbName() + "." + tbl.getTableName();