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;

Reply via email to