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 fdccac6c90e HIVE-29361: BasicStatsTask.aggregateStats tries to update 
partition stats in HMS for non-native tables (#6232)
fdccac6c90e is described below

commit fdccac6c90e5351da60c5b5caa355e032c733a31
Author: Denys Kuzmenko <[email protected]>
AuthorDate: Mon Jan 5 11:09:13 2026 +0200

    HIVE-29361: BasicStatsTask.aggregateStats tries to update partition stats 
in HMS for non-native tables (#6232)
---
 .../src/test/queries/positive/col_stats.q          | 123 +++-
 .../src/test/queries/positive/puffin_col_stats.q   |  40 +-
 .../positive/puffin_col_stats_with_time_travel.q   |  42 +-
 .../src/test/results/positive/col_stats.q.out      | 793 ++++++++++-----------
 .../llap/puffin_col_stats_with_time_travel.q.out   |  80 ++-
 .../test/results/positive/puffin_col_stats.q.out   | 202 ++++--
 .../hadoop/hive/ql/stats/BasicStatsTask.java       |   2 +-
 7 files changed, 694 insertions(+), 588 deletions(-)

diff --git a/iceberg/iceberg-handler/src/test/queries/positive/col_stats.q 
b/iceberg/iceberg-handler/src/test/queries/positive/col_stats.q
index cb7b7ae9ae8..02e05b3671a 100644
--- a/iceberg/iceberg-handler/src/test/queries/positive/col_stats.q
+++ b/iceberg/iceberg-handler/src/test/queries/positive/col_stats.q
@@ -3,58 +3,105 @@
 set hive.stats.autogather=true;
 set hive.stats.column.autogather=true;
 
+-- Create source table
+drop table if exists src_ice;
+create external table src_ice(
+    a int,
+    b string,
+    c int)
+stored by iceberg;
+
+insert into src_ice values
+    (1, 'one', 50),
+    (2, 'two', 51),
+    (2, 'two', 51),
+    (2, 'two', 51),
+    (3, 'three', 52),
+    (4, 'four', 53),
+    (5, 'five', 54),
+    (111, 'one', 55),
+    (333, 'two', 56);
+
+-- Test hive.iceberg.stats.source = iceberg
 set hive.iceberg.stats.source=iceberg;
+
+
+-- Test NON-PARTITIONED table with hive.iceberg.stats.source=iceberg
 drop table if exists tbl_ice_puffin;
-create external table tbl_ice_puffin(a int, b string, c int) stored by iceberg 
tblproperties ('format-version'='2');
-insert into tbl_ice_puffin values (1, 'one', 50), (2, 'two', 51),(2, 'two', 
51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 'five', 54), (111, 
'one', 55), (333, 'two', 56);
-insert into tbl_ice_puffin values (1, 'one', 50), (2, 'two', 51),(2, 'two', 
51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 'five', 54), (111, 
'one', 55), (333, 'two', 56);
-explain select * from tbl_ice_puffin order by a, b, c;
-select * from tbl_ice_puffin order by a, b, c;
-desc formatted tbl_ice_puffin b;
-update tbl_ice_puffin set b='two' where b='one' or b='three';
+create external table tbl_ice_puffin(
+    a int,
+    b string,
+    c int)
+stored by iceberg;
+
+insert into tbl_ice_puffin select * from src_ice;
+insert into tbl_ice_puffin select * from src_ice;
+
+select count(*) from tbl_ice_puffin;
+EXPLAIN select min(a), count(distinct b), max(c) from tbl_ice_puffin;
+desc formatted tbl_ice_puffin B;
+
+update tbl_ice_puffin
+    set b='two' where b='one' or b='three';
+
 analyze table tbl_ice_puffin compute statistics for columns;
-explain select * from tbl_ice_puffin order by a, b, c;
-select * from tbl_ice_puffin order by a, b, c;
+
 select count(*) from tbl_ice_puffin;
-desc formatted tbl_ice_puffin b;
+EXPLAIN select min(a), count(distinct b), max(c) from tbl_ice_puffin;
+desc formatted tbl_ice_puffin B;
+
+
+-- Test PARTITIONED table with hive.iceberg.stats.source=iceberg
+drop table tbl_ice_puffin;
+create external table tbl_ice_puffin(
+    a int,
+    b string
+)
+partitioned by (c int)
+stored by iceberg;
 
+insert overwrite table tbl_ice_puffin select * from src_ice;
+delete from tbl_ice_puffin where a <= 2;
 
--- Test if hive.iceberg.stats.source is empty
+analyze table tbl_ice_puffin compute statistics for columns A, C;
+
+select count(*) from tbl_ice_puffin;
+EXPLAIN select min(a), max(c) from tbl_ice_puffin;
+desc formatted tbl_ice_puffin C;
+
+set hive.stats.fetch.column.stats=true;
+EXPLAIN select count(*) from src_ice t1 join tbl_ice_puffin t2 on (t1.a = 
t2.a);
+
+
+-- Test hive.iceberg.stats.source is empty
 set hive.iceberg.stats.source= ;
-drop table if exists tbl_ice_puffin;
-create external table tbl_ice_puffin(a int, b string, c int) stored by iceberg 
tblproperties ('format-version'='2');
-insert into tbl_ice_puffin values (1, 'one', 50), (2, 'two', 51),(2, 'two', 
51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 'five', 54), (111, 
'one', 55), (333, 'two', 56);
-explain select * from tbl_ice_puffin order by a, b, c;
 
+drop table tbl_ice_puffin;
+create external table tbl_ice_puffin(
+    a int,
+    b string,
+    c int)
+stored by iceberg;
+
+insert into tbl_ice_puffin select * from src_ice;
 
-set hive.iceberg.stats.source=iceberg;
-drop table if exists tbl_ice_puffin;
-create external table tbl_ice_puffin(a int, b string, c int) stored by iceberg 
tblproperties ('format-version'='2');
-insert into tbl_ice_puffin values (1, 'one', 50), (2, 'two', 51),(2, 'two', 
51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 'five', 54), (111, 
'one', 55), (333, 'two', 56);
-explain select * from tbl_ice_puffin order by a, b, c;
-select * from tbl_ice_puffin order by a, b, c;
 select count(*) from tbl_ice_puffin;
-desc formatted tbl_ice_puffin a;
+EXPLAIN select min(a), count(distinct b), max(c) from tbl_ice_puffin;
+desc formatted tbl_ice_puffin A;
 
 
+-- Test hive.iceberg.stats.source = metastore
 set hive.iceberg.stats.source=metastore;
 
 drop table if exists tbl_ice;
-create external table tbl_ice(a int, b string, c int) stored by iceberg 
tblproperties ('format-version'='2');
-insert into tbl_ice values (1, 'one', 50), (2, 'two', 51),(2, 'two', 51),(2, 
'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 'five', 54), (111, 'one', 
55), (333, 'two', 56);
-explain select * from tbl_ice order by a, b, c;
-select * from tbl_ice order by a, b, c;
-select count(*) from tbl_ice;
+create external table tbl_ice(
+    a int,
+    b string,
+    c int)
+stored by iceberg;
 
-set hive.iceberg.stats.source=iceberg;
-delete from tbl_ice_puffin where a = 2;
-analyze table tbl_ice_puffin compute statistics for columns A, C;
-explain select * from tbl_ice_puffin order by a, b, c;
-select count(*) from tbl_ice_puffin;
-desc formatted tbl_ice_puffin C;
+insert into tbl_ice select * from src_ice;
 
-create table t1 (a int) stored by iceberg tblproperties ('format-version'='2');
-create table t2 (b int) stored by iceberg tblproperties ('format-version'='2');
-describe formatted t1;
-describe formatted t2;
-explain select * from t1 join t2 on t1.a = t2.b;
\ No newline at end of file
+select count(*) from tbl_ice;
+EXPLAIN select min(a), count(distinct b), max(c) from tbl_ice;
+desc formatted tbl_ice A;
diff --git 
a/iceberg/iceberg-handler/src/test/queries/positive/puffin_col_stats.q 
b/iceberg/iceberg-handler/src/test/queries/positive/puffin_col_stats.q
index 93269513f53..c2d2b1b15a2 100644
--- a/iceberg/iceberg-handler/src/test/queries/positive/puffin_col_stats.q
+++ b/iceberg/iceberg-handler/src/test/queries/positive/puffin_col_stats.q
@@ -1,21 +1,47 @@
 -- Mask random uuid
 --! qt:replace:/(\s+uuid\s+)\S+(\s*)/$1#Masked#$2/
+set hive.fetch.task.conversion=none;
+
 set hive.stats.autogather=true;
 set hive.stats.column.autogather=true;
 
 set hive.iceberg.stats.source=iceberg;
+
 drop table if exists tbl_ice_puffin;
-create external table tbl_ice_puffin(a int, b string, c int) stored by iceberg 
tblproperties ('format-version'='2');
-insert into tbl_ice_puffin values (1, 'one', 50), (2, 'two', 51),(2, 'two', 
51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 'five', 54), (111, 
'one', 55), (333, 'two', 56);
+create external table tbl_ice_puffin(
+    a int,
+    b string,
+    c int)
+stored by iceberg;
+
+insert into tbl_ice_puffin values
+    (1, 'one', 50),
+    (2, 'two', 51),
+    (2, 'two', 51),
+    (2, 'two', 51),
+    (3, 'three', 52),
+    (4, 'four', 53),
+    (5, 'five', 54),
+    (111, 'one', 55),
+    (333, 'two', 56);
+
+explain select * from tbl_ice_puffin;
 desc formatted tbl_ice_puffin a;
+desc formatted tbl_ice_puffin b;
 desc formatted tbl_ice_puffin c;
-explain select * from tbl_ice_puffin order by a, b, c;
-insert into tbl_ice_puffin values (1000, 'one', 1000), (5000, 'two', 5000);
+
+insert into tbl_ice_puffin values (1000, 'six', 1000), (5000, 'two', 5000);
+
+explain select * from tbl_ice_puffin;
 desc formatted tbl_ice_puffin a;
+desc formatted tbl_ice_puffin b;
 desc formatted tbl_ice_puffin c;
-explain select * from tbl_ice_puffin order by a, b, c;
-insert into tbl_ice_puffin values (10, 'one', 100000), (5000, 'two', 510000);
-explain select * from tbl_ice_puffin order by a, b, c;
+
+insert into tbl_ice_puffin values (10, 'six', 100000), (5000, 'two', 510000);
+
+explain select * from tbl_ice_puffin;
 desc formatted tbl_ice_puffin a;
+desc formatted tbl_ice_puffin b;
 desc formatted tbl_ice_puffin c;
+
 -- Result:  a = (min: 1, max: 5000) , c =(min: 50, max: 51000)
\ No newline at end of file
diff --git 
a/iceberg/iceberg-handler/src/test/queries/positive/puffin_col_stats_with_time_travel.q
 
b/iceberg/iceberg-handler/src/test/queries/positive/puffin_col_stats_with_time_travel.q
index 243b358eb53..a32045bc0d0 100644
--- 
a/iceberg/iceberg-handler/src/test/queries/positive/puffin_col_stats_with_time_travel.q
+++ 
b/iceberg/iceberg-handler/src/test/queries/positive/puffin_col_stats_with_time_travel.q
@@ -1,25 +1,33 @@
 set hive.fetch.task.conversion=none;
 
-create external table default.tbl_ice_puffin_time_travel(a int, b string, c 
int) stored by iceberg;
-insert into default.tbl_ice_puffin_time_travel values (1, 'one', 50), (2, 
'two', 51);
-alter table default.tbl_ice_puffin_time_travel create tag checkpoint;
+create external table tbl_ice_puffin_time_travel(
+    a int,
+    b string,
+    c int)
+stored by iceberg;
 
-explain select * from default.tbl_ice_puffin_time_travel;
+insert into tbl_ice_puffin_time_travel values
+    (1, 'one', 50),
+    (2, 'two', 51);
+
+alter table tbl_ice_puffin_time_travel create tag checkpoint;
+
+explain select * from tbl_ice_puffin_time_travel;
 explain select * from default.tbl_ice_puffin_time_travel.tag_checkpoint;
 
 insert into tbl_ice_puffin_time_travel values
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null);
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null);
 
-explain select * from default.tbl_ice_puffin_time_travel;
+explain select * from tbl_ice_puffin_time_travel;
 explain select * from default.tbl_ice_puffin_time_travel.tag_checkpoint;
diff --git a/iceberg/iceberg-handler/src/test/results/positive/col_stats.q.out 
b/iceberg/iceberg-handler/src/test/results/positive/col_stats.q.out
index d85fc67aab8..6810c72c93e 100644
--- a/iceberg/iceberg-handler/src/test/results/positive/col_stats.q.out
+++ b/iceberg/iceberg-handler/src/test/results/positive/col_stats.q.out
@@ -1,38 +1,103 @@
+PREHOOK: query: drop table if exists src_ice
+PREHOOK: type: DROPTABLE
+PREHOOK: Output: database:default
+POSTHOOK: query: drop table if exists src_ice
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Output: database:default
+PREHOOK: query: create external table src_ice(
+    a int,
+    b string,
+    c int)
+stored by iceberg
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@src_ice
+POSTHOOK: query: create external table src_ice(
+    a int,
+    b string,
+    c int)
+stored by iceberg
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@src_ice
+PREHOOK: query: insert into src_ice values
+    (1, 'one', 50),
+    (2, 'two', 51),
+    (2, 'two', 51),
+    (2, 'two', 51),
+    (3, 'three', 52),
+    (4, 'four', 53),
+    (5, 'five', 54),
+    (111, 'one', 55),
+    (333, 'two', 56)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@src_ice
+POSTHOOK: query: insert into src_ice values
+    (1, 'one', 50),
+    (2, 'two', 51),
+    (2, 'two', 51),
+    (2, 'two', 51),
+    (3, 'three', 52),
+    (4, 'four', 53),
+    (5, 'five', 54),
+    (111, 'one', 55),
+    (333, 'two', 56)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@src_ice
 PREHOOK: query: drop table if exists tbl_ice_puffin
 PREHOOK: type: DROPTABLE
 PREHOOK: Output: database:default
 POSTHOOK: query: drop table if exists tbl_ice_puffin
 POSTHOOK: type: DROPTABLE
 POSTHOOK: Output: database:default
-PREHOOK: query: create external table tbl_ice_puffin(a int, b string, c int) 
stored by iceberg tblproperties ('format-version'='2')
+PREHOOK: query: create external table tbl_ice_puffin(
+    a int,
+    b string,
+    c int)
+stored by iceberg
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_puffin
-POSTHOOK: query: create external table tbl_ice_puffin(a int, b string, c int) 
stored by iceberg tblproperties ('format-version'='2')
+POSTHOOK: query: create external table tbl_ice_puffin(
+    a int,
+    b string,
+    c int)
+stored by iceberg
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_puffin
-PREHOOK: query: insert into tbl_ice_puffin values (1, 'one', 50), (2, 'two', 
51),(2, 'two', 51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 
'five', 54), (111, 'one', 55), (333, 'two', 56)
+PREHOOK: query: insert into tbl_ice_puffin select * from src_ice
 PREHOOK: type: QUERY
-PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Input: default@src_ice
 PREHOOK: Output: default@tbl_ice_puffin
-POSTHOOK: query: insert into tbl_ice_puffin values (1, 'one', 50), (2, 'two', 
51),(2, 'two', 51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 
'five', 54), (111, 'one', 55), (333, 'two', 56)
+POSTHOOK: query: insert into tbl_ice_puffin select * from src_ice
 POSTHOOK: type: QUERY
-POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Input: default@src_ice
 POSTHOOK: Output: default@tbl_ice_puffin
-PREHOOK: query: insert into tbl_ice_puffin values (1, 'one', 50), (2, 'two', 
51),(2, 'two', 51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 
'five', 54), (111, 'one', 55), (333, 'two', 56)
+PREHOOK: query: insert into tbl_ice_puffin select * from src_ice
 PREHOOK: type: QUERY
-PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Input: default@src_ice
 PREHOOK: Output: default@tbl_ice_puffin
-POSTHOOK: query: insert into tbl_ice_puffin values (1, 'one', 50), (2, 'two', 
51),(2, 'two', 51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 
'five', 54), (111, 'one', 55), (333, 'two', 56)
+POSTHOOK: query: insert into tbl_ice_puffin select * from src_ice
 POSTHOOK: type: QUERY
-POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Input: default@src_ice
 POSTHOOK: Output: default@tbl_ice_puffin
-PREHOOK: query: explain select * from tbl_ice_puffin order by a, b, c
+PREHOOK: query: select count(*) from tbl_ice_puffin
 PREHOOK: type: QUERY
 PREHOOK: Input: default@tbl_ice_puffin
 PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: explain select * from tbl_ice_puffin order by a, b, c
+POSTHOOK: query: select count(*) from tbl_ice_puffin
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@tbl_ice_puffin
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+18
+PREHOOK: query: EXPLAIN select min(a), count(distinct b), max(c) from 
tbl_ice_puffin
+PREHOOK: type: QUERY
+PREHOOK: Input: default@tbl_ice_puffin
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: EXPLAIN select min(a), count(distinct b), max(c) from 
tbl_ice_puffin
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@tbl_ice_puffin
 POSTHOOK: Output: hdfs://### HDFS PATH ###
@@ -40,55 +105,39 @@ Plan optimized by CBO.
 
 Vertex dependency in root stage
 Reducer 2 <- Map 1 (SIMPLE_EDGE)
+Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
 
 Stage-0
   Fetch Operator
     limit:-1
     Stage-1
-      Reducer 2 vectorized
-      File Output Operator [FS_8]
-        Select Operator [SEL_7] (rows=18 width=95)
-          Output:["_col0","_col1","_col2"]
-        <-Map 1 [SIMPLE_EDGE] vectorized
-          SHUFFLE [RS_6]
-            Select Operator [SEL_5] (rows=18 width=95)
-              Output:["_col0","_col1","_col2"]
-              TableScan [TS_0] (rows=18 width=95)
-                
default@tbl_ice_puffin,tbl_ice_puffin,Tbl:COMPLETE,Col:COMPLETE,Output:["a","b","c"]
+      Reducer 3 vectorized
+      File Output Operator [FS_20]
+        Group By Operator [GBY_19] (rows=1 width=16)
+          
Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","count(VALUE._col1)","max(VALUE._col2)"]
+        <-Reducer 2 [CUSTOM_SIMPLE_EDGE] vectorized
+          PARTITION_ONLY_SHUFFLE [RS_18]
+            Group By Operator [GBY_17] (rows=1 width=16)
+              
Output:["_col0","_col1","_col2"],aggregations:["min(_col1)","count(_col0)","max(_col2)"]
+              Group By Operator [GBY_16] (rows=5 width=95)
+                
Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","max(VALUE._col1)"],keys:KEY._col0
+              <-Map 1 [SIMPLE_EDGE] vectorized
+                SHUFFLE [RS_15]
+                  PartitionCols:_col0
+                  Group By Operator [GBY_14] (rows=5 width=95)
+                    
Output:["_col0","_col1","_col3"],aggregations:["min(a)","max(c)"],keys:b
+                    Select Operator [SEL_13] (rows=18 width=95)
+                      Output:["a","b","c"]
+                      TableScan [TS_0] (rows=18 width=95)
+                        
default@tbl_ice_puffin,tbl_ice_puffin,Tbl:COMPLETE,Col:COMPLETE,Output:["a","b","c"]
 
-PREHOOK: query: select * from tbl_ice_puffin order by a, b, c
-PREHOOK: type: QUERY
-PREHOOK: Input: default@tbl_ice_puffin
-PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: select * from tbl_ice_puffin order by a, b, c
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@tbl_ice_puffin
-POSTHOOK: Output: hdfs://### HDFS PATH ###
-1      one     50
-1      one     50
-2      two     51
-2      two     51
-2      two     51
-2      two     51
-2      two     51
-2      two     51
-3      three   52
-3      three   52
-4      four    53
-4      four    53
-5      five    54
-5      five    54
-111    one     55
-111    one     55
-333    two     56
-333    two     56
-PREHOOK: query: desc formatted tbl_ice_puffin b
+PREHOOK: query: desc formatted tbl_ice_puffin B
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@tbl_ice_puffin
-POSTHOOK: query: desc formatted tbl_ice_puffin b
+POSTHOOK: query: desc formatted tbl_ice_puffin B
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@tbl_ice_puffin
-col_name               b                   
+col_name               B                   
 data_type              string              
 min                                        
 max                                        
@@ -101,12 +150,14 @@ num_falses
 bit_vector                                 
 comment                                    
 COLUMN_STATS_ACCURATE  
{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\",\"b\":\"true\",\"c\":\"true\"}}
-PREHOOK: query: update tbl_ice_puffin set b='two' where b='one' or b='three'
+PREHOOK: query: update tbl_ice_puffin
+    set b='two' where b='one' or b='three'
 PREHOOK: type: QUERY
 PREHOOK: Input: default@tbl_ice_puffin
 PREHOOK: Output: default@tbl_ice_puffin
 PREHOOK: Output: default@tbl_ice_puffin
-POSTHOOK: query: update tbl_ice_puffin set b='two' where b='one' or b='three'
+POSTHOOK: query: update tbl_ice_puffin
+    set b='two' where b='one' or b='three'
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@tbl_ice_puffin
 POSTHOOK: Output: default@tbl_ice_puffin
@@ -121,11 +172,20 @@ POSTHOOK: type: ANALYZE_TABLE
 POSTHOOK: Input: default@tbl_ice_puffin
 POSTHOOK: Output: default@tbl_ice_puffin
 POSTHOOK: Output: hdfs://### HDFS PATH ###
-PREHOOK: query: explain select * from tbl_ice_puffin order by a, b, c
+PREHOOK: query: select count(*) from tbl_ice_puffin
 PREHOOK: type: QUERY
 PREHOOK: Input: default@tbl_ice_puffin
 PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: explain select * from tbl_ice_puffin order by a, b, c
+POSTHOOK: query: select count(*) from tbl_ice_puffin
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@tbl_ice_puffin
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+18
+PREHOOK: query: EXPLAIN select min(a), count(distinct b), max(c) from 
tbl_ice_puffin
+PREHOOK: type: QUERY
+PREHOOK: Input: default@tbl_ice_puffin
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: EXPLAIN select min(a), count(distinct b), max(c) from 
tbl_ice_puffin
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@tbl_ice_puffin
 POSTHOOK: Output: hdfs://### HDFS PATH ###
@@ -133,64 +193,39 @@ Plan optimized by CBO.
 
 Vertex dependency in root stage
 Reducer 2 <- Map 1 (SIMPLE_EDGE)
+Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
 
 Stage-0
   Fetch Operator
     limit:-1
     Stage-1
-      Reducer 2 vectorized
-      File Output Operator [FS_8]
-        Select Operator [SEL_7] (rows=18 width=95)
-          Output:["_col0","_col1","_col2"]
-        <-Map 1 [SIMPLE_EDGE] vectorized
-          SHUFFLE [RS_6]
-            Select Operator [SEL_5] (rows=18 width=95)
-              Output:["_col0","_col1","_col2"]
-              TableScan [TS_0] (rows=18 width=95)
-                
default@tbl_ice_puffin,tbl_ice_puffin,Tbl:COMPLETE,Col:COMPLETE,Output:["a","b","c"]
+      Reducer 3 vectorized
+      File Output Operator [FS_20]
+        Group By Operator [GBY_19] (rows=1 width=16)
+          
Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","count(VALUE._col1)","max(VALUE._col2)"]
+        <-Reducer 2 [CUSTOM_SIMPLE_EDGE] vectorized
+          PARTITION_ONLY_SHUFFLE [RS_18]
+            Group By Operator [GBY_17] (rows=1 width=16)
+              
Output:["_col0","_col1","_col2"],aggregations:["min(_col1)","count(_col0)","max(_col2)"]
+              Group By Operator [GBY_16] (rows=3 width=95)
+                
Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","max(VALUE._col1)"],keys:KEY._col0
+              <-Map 1 [SIMPLE_EDGE] vectorized
+                SHUFFLE [RS_15]
+                  PartitionCols:_col0
+                  Group By Operator [GBY_14] (rows=3 width=95)
+                    
Output:["_col0","_col1","_col3"],aggregations:["min(a)","max(c)"],keys:b
+                    Select Operator [SEL_13] (rows=18 width=95)
+                      Output:["a","b","c"]
+                      TableScan [TS_0] (rows=18 width=95)
+                        
default@tbl_ice_puffin,tbl_ice_puffin,Tbl:COMPLETE,Col:COMPLETE,Output:["a","b","c"]
 
-PREHOOK: query: select * from tbl_ice_puffin order by a, b, c
-PREHOOK: type: QUERY
-PREHOOK: Input: default@tbl_ice_puffin
-PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: select * from tbl_ice_puffin order by a, b, c
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@tbl_ice_puffin
-POSTHOOK: Output: hdfs://### HDFS PATH ###
-1      two     50
-1      two     50
-2      two     51
-2      two     51
-2      two     51
-2      two     51
-2      two     51
-2      two     51
-3      two     52
-3      two     52
-4      four    53
-4      four    53
-5      five    54
-5      five    54
-111    two     55
-111    two     55
-333    two     56
-333    two     56
-PREHOOK: query: select count(*) from tbl_ice_puffin
-PREHOOK: type: QUERY
-PREHOOK: Input: default@tbl_ice_puffin
-PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: select count(*) from tbl_ice_puffin
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@tbl_ice_puffin
-POSTHOOK: Output: hdfs://### HDFS PATH ###
-18
-PREHOOK: query: desc formatted tbl_ice_puffin b
+PREHOOK: query: desc formatted tbl_ice_puffin B
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@tbl_ice_puffin
-POSTHOOK: query: desc formatted tbl_ice_puffin b
+POSTHOOK: query: desc formatted tbl_ice_puffin B
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@tbl_ice_puffin
-col_name               b                   
+col_name               B                   
 data_type              string              
 min                                        
 max                                        
@@ -203,91 +238,225 @@ num_falses
 bit_vector             HL                  
 comment                                    
 COLUMN_STATS_ACCURATE  
{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\",\"b\":\"true\",\"c\":\"true\"}}
-PREHOOK: query: drop table if exists tbl_ice_puffin
+PREHOOK: query: drop table tbl_ice_puffin
 PREHOOK: type: DROPTABLE
 PREHOOK: Input: default@tbl_ice_puffin
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_puffin
-POSTHOOK: query: drop table if exists tbl_ice_puffin
+POSTHOOK: query: drop table tbl_ice_puffin
 POSTHOOK: type: DROPTABLE
 POSTHOOK: Input: default@tbl_ice_puffin
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_puffin
-PREHOOK: query: create external table tbl_ice_puffin(a int, b string, c int) 
stored by iceberg tblproperties ('format-version'='2')
+PREHOOK: query: create external table tbl_ice_puffin(
+    a int,
+    b string
+)
+partitioned by (c int)
+stored by iceberg
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_puffin
-POSTHOOK: query: create external table tbl_ice_puffin(a int, b string, c int) 
stored by iceberg tblproperties ('format-version'='2')
+POSTHOOK: query: create external table tbl_ice_puffin(
+    a int,
+    b string
+)
+partitioned by (c int)
+stored by iceberg
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_puffin
-PREHOOK: query: insert into tbl_ice_puffin values (1, 'one', 50), (2, 'two', 
51),(2, 'two', 51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 
'five', 54), (111, 'one', 55), (333, 'two', 56)
+PREHOOK: query: insert overwrite table tbl_ice_puffin select * from src_ice
 PREHOOK: type: QUERY
-PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Input: default@src_ice
 PREHOOK: Output: default@tbl_ice_puffin
-POSTHOOK: query: insert into tbl_ice_puffin values (1, 'one', 50), (2, 'two', 
51),(2, 'two', 51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 
'five', 54), (111, 'one', 55), (333, 'two', 56)
+POSTHOOK: query: insert overwrite table tbl_ice_puffin select * from src_ice
 POSTHOOK: type: QUERY
-POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Input: default@src_ice
+POSTHOOK: Output: default@tbl_ice_puffin
+PREHOOK: query: delete from tbl_ice_puffin where a <= 2
+PREHOOK: type: QUERY
+PREHOOK: Input: default@tbl_ice_puffin
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: delete from tbl_ice_puffin where a <= 2
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@tbl_ice_puffin
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+PREHOOK: query: analyze table tbl_ice_puffin compute statistics for columns A, 
C
+PREHOOK: type: ANALYZE_TABLE
+PREHOOK: Input: default@tbl_ice_puffin
+PREHOOK: Output: default@tbl_ice_puffin
+PREHOOK: Output: default@tbl_ice_puffin@c=52
+PREHOOK: Output: default@tbl_ice_puffin@c=53
+PREHOOK: Output: default@tbl_ice_puffin@c=54
+PREHOOK: Output: default@tbl_ice_puffin@c=55
+PREHOOK: Output: default@tbl_ice_puffin@c=56
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: analyze table tbl_ice_puffin compute statistics for columns 
A, C
+POSTHOOK: type: ANALYZE_TABLE
+POSTHOOK: Input: default@tbl_ice_puffin
 POSTHOOK: Output: default@tbl_ice_puffin
-PREHOOK: query: explain select * from tbl_ice_puffin order by a, b, c
+POSTHOOK: Output: default@tbl_ice_puffin@c=52
+POSTHOOK: Output: default@tbl_ice_puffin@c=53
+POSTHOOK: Output: default@tbl_ice_puffin@c=54
+POSTHOOK: Output: default@tbl_ice_puffin@c=55
+POSTHOOK: Output: default@tbl_ice_puffin@c=56
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+PREHOOK: query: select count(*) from tbl_ice_puffin
 PREHOOK: type: QUERY
 PREHOOK: Input: default@tbl_ice_puffin
 PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: explain select * from tbl_ice_puffin order by a, b, c
+POSTHOOK: query: select count(*) from tbl_ice_puffin
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@tbl_ice_puffin
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+5
+PREHOOK: query: EXPLAIN select min(a), max(c) from tbl_ice_puffin
+PREHOOK: type: QUERY
+PREHOOK: Input: default@tbl_ice_puffin
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: EXPLAIN select min(a), max(c) from tbl_ice_puffin
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@tbl_ice_puffin
 POSTHOOK: Output: hdfs://### HDFS PATH ###
 Plan optimized by CBO.
 
 Vertex dependency in root stage
-Reducer 2 <- Map 1 (SIMPLE_EDGE)
+Reducer 2 <- Map 1 (CUSTOM_SIMPLE_EDGE)
 
 Stage-0
   Fetch Operator
     limit:-1
     Stage-1
       Reducer 2 vectorized
-      File Output Operator [FS_8]
-        Select Operator [SEL_7] (rows=9 width=95)
-          Output:["_col0","_col1","_col2"]
-        <-Map 1 [SIMPLE_EDGE] vectorized
-          SHUFFLE [RS_6]
-            Select Operator [SEL_5] (rows=9 width=95)
-              Output:["_col0","_col1","_col2"]
-              TableScan [TS_0] (rows=9 width=95)
-                
default@tbl_ice_puffin,tbl_ice_puffin,Tbl:COMPLETE,Col:COMPLETE,Output:["a","b","c"]
+      File Output Operator [FS_11]
+        Group By Operator [GBY_10] (rows=1 width=8)
+          
Output:["_col0","_col1"],aggregations:["min(VALUE._col0)","max(VALUE._col1)"]
+        <-Map 1 [CUSTOM_SIMPLE_EDGE] vectorized
+          PARTITION_ONLY_SHUFFLE [RS_9]
+            Group By Operator [GBY_8] (rows=1 width=8)
+              Output:["_col0","_col1"],aggregations:["min(a)","max(c)"]
+              Select Operator [SEL_7] (rows=5 width=8)
+                Output:["a","c"]
+                TableScan [TS_0] (rows=5 width=8)
+                  
default@tbl_ice_puffin,tbl_ice_puffin,Tbl:COMPLETE,Col:COMPLETE,Output:["a","c"]
 
-PREHOOK: query: drop table if exists tbl_ice_puffin
+PREHOOK: query: desc formatted tbl_ice_puffin C
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@tbl_ice_puffin
+POSTHOOK: query: desc formatted tbl_ice_puffin C
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@tbl_ice_puffin
+col_name               C                   
+data_type              int                 
+min                    52                  
+max                    56                  
+num_nulls              0                   
+distinct_count         5                   
+avg_col_len                                
+max_col_len                                
+num_trues                                  
+num_falses                                 
+bit_vector             HL                  
+comment                                    
+COLUMN_STATS_ACCURATE  
{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\",\"b\":\"true\",\"c\":\"true\"}}
+PREHOOK: query: EXPLAIN select count(*) from src_ice t1 join tbl_ice_puffin t2 
on (t1.a = t2.a)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src_ice
+PREHOOK: Input: default@tbl_ice_puffin
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: EXPLAIN select count(*) from src_ice t1 join tbl_ice_puffin 
t2 on (t1.a = t2.a)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src_ice
+POSTHOOK: Input: default@tbl_ice_puffin
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+Plan optimized by CBO.
+
+Vertex dependency in root stage
+Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE)
+Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Reducer 3 vectorized
+      File Output Operator [FS_37]
+        Group By Operator [GBY_36] (rows=1 width=8)
+          Output:["_col0"],aggregations:["count(VALUE._col0)"]
+        <-Reducer 2 [CUSTOM_SIMPLE_EDGE]
+          PARTITION_ONLY_SHUFFLE [RS_11]
+            Group By Operator [GBY_10] (rows=1 width=8)
+              Output:["_col0"],aggregations:["count()"]
+              Merge Join Operator [MERGEJOIN_29] (rows=6 width=8)
+                Conds:RS_32._col0=RS_35._col0(Inner)
+              <-Map 1 [SIMPLE_EDGE] vectorized
+                SHUFFLE [RS_32]
+                  PartitionCols:_col0
+                  Select Operator [SEL_31] (rows=9 width=4)
+                    Output:["_col0"]
+                    Filter Operator [FIL_30] (rows=9 width=4)
+                      predicate:a is not null
+                      TableScan [TS_0] (rows=9 width=4)
+                        
default@src_ice,t1,Tbl:COMPLETE,Col:COMPLETE,Output:["a"]
+              <-Map 4 [SIMPLE_EDGE] vectorized
+                SHUFFLE [RS_35]
+                  PartitionCols:_col0
+                  Select Operator [SEL_34] (rows=5 width=4)
+                    Output:["_col0"]
+                    Filter Operator [FIL_33] (rows=5 width=4)
+                      predicate:a is not null
+                      TableScan [TS_3] (rows=5 width=4)
+                        
default@tbl_ice_puffin,t2,Tbl:COMPLETE,Col:COMPLETE,Output:["a"]
+
+PREHOOK: query: drop table tbl_ice_puffin
 PREHOOK: type: DROPTABLE
 PREHOOK: Input: default@tbl_ice_puffin
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_puffin
-POSTHOOK: query: drop table if exists tbl_ice_puffin
+POSTHOOK: query: drop table tbl_ice_puffin
 POSTHOOK: type: DROPTABLE
 POSTHOOK: Input: default@tbl_ice_puffin
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_puffin
-PREHOOK: query: create external table tbl_ice_puffin(a int, b string, c int) 
stored by iceberg tblproperties ('format-version'='2')
+PREHOOK: query: create external table tbl_ice_puffin(
+    a int,
+    b string,
+    c int)
+stored by iceberg
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_puffin
-POSTHOOK: query: create external table tbl_ice_puffin(a int, b string, c int) 
stored by iceberg tblproperties ('format-version'='2')
+POSTHOOK: query: create external table tbl_ice_puffin(
+    a int,
+    b string,
+    c int)
+stored by iceberg
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_puffin
-PREHOOK: query: insert into tbl_ice_puffin values (1, 'one', 50), (2, 'two', 
51),(2, 'two', 51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 
'five', 54), (111, 'one', 55), (333, 'two', 56)
+PREHOOK: query: insert into tbl_ice_puffin select * from src_ice
 PREHOOK: type: QUERY
-PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Input: default@src_ice
 PREHOOK: Output: default@tbl_ice_puffin
-POSTHOOK: query: insert into tbl_ice_puffin values (1, 'one', 50), (2, 'two', 
51),(2, 'two', 51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 
'five', 54), (111, 'one', 55), (333, 'two', 56)
+POSTHOOK: query: insert into tbl_ice_puffin select * from src_ice
 POSTHOOK: type: QUERY
-POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Input: default@src_ice
 POSTHOOK: Output: default@tbl_ice_puffin
-PREHOOK: query: explain select * from tbl_ice_puffin order by a, b, c
+PREHOOK: query: select count(*) from tbl_ice_puffin
 PREHOOK: type: QUERY
 PREHOOK: Input: default@tbl_ice_puffin
 PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: explain select * from tbl_ice_puffin order by a, b, c
+POSTHOOK: query: select count(*) from tbl_ice_puffin
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@tbl_ice_puffin
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+9
+PREHOOK: query: EXPLAIN select min(a), count(distinct b), max(c) from 
tbl_ice_puffin
+PREHOOK: type: QUERY
+PREHOOK: Input: default@tbl_ice_puffin
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: EXPLAIN select min(a), count(distinct b), max(c) from 
tbl_ice_puffin
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@tbl_ice_puffin
 POSTHOOK: Output: hdfs://### HDFS PATH ###
@@ -295,55 +464,39 @@ Plan optimized by CBO.
 
 Vertex dependency in root stage
 Reducer 2 <- Map 1 (SIMPLE_EDGE)
+Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
 
 Stage-0
   Fetch Operator
     limit:-1
     Stage-1
-      Reducer 2 vectorized
-      File Output Operator [FS_8]
-        Select Operator [SEL_7] (rows=9 width=95)
-          Output:["_col0","_col1","_col2"]
-        <-Map 1 [SIMPLE_EDGE] vectorized
-          SHUFFLE [RS_6]
-            Select Operator [SEL_5] (rows=9 width=95)
-              Output:["_col0","_col1","_col2"]
-              TableScan [TS_0] (rows=9 width=95)
-                
default@tbl_ice_puffin,tbl_ice_puffin,Tbl:COMPLETE,Col:COMPLETE,Output:["a","b","c"]
+      Reducer 3 vectorized
+      File Output Operator [FS_20]
+        Group By Operator [GBY_19] (rows=1 width=16)
+          
Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","count(VALUE._col1)","max(VALUE._col2)"]
+        <-Reducer 2 [CUSTOM_SIMPLE_EDGE] vectorized
+          PARTITION_ONLY_SHUFFLE [RS_18]
+            Group By Operator [GBY_17] (rows=1 width=16)
+              
Output:["_col0","_col1","_col2"],aggregations:["min(_col1)","count(_col0)","max(_col2)"]
+              Group By Operator [GBY_16] (rows=5 width=95)
+                
Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","max(VALUE._col1)"],keys:KEY._col0
+              <-Map 1 [SIMPLE_EDGE] vectorized
+                SHUFFLE [RS_15]
+                  PartitionCols:_col0
+                  Group By Operator [GBY_14] (rows=5 width=95)
+                    
Output:["_col0","_col1","_col3"],aggregations:["min(a)","max(c)"],keys:b
+                    Select Operator [SEL_13] (rows=9 width=95)
+                      Output:["a","b","c"]
+                      TableScan [TS_0] (rows=9 width=95)
+                        
default@tbl_ice_puffin,tbl_ice_puffin,Tbl:COMPLETE,Col:COMPLETE,Output:["a","b","c"]
 
-PREHOOK: query: select * from tbl_ice_puffin order by a, b, c
-PREHOOK: type: QUERY
-PREHOOK: Input: default@tbl_ice_puffin
-PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: select * from tbl_ice_puffin order by a, b, c
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@tbl_ice_puffin
-POSTHOOK: Output: hdfs://### HDFS PATH ###
-1      one     50
-2      two     51
-2      two     51
-2      two     51
-3      three   52
-4      four    53
-5      five    54
-111    one     55
-333    two     56
-PREHOOK: query: select count(*) from tbl_ice_puffin
-PREHOOK: type: QUERY
-PREHOOK: Input: default@tbl_ice_puffin
-PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: select count(*) from tbl_ice_puffin
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@tbl_ice_puffin
-POSTHOOK: Output: hdfs://### HDFS PATH ###
-9
-PREHOOK: query: desc formatted tbl_ice_puffin a
+PREHOOK: query: desc formatted tbl_ice_puffin A
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@tbl_ice_puffin
-POSTHOOK: query: desc formatted tbl_ice_puffin a
+POSTHOOK: query: desc formatted tbl_ice_puffin A
 POSTHOOK: type: DESCTABLE
 POSTHOOK: Input: default@tbl_ice_puffin
-col_name               a                   
+col_name               A                   
 data_type              int                 
 min                    1                   
 max                    333                 
@@ -362,67 +515,30 @@ PREHOOK: Output: database:default
 POSTHOOK: query: drop table if exists tbl_ice
 POSTHOOK: type: DROPTABLE
 POSTHOOK: Output: database:default
-PREHOOK: query: create external table tbl_ice(a int, b string, c int) stored 
by iceberg tblproperties ('format-version'='2')
+PREHOOK: query: create external table tbl_ice(
+    a int,
+    b string,
+    c int)
+stored by iceberg
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice
-POSTHOOK: query: create external table tbl_ice(a int, b string, c int) stored 
by iceberg tblproperties ('format-version'='2')
+POSTHOOK: query: create external table tbl_ice(
+    a int,
+    b string,
+    c int)
+stored by iceberg
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice
-PREHOOK: query: insert into tbl_ice values (1, 'one', 50), (2, 'two', 51),(2, 
'two', 51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 'five', 54), 
(111, 'one', 55), (333, 'two', 56)
+PREHOOK: query: insert into tbl_ice select * from src_ice
 PREHOOK: type: QUERY
-PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Input: default@src_ice
 PREHOOK: Output: default@tbl_ice
-POSTHOOK: query: insert into tbl_ice values (1, 'one', 50), (2, 'two', 51),(2, 
'two', 51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 'five', 54), 
(111, 'one', 55), (333, 'two', 56)
+POSTHOOK: query: insert into tbl_ice select * from src_ice
 POSTHOOK: type: QUERY
-POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Input: default@src_ice
 POSTHOOK: Output: default@tbl_ice
-PREHOOK: query: explain select * from tbl_ice order by a, b, c
-PREHOOK: type: QUERY
-PREHOOK: Input: default@tbl_ice
-PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: explain select * from tbl_ice order by a, b, c
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@tbl_ice
-POSTHOOK: Output: hdfs://### HDFS PATH ###
-Plan optimized by CBO.
-
-Vertex dependency in root stage
-Reducer 2 <- Map 1 (SIMPLE_EDGE)
-
-Stage-0
-  Fetch Operator
-    limit:-1
-    Stage-1
-      Reducer 2 vectorized
-      File Output Operator [FS_8]
-        Select Operator [SEL_7] (rows=9 width=95)
-          Output:["_col0","_col1","_col2"]
-        <-Map 1 [SIMPLE_EDGE] vectorized
-          SHUFFLE [RS_6]
-            Select Operator [SEL_5] (rows=9 width=95)
-              Output:["_col0","_col1","_col2"]
-              TableScan [TS_0] (rows=9 width=95)
-                
default@tbl_ice,tbl_ice,Tbl:COMPLETE,Col:COMPLETE,Output:["a","b","c"]
-
-PREHOOK: query: select * from tbl_ice order by a, b, c
-PREHOOK: type: QUERY
-PREHOOK: Input: default@tbl_ice
-PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: select * from tbl_ice order by a, b, c
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@tbl_ice
-POSTHOOK: Output: hdfs://### HDFS PATH ###
-1      one     50
-2      two     51
-2      two     51
-2      two     51
-3      three   52
-4      four    53
-5      five    54
-111    one     55
-333    two     56
 PREHOOK: query: select count(*) from tbl_ice
 PREHOOK: type: QUERY
 PREHOOK: Input: default@tbl_ice
@@ -432,225 +548,60 @@ POSTHOOK: type: QUERY
 POSTHOOK: Input: default@tbl_ice
 POSTHOOK: Output: hdfs://### HDFS PATH ###
 9
-PREHOOK: query: delete from tbl_ice_puffin where a = 2
+PREHOOK: query: EXPLAIN select min(a), count(distinct b), max(c) from tbl_ice
 PREHOOK: type: QUERY
-PREHOOK: Input: default@tbl_ice_puffin
-PREHOOK: Output: default@tbl_ice_puffin
-POSTHOOK: query: delete from tbl_ice_puffin where a = 2
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@tbl_ice_puffin
-POSTHOOK: Output: default@tbl_ice_puffin
-PREHOOK: query: analyze table tbl_ice_puffin compute statistics for columns A, 
C
-PREHOOK: type: ANALYZE_TABLE
-PREHOOK: Input: default@tbl_ice_puffin
-PREHOOK: Output: default@tbl_ice_puffin
-PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: analyze table tbl_ice_puffin compute statistics for columns 
A, C
-POSTHOOK: type: ANALYZE_TABLE
-POSTHOOK: Input: default@tbl_ice_puffin
-POSTHOOK: Output: default@tbl_ice_puffin
-POSTHOOK: Output: hdfs://### HDFS PATH ###
-PREHOOK: query: explain select * from tbl_ice_puffin order by a, b, c
-PREHOOK: type: QUERY
-PREHOOK: Input: default@tbl_ice_puffin
+PREHOOK: Input: default@tbl_ice
 PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: explain select * from tbl_ice_puffin order by a, b, c
+POSTHOOK: query: EXPLAIN select min(a), count(distinct b), max(c) from tbl_ice
 POSTHOOK: type: QUERY
-POSTHOOK: Input: default@tbl_ice_puffin
+POSTHOOK: Input: default@tbl_ice
 POSTHOOK: Output: hdfs://### HDFS PATH ###
 Plan optimized by CBO.
 
 Vertex dependency in root stage
 Reducer 2 <- Map 1 (SIMPLE_EDGE)
+Reducer 3 <- Reducer 2 (CUSTOM_SIMPLE_EDGE)
 
 Stage-0
   Fetch Operator
     limit:-1
     Stage-1
-      Reducer 2 vectorized
-      File Output Operator [FS_8]
-        Select Operator [SEL_7] (rows=6 width=192)
-          Output:["_col0","_col1","_col2"]
-        <-Map 1 [SIMPLE_EDGE] vectorized
-          SHUFFLE [RS_6]
-            Select Operator [SEL_5] (rows=6 width=192)
-              Output:["_col0","_col1","_col2"]
-              TableScan [TS_0] (rows=6 width=192)
-                
default@tbl_ice_puffin,tbl_ice_puffin,Tbl:COMPLETE,Col:PARTIAL,Output:["a","b","c"]
+      Reducer 3 vectorized
+      File Output Operator [FS_20]
+        Group By Operator [GBY_19] (rows=1 width=16)
+          
Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","count(VALUE._col1)","max(VALUE._col2)"]
+        <-Reducer 2 [CUSTOM_SIMPLE_EDGE] vectorized
+          PARTITION_ONLY_SHUFFLE [RS_18]
+            Group By Operator [GBY_17] (rows=1 width=16)
+              
Output:["_col0","_col1","_col2"],aggregations:["min(_col1)","count(_col0)","max(_col2)"]
+              Group By Operator [GBY_16] (rows=5 width=95)
+                
Output:["_col0","_col1","_col2"],aggregations:["min(VALUE._col0)","max(VALUE._col1)"],keys:KEY._col0
+              <-Map 1 [SIMPLE_EDGE] vectorized
+                SHUFFLE [RS_15]
+                  PartitionCols:_col0
+                  Group By Operator [GBY_14] (rows=5 width=95)
+                    
Output:["_col0","_col1","_col3"],aggregations:["min(a)","max(c)"],keys:b
+                    Select Operator [SEL_13] (rows=9 width=95)
+                      Output:["a","b","c"]
+                      TableScan [TS_0] (rows=9 width=95)
+                        
default@tbl_ice,tbl_ice,Tbl:COMPLETE,Col:COMPLETE,Output:["a","b","c"]
 
-PREHOOK: query: select count(*) from tbl_ice_puffin
-PREHOOK: type: QUERY
-PREHOOK: Input: default@tbl_ice_puffin
-PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: select count(*) from tbl_ice_puffin
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@tbl_ice_puffin
-POSTHOOK: Output: hdfs://### HDFS PATH ###
-6
-PREHOOK: query: desc formatted tbl_ice_puffin C
+PREHOOK: query: desc formatted tbl_ice A
 PREHOOK: type: DESCTABLE
-PREHOOK: Input: default@tbl_ice_puffin
-POSTHOOK: query: desc formatted tbl_ice_puffin C
+PREHOOK: Input: default@tbl_ice
+POSTHOOK: query: desc formatted tbl_ice A
 POSTHOOK: type: DESCTABLE
-POSTHOOK: Input: default@tbl_ice_puffin
-col_name               C                   
+POSTHOOK: Input: default@tbl_ice
+col_name               A                   
 data_type              int                 
-min                    50                  
-max                    56                  
+min                    1                   
+max                    333                 
 num_nulls              0                   
-distinct_count         6                   
+distinct_count         7                   
 avg_col_len                                
 max_col_len                                
 num_trues                                  
 num_falses                                 
 bit_vector             HL                  
 comment                                    
-COLUMN_STATS_ACCURATE  
{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\",\"c\":\"true\"}}
-PREHOOK: query: create table t1 (a int) stored by iceberg tblproperties 
('format-version'='2')
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@t1
-POSTHOOK: query: create table t1 (a int) stored by iceberg tblproperties 
('format-version'='2')
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@t1
-PREHOOK: query: create table t2 (b int) stored by iceberg tblproperties 
('format-version'='2')
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@t2
-POSTHOOK: query: create table t2 (b int) stored by iceberg tblproperties 
('format-version'='2')
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@t2
-PREHOOK: query: describe formatted t1
-PREHOOK: type: DESCTABLE
-PREHOOK: Input: default@t1
-POSTHOOK: query: describe formatted t1
-POSTHOOK: type: DESCTABLE
-POSTHOOK: Input: default@t1
-# col_name             data_type               comment             
-a                      int                                         
-                
-# Detailed Table Information            
-Database:              default                  
-#### A masked pattern was here ####
-Retention:             0                        
-#### A masked pattern was here ####
-Table Type:            EXTERNAL_TABLE           
-Table Parameters:               
-       COLUMN_STATS_ACCURATE   
{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\"}}
-       EXTERNAL                TRUE                
-       bucketing_version       2                   
-       current-schema          
{\"type\":\"struct\",\"schema-id\":0,\"fields\":[{\"id\":1,\"name\":\"a\",\"required\":false,\"type\":\"int\"}]}
-       format-version          2                   
-       iceberg.orc.files.only  false               
-       metadata_location       hdfs://### HDFS PATH ###
-       numFiles                0                   
-       numRows                 0                   
-       parquet.compression     zstd                
-       rawDataSize             0                   
-       serialization.format    1                   
-       snapshot-count          0                   
-       storage_handler         
org.apache.iceberg.mr.hive.HiveIcebergStorageHandler
-       table_type              ICEBERG             
-       totalSize               #Masked#
-#### A masked pattern was here ####
-       uuid                    #Masked#
-       write.delete.mode       merge-on-read       
-       write.merge.mode        merge-on-read       
-       write.metadata.delete-after-commit.enabled      true                
-       write.update.mode       merge-on-read       
-                
-# Storage Information           
-SerDe Library:         org.apache.iceberg.mr.hive.HiveIcebergSerDe      
-InputFormat:           org.apache.iceberg.mr.hive.HiveIcebergInputFormat       
 
-OutputFormat:          org.apache.iceberg.mr.hive.HiveIcebergOutputFormat      
 
-Compressed:            No                       
-Sort Columns:          []                       
-PREHOOK: query: describe formatted t2
-PREHOOK: type: DESCTABLE
-PREHOOK: Input: default@t2
-POSTHOOK: query: describe formatted t2
-POSTHOOK: type: DESCTABLE
-POSTHOOK: Input: default@t2
-# col_name             data_type               comment             
-b                      int                                         
-                
-# Detailed Table Information            
-Database:              default                  
-#### A masked pattern was here ####
-Retention:             0                        
-#### A masked pattern was here ####
-Table Type:            EXTERNAL_TABLE           
-Table Parameters:               
-       COLUMN_STATS_ACCURATE   
{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"b\":\"true\"}}
-       EXTERNAL                TRUE                
-       bucketing_version       2                   
-       current-schema          
{\"type\":\"struct\",\"schema-id\":0,\"fields\":[{\"id\":1,\"name\":\"b\",\"required\":false,\"type\":\"int\"}]}
-       format-version          2                   
-       iceberg.orc.files.only  false               
-       metadata_location       hdfs://### HDFS PATH ###
-       numFiles                0                   
-       numRows                 0                   
-       parquet.compression     zstd                
-       rawDataSize             0                   
-       serialization.format    1                   
-       snapshot-count          0                   
-       storage_handler         
org.apache.iceberg.mr.hive.HiveIcebergStorageHandler
-       table_type              ICEBERG             
-       totalSize               #Masked#
-#### A masked pattern was here ####
-       uuid                    #Masked#
-       write.delete.mode       merge-on-read       
-       write.merge.mode        merge-on-read       
-       write.metadata.delete-after-commit.enabled      true                
-       write.update.mode       merge-on-read       
-                
-# Storage Information           
-SerDe Library:         org.apache.iceberg.mr.hive.HiveIcebergSerDe      
-InputFormat:           org.apache.iceberg.mr.hive.HiveIcebergInputFormat       
 
-OutputFormat:          org.apache.iceberg.mr.hive.HiveIcebergOutputFormat      
 
-Compressed:            No                       
-Sort Columns:          []                       
-PREHOOK: query: explain select * from t1 join t2 on t1.a = t2.b
-PREHOOK: type: QUERY
-PREHOOK: Input: default@t1
-PREHOOK: Input: default@t2
-PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: explain select * from t1 join t2 on t1.a = t2.b
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@t1
-POSTHOOK: Input: default@t2
-POSTHOOK: Output: hdfs://### HDFS PATH ###
-Plan optimized by CBO.
-
-Vertex dependency in root stage
-Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE)
-
-Stage-0
-  Fetch Operator
-    limit:-1
-    Stage-1
-      Reducer 2
-      File Output Operator [FS_10]
-        Merge Join Operator [MERGEJOIN_25] (rows=1 width=4)
-          Conds:RS_28._col0=RS_31._col0(Inner),Output:["_col0","_col1"]
-        <-Map 1 [SIMPLE_EDGE] vectorized
-          SHUFFLE [RS_28]
-            PartitionCols:_col0
-            Select Operator [SEL_27] (rows=1 width=4)
-              Output:["_col0"]
-              Filter Operator [FIL_26] (rows=1 width=4)
-                predicate:a is not null
-                TableScan [TS_0] (rows=1 width=4)
-                  default@t1,t1,Tbl:COMPLETE,Col:NONE,Output:["a"]
-        <-Map 3 [SIMPLE_EDGE] vectorized
-          SHUFFLE [RS_31]
-            PartitionCols:_col0
-            Select Operator [SEL_30] (rows=1 width=4)
-              Output:["_col0"]
-              Filter Operator [FIL_29] (rows=1 width=4)
-                predicate:b is not null
-                TableScan [TS_3] (rows=1 width=4)
-                  default@t2,t2,Tbl:COMPLETE,Col:NONE,Output:["b"]
-
+COLUMN_STATS_ACCURATE  
{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\",\"b\":\"true\",\"c\":\"true\"}}
diff --git 
a/iceberg/iceberg-handler/src/test/results/positive/llap/puffin_col_stats_with_time_travel.q.out
 
b/iceberg/iceberg-handler/src/test/results/positive/llap/puffin_col_stats_with_time_travel.q.out
index 8bdfc189462..651ee8c48c3 100644
--- 
a/iceberg/iceberg-handler/src/test/results/positive/llap/puffin_col_stats_with_time_travel.q.out
+++ 
b/iceberg/iceberg-handler/src/test/results/positive/llap/puffin_col_stats_with_time_travel.q.out
@@ -1,30 +1,42 @@
-PREHOOK: query: create external table default.tbl_ice_puffin_time_travel(a 
int, b string, c int) stored by iceberg
+PREHOOK: query: create external table tbl_ice_puffin_time_travel(
+    a int,
+    b string,
+    c int)
+stored by iceberg
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_puffin_time_travel
-POSTHOOK: query: create external table default.tbl_ice_puffin_time_travel(a 
int, b string, c int) stored by iceberg
+POSTHOOK: query: create external table tbl_ice_puffin_time_travel(
+    a int,
+    b string,
+    c int)
+stored by iceberg
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_puffin_time_travel
-PREHOOK: query: insert into default.tbl_ice_puffin_time_travel values (1, 
'one', 50), (2, 'two', 51)
+PREHOOK: query: insert into tbl_ice_puffin_time_travel values
+    (1, 'one', 50),
+    (2, 'two', 51)
 PREHOOK: type: QUERY
 PREHOOK: Input: _dummy_database@_dummy_table
 PREHOOK: Output: default@tbl_ice_puffin_time_travel
-POSTHOOK: query: insert into default.tbl_ice_puffin_time_travel values (1, 
'one', 50), (2, 'two', 51)
+POSTHOOK: query: insert into tbl_ice_puffin_time_travel values
+    (1, 'one', 50),
+    (2, 'two', 51)
 POSTHOOK: type: QUERY
 POSTHOOK: Input: _dummy_database@_dummy_table
 POSTHOOK: Output: default@tbl_ice_puffin_time_travel
-PREHOOK: query: alter table default.tbl_ice_puffin_time_travel create tag 
checkpoint
+PREHOOK: query: alter table tbl_ice_puffin_time_travel create tag checkpoint
 PREHOOK: type: ALTERTABLE_CREATETAG
 PREHOOK: Input: default@tbl_ice_puffin_time_travel
-POSTHOOK: query: alter table default.tbl_ice_puffin_time_travel create tag 
checkpoint
+POSTHOOK: query: alter table tbl_ice_puffin_time_travel create tag checkpoint
 POSTHOOK: type: ALTERTABLE_CREATETAG
 POSTHOOK: Input: default@tbl_ice_puffin_time_travel
-PREHOOK: query: explain select * from default.tbl_ice_puffin_time_travel
+PREHOOK: query: explain select * from tbl_ice_puffin_time_travel
 PREHOOK: type: QUERY
 PREHOOK: Input: default@tbl_ice_puffin_time_travel
 #### A masked pattern was here ####
-POSTHOOK: query: explain select * from default.tbl_ice_puffin_time_travel
+POSTHOOK: query: explain select * from tbl_ice_puffin_time_travel
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@tbl_ice_puffin_time_travel
 #### A masked pattern was here ####
@@ -106,42 +118,42 @@ STAGE PLANS:
         ListSink
 
 PREHOOK: query: insert into tbl_ice_puffin_time_travel values
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null)
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null)
 PREHOOK: type: QUERY
 PREHOOK: Input: _dummy_database@_dummy_table
 PREHOOK: Output: default@tbl_ice_puffin_time_travel
 POSTHOOK: query: insert into tbl_ice_puffin_time_travel values
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null),
-(null, null, null)
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null),
+    (null, null, null)
 POSTHOOK: type: QUERY
 POSTHOOK: Input: _dummy_database@_dummy_table
 POSTHOOK: Output: default@tbl_ice_puffin_time_travel
-PREHOOK: query: explain select * from default.tbl_ice_puffin_time_travel
+PREHOOK: query: explain select * from tbl_ice_puffin_time_travel
 PREHOOK: type: QUERY
 PREHOOK: Input: default@tbl_ice_puffin_time_travel
 #### A masked pattern was here ####
-POSTHOOK: query: explain select * from default.tbl_ice_puffin_time_travel
+POSTHOOK: query: explain select * from tbl_ice_puffin_time_travel
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@tbl_ice_puffin_time_travel
 #### A masked pattern was here ####
diff --git 
a/iceberg/iceberg-handler/src/test/results/positive/puffin_col_stats.q.out 
b/iceberg/iceberg-handler/src/test/results/positive/puffin_col_stats.q.out
index 6a133a0e4fa..47b4dd3dcd0 100644
--- a/iceberg/iceberg-handler/src/test/results/positive/puffin_col_stats.q.out
+++ b/iceberg/iceberg-handler/src/test/results/positive/puffin_col_stats.q.out
@@ -4,22 +4,69 @@ PREHOOK: Output: database:default
 POSTHOOK: query: drop table if exists tbl_ice_puffin
 POSTHOOK: type: DROPTABLE
 POSTHOOK: Output: database:default
-PREHOOK: query: create external table tbl_ice_puffin(a int, b string, c int) 
stored by iceberg tblproperties ('format-version'='2')
+PREHOOK: query: create external table tbl_ice_puffin(
+    a int,
+    b string,
+    c int)
+stored by iceberg
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_puffin
-POSTHOOK: query: create external table tbl_ice_puffin(a int, b string, c int) 
stored by iceberg tblproperties ('format-version'='2')
+POSTHOOK: query: create external table tbl_ice_puffin(
+    a int,
+    b string,
+    c int)
+stored by iceberg
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_puffin
-PREHOOK: query: insert into tbl_ice_puffin values (1, 'one', 50), (2, 'two', 
51),(2, 'two', 51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 
'five', 54), (111, 'one', 55), (333, 'two', 56)
+PREHOOK: query: insert into tbl_ice_puffin values
+    (1, 'one', 50),
+    (2, 'two', 51),
+    (2, 'two', 51),
+    (2, 'two', 51),
+    (3, 'three', 52),
+    (4, 'four', 53),
+    (5, 'five', 54),
+    (111, 'one', 55),
+    (333, 'two', 56)
 PREHOOK: type: QUERY
 PREHOOK: Input: _dummy_database@_dummy_table
 PREHOOK: Output: default@tbl_ice_puffin
-POSTHOOK: query: insert into tbl_ice_puffin values (1, 'one', 50), (2, 'two', 
51),(2, 'two', 51),(2, 'two', 51), (3, 'three', 52), (4, 'four', 53), (5, 
'five', 54), (111, 'one', 55), (333, 'two', 56)
+POSTHOOK: query: insert into tbl_ice_puffin values
+    (1, 'one', 50),
+    (2, 'two', 51),
+    (2, 'two', 51),
+    (2, 'two', 51),
+    (3, 'three', 52),
+    (4, 'four', 53),
+    (5, 'five', 54),
+    (111, 'one', 55),
+    (333, 'two', 56)
 POSTHOOK: type: QUERY
 POSTHOOK: Input: _dummy_database@_dummy_table
 POSTHOOK: Output: default@tbl_ice_puffin
+PREHOOK: query: explain select * from tbl_ice_puffin
+PREHOOK: type: QUERY
+PREHOOK: Input: default@tbl_ice_puffin
+PREHOOK: Output: hdfs://### HDFS PATH ###
+POSTHOOK: query: explain select * from tbl_ice_puffin
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@tbl_ice_puffin
+POSTHOOK: Output: hdfs://### HDFS PATH ###
+Plan optimized by CBO.
+
+Stage-0
+  Fetch Operator
+    limit:-1
+    Stage-1
+      Map 1 vectorized
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=9 width=95)
+          Output:["_col0","_col1","_col2"]
+          TableScan [TS_0] (rows=9 width=95)
+            
default@tbl_ice_puffin,tbl_ice_puffin,Tbl:COMPLETE,Col:COMPLETE,Output:["a","b","c"]
+
 PREHOOK: query: desc formatted tbl_ice_puffin a
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@tbl_ice_puffin
@@ -39,6 +86,25 @@ num_falses
 bit_vector             HL                  
 comment                                    
 COLUMN_STATS_ACCURATE  
{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\",\"b\":\"true\",\"c\":\"true\"}}
+PREHOOK: query: desc formatted tbl_ice_puffin b
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@tbl_ice_puffin
+POSTHOOK: query: desc formatted tbl_ice_puffin b
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@tbl_ice_puffin
+col_name               b                   
+data_type              string              
+min                                        
+max                                        
+num_nulls              0                   
+distinct_count         5                   
+avg_col_len            3.4444444444444446  
+max_col_len            5                   
+num_trues                                  
+num_falses                                 
+bit_vector             HL                  
+comment                                    
+COLUMN_STATS_ACCURATE  
{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\",\"b\":\"true\",\"c\":\"true\"}}
 PREHOOK: query: desc formatted tbl_ice_puffin c
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@tbl_ice_puffin
@@ -58,42 +124,35 @@ num_falses
 bit_vector             HL                  
 comment                                    
 COLUMN_STATS_ACCURATE  
{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\",\"b\":\"true\",\"c\":\"true\"}}
-PREHOOK: query: explain select * from tbl_ice_puffin order by a, b, c
+PREHOOK: query: insert into tbl_ice_puffin values (1000, 'six', 1000), (5000, 
'two', 5000)
+PREHOOK: type: QUERY
+PREHOOK: Input: _dummy_database@_dummy_table
+PREHOOK: Output: default@tbl_ice_puffin
+POSTHOOK: query: insert into tbl_ice_puffin values (1000, 'six', 1000), (5000, 
'two', 5000)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: _dummy_database@_dummy_table
+POSTHOOK: Output: default@tbl_ice_puffin
+PREHOOK: query: explain select * from tbl_ice_puffin
 PREHOOK: type: QUERY
 PREHOOK: Input: default@tbl_ice_puffin
 PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: explain select * from tbl_ice_puffin order by a, b, c
+POSTHOOK: query: explain select * from tbl_ice_puffin
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@tbl_ice_puffin
 POSTHOOK: Output: hdfs://### HDFS PATH ###
 Plan optimized by CBO.
 
-Vertex dependency in root stage
-Reducer 2 <- Map 1 (SIMPLE_EDGE)
-
 Stage-0
   Fetch Operator
     limit:-1
     Stage-1
-      Reducer 2 vectorized
-      File Output Operator [FS_8]
-        Select Operator [SEL_7] (rows=9 width=95)
+      Map 1 vectorized
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=11 width=95)
           Output:["_col0","_col1","_col2"]
-        <-Map 1 [SIMPLE_EDGE] vectorized
-          SHUFFLE [RS_6]
-            Select Operator [SEL_5] (rows=9 width=95)
-              Output:["_col0","_col1","_col2"]
-              TableScan [TS_0] (rows=9 width=95)
-                
default@tbl_ice_puffin,tbl_ice_puffin,Tbl:COMPLETE,Col:COMPLETE,Output:["a","b","c"]
+          TableScan [TS_0] (rows=11 width=95)
+            
default@tbl_ice_puffin,tbl_ice_puffin,Tbl:COMPLETE,Col:COMPLETE,Output:["a","b","c"]
 
-PREHOOK: query: insert into tbl_ice_puffin values (1000, 'one', 1000), (5000, 
'two', 5000)
-PREHOOK: type: QUERY
-PREHOOK: Input: _dummy_database@_dummy_table
-PREHOOK: Output: default@tbl_ice_puffin
-POSTHOOK: query: insert into tbl_ice_puffin values (1000, 'one', 1000), (5000, 
'two', 5000)
-POSTHOOK: type: QUERY
-POSTHOOK: Input: _dummy_database@_dummy_table
-POSTHOOK: Output: default@tbl_ice_puffin
 PREHOOK: query: desc formatted tbl_ice_puffin a
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@tbl_ice_puffin
@@ -113,6 +172,25 @@ num_falses
 bit_vector                                 
 comment                                    
 COLUMN_STATS_ACCURATE  
{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\",\"b\":\"true\",\"c\":\"true\"}}
+PREHOOK: query: desc formatted tbl_ice_puffin b
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@tbl_ice_puffin
+POSTHOOK: query: desc formatted tbl_ice_puffin b
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@tbl_ice_puffin
+col_name               b                   
+data_type              string              
+min                                        
+max                                        
+num_nulls              0                   
+distinct_count         6                   
+avg_col_len            3.4444444444444446  
+max_col_len            5                   
+num_trues                                  
+num_falses                                 
+bit_vector                                 
+comment                                    
+COLUMN_STATS_ACCURATE  
{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\",\"b\":\"true\",\"c\":\"true\"}}
 PREHOOK: query: desc formatted tbl_ice_puffin c
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@tbl_ice_puffin
@@ -132,69 +210,34 @@ num_falses
 bit_vector                                 
 comment                                    
 COLUMN_STATS_ACCURATE  
{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\",\"b\":\"true\",\"c\":\"true\"}}
-PREHOOK: query: explain select * from tbl_ice_puffin order by a, b, c
-PREHOOK: type: QUERY
-PREHOOK: Input: default@tbl_ice_puffin
-PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: explain select * from tbl_ice_puffin order by a, b, c
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@tbl_ice_puffin
-POSTHOOK: Output: hdfs://### HDFS PATH ###
-Plan optimized by CBO.
-
-Vertex dependency in root stage
-Reducer 2 <- Map 1 (SIMPLE_EDGE)
-
-Stage-0
-  Fetch Operator
-    limit:-1
-    Stage-1
-      Reducer 2 vectorized
-      File Output Operator [FS_8]
-        Select Operator [SEL_7] (rows=11 width=95)
-          Output:["_col0","_col1","_col2"]
-        <-Map 1 [SIMPLE_EDGE] vectorized
-          SHUFFLE [RS_6]
-            Select Operator [SEL_5] (rows=11 width=95)
-              Output:["_col0","_col1","_col2"]
-              TableScan [TS_0] (rows=11 width=95)
-                
default@tbl_ice_puffin,tbl_ice_puffin,Tbl:COMPLETE,Col:COMPLETE,Output:["a","b","c"]
-
-PREHOOK: query: insert into tbl_ice_puffin values (10, 'one', 100000), (5000, 
'two', 510000)
+PREHOOK: query: insert into tbl_ice_puffin values (10, 'six', 100000), (5000, 
'two', 510000)
 PREHOOK: type: QUERY
 PREHOOK: Input: _dummy_database@_dummy_table
 PREHOOK: Output: default@tbl_ice_puffin
-POSTHOOK: query: insert into tbl_ice_puffin values (10, 'one', 100000), (5000, 
'two', 510000)
+POSTHOOK: query: insert into tbl_ice_puffin values (10, 'six', 100000), (5000, 
'two', 510000)
 POSTHOOK: type: QUERY
 POSTHOOK: Input: _dummy_database@_dummy_table
 POSTHOOK: Output: default@tbl_ice_puffin
-PREHOOK: query: explain select * from tbl_ice_puffin order by a, b, c
+PREHOOK: query: explain select * from tbl_ice_puffin
 PREHOOK: type: QUERY
 PREHOOK: Input: default@tbl_ice_puffin
 PREHOOK: Output: hdfs://### HDFS PATH ###
-POSTHOOK: query: explain select * from tbl_ice_puffin order by a, b, c
+POSTHOOK: query: explain select * from tbl_ice_puffin
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@tbl_ice_puffin
 POSTHOOK: Output: hdfs://### HDFS PATH ###
 Plan optimized by CBO.
 
-Vertex dependency in root stage
-Reducer 2 <- Map 1 (SIMPLE_EDGE)
-
 Stage-0
   Fetch Operator
     limit:-1
     Stage-1
-      Reducer 2 vectorized
-      File Output Operator [FS_8]
-        Select Operator [SEL_7] (rows=13 width=95)
+      Map 1 vectorized
+      File Output Operator [FS_4]
+        Select Operator [SEL_3] (rows=13 width=95)
           Output:["_col0","_col1","_col2"]
-        <-Map 1 [SIMPLE_EDGE] vectorized
-          SHUFFLE [RS_6]
-            Select Operator [SEL_5] (rows=13 width=95)
-              Output:["_col0","_col1","_col2"]
-              TableScan [TS_0] (rows=13 width=95)
-                
default@tbl_ice_puffin,tbl_ice_puffin,Tbl:COMPLETE,Col:COMPLETE,Output:["a","b","c"]
+          TableScan [TS_0] (rows=13 width=95)
+            
default@tbl_ice_puffin,tbl_ice_puffin,Tbl:COMPLETE,Col:COMPLETE,Output:["a","b","c"]
 
 PREHOOK: query: desc formatted tbl_ice_puffin a
 PREHOOK: type: DESCTABLE
@@ -215,6 +258,25 @@ num_falses
 bit_vector                                 
 comment                                    
 COLUMN_STATS_ACCURATE  
{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\",\"b\":\"true\",\"c\":\"true\"}}
+PREHOOK: query: desc formatted tbl_ice_puffin b
+PREHOOK: type: DESCTABLE
+PREHOOK: Input: default@tbl_ice_puffin
+POSTHOOK: query: desc formatted tbl_ice_puffin b
+POSTHOOK: type: DESCTABLE
+POSTHOOK: Input: default@tbl_ice_puffin
+col_name               b                   
+data_type              string              
+min                                        
+max                                        
+num_nulls              0                   
+distinct_count         6                   
+avg_col_len            3.4444444444444446  
+max_col_len            5                   
+num_trues                                  
+num_falses                                 
+bit_vector                                 
+comment                                    
+COLUMN_STATS_ACCURATE  
{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"a\":\"true\",\"b\":\"true\",\"c\":\"true\"}}
 PREHOOK: query: desc formatted tbl_ice_puffin c
 PREHOOK: type: DESCTABLE
 PREHOOK: Input: default@tbl_ice_puffin
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/BasicStatsTask.java 
b/ql/src/java/org/apache/hadoop/hive/ql/stats/BasicStatsTask.java
index d5f44cbea2e..722b2f70119 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/stats/BasicStatsTask.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/BasicStatsTask.java
@@ -402,7 +402,7 @@ public Void call() throws Exception {
           }
         }
 
-        if (!updates.isEmpty()) {
+        if (!updates.isEmpty() && !table.hasNonNativePartitionSupport()) {
           db.alterPartitions(tableFullName, updates, environmentContext, true);
         }
 

Reply via email to