Repository: hive Updated Branches: refs/heads/branch-2.1 8caf81eda -> cf127f7af
HIVE-14028: Insert overwrite does not work in HBase tables: stats is not updated(Pengcheng Xiong, reviewed by Ashutosh Chauhan) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/cf127f7a Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/cf127f7a Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/cf127f7a Branch: refs/heads/branch-2.1 Commit: cf127f7afe6a04e00a4ff188021cfbd6ae692a1e Parents: 8caf81e Author: Pengcheng Xiong <pxi...@apache.org> Authored: Thu Jun 23 10:25:11 2016 -0700 Committer: Pengcheng Xiong <pxi...@apache.org> Committed: Thu Jun 23 10:26:53 2016 -0700 ---------------------------------------------------------------------- .../src/test/queries/positive/hbasestats.q | 44 +++ .../test/results/positive/hbase_queries.q.out | 26 +- .../hbase_single_sourced_multi_insert.q.out | 39 +- .../src/test/results/positive/hbasestats.q.out | 389 +++++++++++++++++++ .../hadoop/hive/ql/parse/SemanticAnalyzer.java | 22 +- 5 files changed, 500 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/cf127f7a/hbase-handler/src/test/queries/positive/hbasestats.q ---------------------------------------------------------------------- diff --git a/hbase-handler/src/test/queries/positive/hbasestats.q b/hbase-handler/src/test/queries/positive/hbasestats.q new file mode 100644 index 0000000..52e11c9 --- /dev/null +++ b/hbase-handler/src/test/queries/positive/hbasestats.q @@ -0,0 +1,44 @@ +DROP TABLE users; + +CREATE TABLE users(key string, state string, country string, country_id int) +STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' +WITH SERDEPROPERTIES ( +"hbase.columns.mapping" = "info:state,info:country,info:country_id" +); + +desc formatted users; + +explain INSERT OVERWRITE TABLE users SELECT 'user1', 'IA', 'USA', 0 FROM src; + +INSERT OVERWRITE TABLE users SELECT 'user1', 'IA', 'USA', 0 FROM src; + +desc formatted users; + +select count(*) from users; + +set hive.compute.query.using.stats=true; + +select count(*) from users; + +INSERT into TABLE users SELECT 'user2', 'IA', 'USA', 0 FROM src; + +desc formatted users; + +select count(*) from users; + +analyze table users compute statistics; + +desc formatted users; + +explain select count(*) from users; + +select count(*) from users; + +INSERT into TABLE users SELECT 'user3', 'IA', 'USA', 0 FROM src; + +desc formatted users; + +explain select count(*) from users; + +select count(*) from users; + http://git-wip-us.apache.org/repos/asf/hive/blob/cf127f7a/hbase-handler/src/test/results/positive/hbase_queries.q.out ---------------------------------------------------------------------- diff --git a/hbase-handler/src/test/results/positive/hbase_queries.q.out b/hbase-handler/src/test/results/positive/hbase_queries.q.out index 8aa5f84..d0ce57a 100644 --- a/hbase-handler/src/test/results/positive/hbase_queries.q.out +++ b/hbase-handler/src/test/results/positive/hbase_queries.q.out @@ -40,9 +40,18 @@ POSTHOOK: query: EXPLAIN FROM src INSERT OVERWRITE TABLE hbase_table_1 SELECT * POSTHOOK: type: QUERY STAGE DEPENDENCIES: Stage-0 is a root stage + Stage-1 is a root stage STAGE PLANS: Stage: Stage-0 + Alter Table Operator: + Alter Table + type: drop props + old name: default.hbase_table_1 + properties: + COLUMN_STATS_ACCURATE + + Stage: Stage-1 Map Reduce Map Operator Tree: TableScan @@ -483,11 +492,20 @@ JOIN ON (x.key = Y.key) POSTHOOK: type: QUERY STAGE DEPENDENCIES: - Stage-1 is a root stage - Stage-0 depends on stages: Stage-1 + Stage-0 is a root stage + Stage-2 is a root stage + Stage-1 depends on stages: Stage-2 STAGE PLANS: - Stage: Stage-1 + Stage: Stage-0 + Alter Table Operator: + Alter Table + type: drop props + old name: default.hbase_table_3 + properties: + COLUMN_STATS_ACCURATE + + Stage: Stage-2 Map Reduce Map Operator Tree: TableScan @@ -522,7 +540,7 @@ STAGE PLANS: output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe - Stage: Stage-0 + Stage: Stage-1 Map Reduce Map Operator Tree: TableScan http://git-wip-us.apache.org/repos/asf/hive/blob/cf127f7a/hbase-handler/src/test/results/positive/hbase_single_sourced_multi_insert.q.out ---------------------------------------------------------------------- diff --git a/hbase-handler/src/test/results/positive/hbase_single_sourced_multi_insert.q.out b/hbase-handler/src/test/results/positive/hbase_single_sourced_multi_insert.q.out index 38c51b5..e487a0b 100644 --- a/hbase-handler/src/test/results/positive/hbase_single_sourced_multi_insert.q.out +++ b/hbase-handler/src/test/results/positive/hbase_single_sourced_multi_insert.q.out @@ -35,17 +35,26 @@ insert overwrite table src_x2 select value,"" where a.key > 50 AND a.key < 100 POSTHOOK: type: QUERY STAGE DEPENDENCIES: - Stage-1 is a root stage - Stage-7 depends on stages: Stage-1 , consists of Stage-4, Stage-3, Stage-5 - Stage-4 - Stage-0 depends on stages: Stage-4, Stage-3, Stage-6 - Stage-2 depends on stages: Stage-0 - Stage-3 + Stage-0 is a root stage + Stage-2 is a root stage + Stage-8 depends on stages: Stage-2 , consists of Stage-5, Stage-4, Stage-6 Stage-5 - Stage-6 depends on stages: Stage-5 + Stage-1 depends on stages: Stage-5, Stage-4, Stage-7 + Stage-3 depends on stages: Stage-1 + Stage-4 + Stage-6 + Stage-7 depends on stages: Stage-6 STAGE PLANS: - Stage: Stage-1 + Stage: Stage-0 + Alter Table Operator: + Alter Table + type: drop props + old name: default.src_x2 + properties: + COLUMN_STATS_ACCURATE + + Stage: Stage-2 Map Reduce Map Operator Tree: TableScan @@ -82,16 +91,16 @@ STAGE PLANS: serde: org.apache.hadoop.hive.hbase.HBaseSerDe name: default.src_x2 - Stage: Stage-7 + Stage: Stage-8 Conditional Operator - Stage: Stage-4 + Stage: Stage-5 Move Operator files: hdfs directory: true #### A masked pattern was here #### - Stage: Stage-0 + Stage: Stage-1 Move Operator tables: replace: true @@ -101,10 +110,10 @@ STAGE PLANS: serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.src_x1 - Stage: Stage-2 + Stage: Stage-3 Stats-Aggr Operator - Stage: Stage-3 + Stage: Stage-4 Map Reduce Map Operator Tree: TableScan @@ -116,7 +125,7 @@ STAGE PLANS: serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.src_x1 - Stage: Stage-5 + Stage: Stage-6 Map Reduce Map Operator Tree: TableScan @@ -128,7 +137,7 @@ STAGE PLANS: serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe name: default.src_x1 - Stage: Stage-6 + Stage: Stage-7 Move Operator files: hdfs directory: true http://git-wip-us.apache.org/repos/asf/hive/blob/cf127f7a/hbase-handler/src/test/results/positive/hbasestats.q.out ---------------------------------------------------------------------- diff --git a/hbase-handler/src/test/results/positive/hbasestats.q.out b/hbase-handler/src/test/results/positive/hbasestats.q.out new file mode 100644 index 0000000..cf4138e --- /dev/null +++ b/hbase-handler/src/test/results/positive/hbasestats.q.out @@ -0,0 +1,389 @@ +PREHOOK: query: DROP TABLE users +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE users +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE users(key string, state string, country string, country_id int) +STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' +WITH SERDEPROPERTIES ( +"hbase.columns.mapping" = "info:state,info:country,info:country_id" +) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@users +POSTHOOK: query: CREATE TABLE users(key string, state string, country string, country_id int) +STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' +WITH SERDEPROPERTIES ( +"hbase.columns.mapping" = "info:state,info:country,info:country_id" +) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@users +PREHOOK: query: desc formatted users +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@users +POSTHOOK: query: desc formatted users +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@users +# col_name data_type comment + +key string +state string +country string +country_id int + +# Detailed Table Information +Database: default +#### A masked pattern was here #### +Retention: 0 +#### A masked pattern was here #### +Table Type: MANAGED_TABLE +Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} + numFiles 0 + numRows 0 + rawDataSize 0 + storage_handler org.apache.hadoop.hive.hbase.HBaseStorageHandler + totalSize 0 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.hbase.HBaseSerDe +InputFormat: null +OutputFormat: null +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + hbase.columns.mapping info:state,info:country,info:country_id + serialization.format 1 +PREHOOK: query: explain INSERT OVERWRITE TABLE users SELECT 'user1', 'IA', 'USA', 0 FROM src +PREHOOK: type: QUERY +POSTHOOK: query: explain INSERT OVERWRITE TABLE users SELECT 'user1', 'IA', 'USA', 0 FROM src +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-0 is a root stage + Stage-1 is a root stage + +STAGE PLANS: + Stage: Stage-0 + Alter Table Operator: + Alter Table + type: drop props + old name: default.users + properties: + COLUMN_STATS_ACCURATE + + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: src + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE + Select Operator + expressions: 'user1' (type: string), 'IA' (type: string), 'USA' (type: string), 0 (type: int) + outputColumnNames: _col0, _col1, _col2, _col3 + Statistics: Num rows: 500 Data size: 133000 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 500 Data size: 133000 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.hive.hbase.HiveHBaseTableInputFormat + output format: org.apache.hadoop.hive.hbase.HiveHBaseTableOutputFormat + serde: org.apache.hadoop.hive.hbase.HBaseSerDe + name: default.users + +PREHOOK: query: INSERT OVERWRITE TABLE users SELECT 'user1', 'IA', 'USA', 0 FROM src +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@users +POSTHOOK: query: INSERT OVERWRITE TABLE users SELECT 'user1', 'IA', 'USA', 0 FROM src +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@users +PREHOOK: query: desc formatted users +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@users +POSTHOOK: query: desc formatted users +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@users +# col_name data_type comment + +key string +state string +country string +country_id int + +# Detailed Table Information +Database: default +#### A masked pattern was here #### +Retention: 0 +#### A masked pattern was here #### +Table Type: MANAGED_TABLE +Table Parameters: +#### A masked pattern was here #### + numFiles 0 + numRows 0 + rawDataSize 0 + storage_handler org.apache.hadoop.hive.hbase.HBaseStorageHandler + totalSize 0 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.hbase.HBaseSerDe +InputFormat: null +OutputFormat: null +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + hbase.columns.mapping info:state,info:country,info:country_id + serialization.format 1 +PREHOOK: query: select count(*) from users +PREHOOK: type: QUERY +PREHOOK: Input: default@users +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from users +POSTHOOK: type: QUERY +POSTHOOK: Input: default@users +#### A masked pattern was here #### +1 +PREHOOK: query: select count(*) from users +PREHOOK: type: QUERY +PREHOOK: Input: default@users +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from users +POSTHOOK: type: QUERY +POSTHOOK: Input: default@users +#### A masked pattern was here #### +1 +PREHOOK: query: INSERT into TABLE users SELECT 'user2', 'IA', 'USA', 0 FROM src +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@users +POSTHOOK: query: INSERT into TABLE users SELECT 'user2', 'IA', 'USA', 0 FROM src +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@users +PREHOOK: query: desc formatted users +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@users +POSTHOOK: query: desc formatted users +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@users +# col_name data_type comment + +key string +state string +country string +country_id int + +# Detailed Table Information +Database: default +#### A masked pattern was here #### +Retention: 0 +#### A masked pattern was here #### +Table Type: MANAGED_TABLE +Table Parameters: +#### A masked pattern was here #### + numFiles 0 + numRows 0 + rawDataSize 0 + storage_handler org.apache.hadoop.hive.hbase.HBaseStorageHandler + totalSize 0 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.hbase.HBaseSerDe +InputFormat: null +OutputFormat: null +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + hbase.columns.mapping info:state,info:country,info:country_id + serialization.format 1 +PREHOOK: query: select count(*) from users +PREHOOK: type: QUERY +PREHOOK: Input: default@users +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from users +POSTHOOK: type: QUERY +POSTHOOK: Input: default@users +#### A masked pattern was here #### +2 +PREHOOK: query: analyze table users compute statistics +PREHOOK: type: QUERY +PREHOOK: Input: default@users +PREHOOK: Output: default@users +POSTHOOK: query: analyze table users compute statistics +POSTHOOK: type: QUERY +POSTHOOK: Input: default@users +POSTHOOK: Output: default@users +PREHOOK: query: desc formatted users +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@users +POSTHOOK: query: desc formatted users +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@users +# col_name data_type comment + +key string +state string +country string +country_id int + +# Detailed Table Information +Database: default +#### A masked pattern was here #### +Retention: 0 +#### A masked pattern was here #### +Table Type: MANAGED_TABLE +Table Parameters: + COLUMN_STATS_ACCURATE {\"BASIC_STATS\":\"true\"} +#### A masked pattern was here #### + numFiles 0 + numRows 2 + rawDataSize 0 + storage_handler org.apache.hadoop.hive.hbase.HBaseStorageHandler + totalSize 0 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.hbase.HBaseSerDe +InputFormat: null +OutputFormat: null +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + hbase.columns.mapping info:state,info:country,info:country_id + serialization.format 1 +PREHOOK: query: explain select count(*) from users +PREHOOK: type: QUERY +POSTHOOK: query: explain select count(*) from users +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 users +PREHOOK: type: QUERY +PREHOOK: Input: default@users +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from users +POSTHOOK: type: QUERY +POSTHOOK: Input: default@users +#### A masked pattern was here #### +2 +PREHOOK: query: INSERT into TABLE users SELECT 'user3', 'IA', 'USA', 0 FROM src +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@users +POSTHOOK: query: INSERT into TABLE users SELECT 'user3', 'IA', 'USA', 0 FROM src +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@users +PREHOOK: query: desc formatted users +PREHOOK: type: DESCTABLE +PREHOOK: Input: default@users +POSTHOOK: query: desc formatted users +POSTHOOK: type: DESCTABLE +POSTHOOK: Input: default@users +# col_name data_type comment + +key string +state string +country string +country_id int + +# Detailed Table Information +Database: default +#### A masked pattern was here #### +Retention: 0 +#### A masked pattern was here #### +Table Type: MANAGED_TABLE +Table Parameters: +#### A masked pattern was here #### + numFiles 0 + numRows 2 + rawDataSize 0 + storage_handler org.apache.hadoop.hive.hbase.HBaseStorageHandler + totalSize 0 +#### A masked pattern was here #### + +# Storage Information +SerDe Library: org.apache.hadoop.hive.hbase.HBaseSerDe +InputFormat: null +OutputFormat: null +Compressed: No +Num Buckets: -1 +Bucket Columns: [] +Sort Columns: [] +Storage Desc Params: + hbase.columns.mapping info:state,info:country,info:country_id + serialization.format 1 +PREHOOK: query: explain select count(*) from users +PREHOOK: type: QUERY +POSTHOOK: query: explain select count(*) from users +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: users + Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Select Operator + Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE + Group By Operator + aggregations: count() + mode: hash + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + Reduce Output Operator + sort order: + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + value expressions: _col0 (type: bigint) + Reduce Operator Tree: + Group By Operator + aggregations: count(VALUE._col0) + mode: mergepartial + outputColumnNames: _col0 + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: select count(*) from users +PREHOOK: type: QUERY +PREHOOK: Input: default@users +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from users +POSTHOOK: type: QUERY +POSTHOOK: Input: default@users +#### A masked pattern was here #### +3 http://git-wip-us.apache.org/repos/asf/hive/blob/cf127f7a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 53f3b05..bc8e9c0 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -55,8 +55,10 @@ import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.permission.FsAction; +import org.apache.hadoop.hive.ql.plan.AlterTableDesc; import org.apache.hadoop.hive.common.FileUtils; import org.apache.hadoop.hive.common.ObjectPair; +import org.apache.hadoop.hive.common.StatsSetupConst; import org.apache.hadoop.hive.common.StatsSetupConst.StatDB; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; @@ -152,6 +154,7 @@ import org.apache.hadoop.hive.ql.parse.WindowingSpec.WindowFrameSpec; import org.apache.hadoop.hive.ql.parse.WindowingSpec.WindowFunctionSpec; import org.apache.hadoop.hive.ql.parse.WindowingSpec.WindowSpec; import org.apache.hadoop.hive.ql.plan.AggregationDesc; +import org.apache.hadoop.hive.ql.plan.AlterTableDesc.AlterTableTypes; import org.apache.hadoop.hive.ql.plan.CreateTableDesc; import org.apache.hadoop.hive.ql.plan.CreateTableLikeDesc; import org.apache.hadoop.hive.ql.plan.CreateViewDesc; @@ -6520,6 +6523,19 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer { } } + @SuppressWarnings("unchecked") + private void setStatsForNonNativeTable(Table tab) throws SemanticException { + String tableName = DDLSemanticAnalyzer.getDotName(new String[] { tab.getDbName(), + tab.getTableName() }); + AlterTableDesc alterTblDesc = new AlterTableDesc(AlterTableTypes.DROPPROPS, null, false); + HashMap<String, String> mapProp = new HashMap<>(); + mapProp.put(StatsSetupConst.COLUMN_STATS_ACCURATE, null); + alterTblDesc.setOldName(tableName); + alterTblDesc.setProps(mapProp); + alterTblDesc.setDropIfExists(true); + this.rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), alterTblDesc), conf)); + } + @SuppressWarnings("nls") protected Operator genFileSinkPlan(String dest, QB qb, Operator input) throws SemanticException { @@ -6642,11 +6658,15 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer { acidOp = getAcidType(table_desc.getOutputFileFormatClass()); checkAcidConstraints(qb, table_desc, dest_tab); } - ltd = new LoadTableDesc(queryTmpdir,table_desc, dpCtx, acidOp); + ltd = new LoadTableDesc(queryTmpdir, table_desc, dpCtx, acidOp); ltd.setReplace(!qb.getParseInfo().isInsertIntoTable(dest_tab.getDbName(), dest_tab.getTableName())); ltd.setLbCtx(lbCtx); loadTableWork.add(ltd); + } else { + // This is a non-native table. + // We need to set stats as inaccurate. + setStatsForNonNativeTable(dest_tab); } WriteEntity output = null;