This is an automated email from the ASF dual-hosted git repository.

deniskuzZ 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 8b82eae6937 HIVE-30049: Iceberg: decimal64 vectorization is gated by a 
property nothing sets (#6833)
8b82eae6937 is described below

commit 8b82eae69375c0f9ee1d93264e5e416b70c77fa4
Author: Denys Kuzmenko <[email protected]>
AuthorDate: Tue Oct 6 16:41:18 2026 +0200

    HIVE-30049: Iceberg: decimal64 vectorization is gated by a property nothing 
sets (#6833)
---
 .../iceberg/mr/hive/HiveIcebergInputFormat.java    | 26 ----------------------
 .../iceberg/mr/hive/HiveIcebergMetaHook.java       |  1 -
 .../mr/hive/vector/HiveVectorizedReader.java       |  7 ------
 .../positive/vectorized_iceberg_read_mixed.q       |  6 ++---
 .../positive/vectorized_iceberg_read_multitable.q  |  6 ++---
 .../queries/positive/vectorized_iceberg_read_orc.q |  8 +++----
 .../positive/vectorized_iceberg_read_parquet.q     |  8 +++----
 .../results/positive/iceberg_merge_schema.q.out    |  8 +++----
 .../llap/vectorized_iceberg_read_mixed.q.out       | 12 +++++-----
 .../llap/vectorized_iceberg_read_multitable.q.out  |  4 ----
 .../llap/vectorized_iceberg_read_orc.q.out         | 16 ++++++-------
 .../llap/vectorized_iceberg_read_parquet.q.out     | 16 ++++++-------
 .../positive/vectorized_iceberg_merge_mixed.q.out  | 24 ++++++++++----------
 .../positive/vectorized_iceberg_read_mixed.q.out   | 12 +++++-----
 .../vectorized_iceberg_read_multitable.q.out       |  4 ----
 .../positive/vectorized_iceberg_read_orc.q.out     | 16 ++++++-------
 .../positive/vectorized_iceberg_read_parquet.q.out | 16 ++++++-------
 .../vector/VectorizedDummyColumnReader.java        |  4 ++--
 18 files changed, 75 insertions(+), 119 deletions(-)

diff --git 
a/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/HiveIcebergInputFormat.java
 
b/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/HiveIcebergInputFormat.java
index dbf693304d7..c7c0557dc6f 100644
--- 
a/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/HiveIcebergInputFormat.java
+++ 
b/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/HiveIcebergInputFormat.java
@@ -24,7 +24,6 @@
 import java.util.Properties;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.common.TableName;
 import org.apache.hadoop.hive.common.io.DataCache;
 import org.apache.hadoop.hive.common.io.FileMetadataCache;
 import org.apache.hadoop.hive.conf.HiveConf;
@@ -37,7 +36,6 @@
 import org.apache.hadoop.hive.ql.io.sarg.ConvertAstToSearchArg;
 import org.apache.hadoop.hive.ql.io.sarg.SearchArgument;
 import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
-import org.apache.hadoop.hive.ql.plan.TableDesc;
 import org.apache.hadoop.hive.ql.plan.TableScanDesc;
 import org.apache.hadoop.hive.serde2.ColumnProjectionUtils;
 import org.apache.hadoop.mapred.FileSplit;
@@ -68,7 +66,6 @@ public class HiveIcebergInputFormat extends 
MapredIcebergInputFormat<Record>
     LlapCacheOnlyInputFormatInterface.VectorizedOnly {
 
   private static final Logger LOG = 
LoggerFactory.getLogger(HiveIcebergInputFormat.class);
-  public static final String ICEBERG_DISABLE_DECIMAL64_PREFIX = 
"iceberg.disable.decimal64.";
 
   /**
    * Encapsulates planning-time and reader-time Iceberg filter expressions 
derived from Hive predicates.
@@ -243,24 +240,6 @@ public boolean shouldSkipCombine(Path path, Configuration 
conf) {
 
   @Override
   public VectorizedSupport.Support[] getSupportedFeatures() {
-    throw new UnsupportedOperationException("This overload of 
getSupportedFeatures should never be called");
-  }
-
-  @Override
-  public VectorizedSupport.Support[] getSupportedFeatures(HiveConf hiveConf, 
TableDesc tableDesc) {
-    // Both vectorizable file formats (ORC and Parquet) now support DECIMAL_64 
reads, so advertise it
-    // whenever decimal64 vectorization is enabled for the table, regardless 
of file format.
-    boolean decimal64Enabled =
-        
Boolean.parseBoolean(tableDesc.getProperty(HiveIcebergMetaHook.DECIMAL64_VECTORIZATION));
-    if (!decimal64Enabled) {
-      // Keep the LLAP ORC reader from emitting decimal64 so it stays 
consistent with the full-decimal
-      // operator pipeline; consumed in HiveVectorizedReader#orcRecordReader.
-      final String decimal64DisableConfName = 
getDecimal64DisableConfName(tableDesc.getTableName());
-      LOG.debug("Setting {} for table: {} to true", decimal64DisableConfName, 
tableDesc.getTableName());
-      hiveConf.set(decimal64DisableConfName, "true");
-
-      return new VectorizedSupport.Support[] {};
-    }
     return new VectorizedSupport.Support[] { 
VectorizedSupport.Support.DECIMAL_64 };
   }
 
@@ -269,11 +248,6 @@ public void injectCaches(FileMetadataCache metadataCache, 
DataCache dataCache, C
     // no-op for Iceberg
   }
 
-  public static String getDecimal64DisableConfName(String tableName) {
-    String dbAndTableName = TableName.fromString(tableName, null, 
null).getNotEmptyDbTable();
-    return ICEBERG_DISABLE_DECIMAL64_PREFIX + dbAndTableName;
-  }
-
   @Override
   public FileSplit 
createMergeSplit(CombineHiveInputFormat.CombineHiveInputSplit split,
         Integer partition, Properties properties) throws IOException {
diff --git 
a/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/HiveIcebergMetaHook.java
 
b/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/HiveIcebergMetaHook.java
index 92070d64528..1c522cfd026 100644
--- 
a/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/HiveIcebergMetaHook.java
+++ 
b/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/HiveIcebergMetaHook.java
@@ -159,7 +159,6 @@ public class HiveIcebergMetaHook extends 
BaseHiveIcebergMetaHook {
   private static final List<org.apache.commons.lang3.tuple.Pair<Integer, 
byte[]>> EMPTY_FILTER =
       Lists.newArrayList(org.apache.commons.lang3.tuple.Pair.of(1, new 
byte[0]));
   static final String MIGRATED_TO_ICEBERG = "MIGRATED_TO_ICEBERG";
-  static final String DECIMAL64_VECTORIZATION = 
"iceberg.decimal64.vectorization";
   static final String MANUAL_ICEBERG_METADATA_LOCATION_CHANGE = 
"MANUAL_ICEBERG_METADATA_LOCATION_CHANGE";
 
   private boolean deleteIcebergTable;
diff --git 
a/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/vector/HiveVectorizedReader.java
 
b/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/vector/HiveVectorizedReader.java
index 0bbc5aa8f08..8fea9b263ad 100644
--- 
a/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/vector/HiveVectorizedReader.java
+++ 
b/iceberg/iceberg-handler/src/main/java/org/apache/iceberg/mr/hive/vector/HiveVectorizedReader.java
@@ -231,13 +231,6 @@ private static RecordReader<NullWritable, 
VectorizedRowBatch> orcRecordReader(Jo
     // TODO: add support for reading files with positional deletes with LLAP 
(LLAP would need to provide file row num)
     if (HiveConf.getBoolVar(job, HiveConf.ConfVars.LLAP_IO_ENABLED, 
LlapProxy.isDaemon()) &&
         LlapProxy.getIo() != null && task.deletes().isEmpty() && 
!InputFormatConfig.fetchVirtualColumns(job)) {
-      boolean isDecimal64Disabled =
-          
job.getBoolean(HiveIcebergInputFormat.getDecimal64DisableConfName(tableName), 
false);
-      if (isDecimal64Disabled) {
-        // The LLAP ORC reader derives decimal64 support from this job var, 
not the plan; clear it so
-        // it emits full decimal instead.
-        HiveConf.setVar(job, 
HiveConf.ConfVars.HIVE_VECTORIZED_INPUT_FORMAT_SUPPORTS_ENABLED, "");
-      }
       recordReader = LlapProxy.getIo().llapVectorizedOrcReaderForPath(fileId, 
path, null, readColumnIds,
           job, start, length, reporter);
     }
diff --git 
a/iceberg/iceberg-handler/src/test/queries/positive/vectorized_iceberg_read_mixed.q
 
b/iceberg/iceberg-handler/src/test/queries/positive/vectorized_iceberg_read_mixed.q
index fd96b116115..4f688162109 100644
--- 
a/iceberg/iceberg-handler/src/test/queries/positive/vectorized_iceberg_read_mixed.q
+++ 
b/iceberg/iceberg-handler/src/test/queries/positive/vectorized_iceberg_read_mixed.q
@@ -2,7 +2,7 @@ set hive.vectorized.execution.enabled=true;
 
 drop table if exists tbl_ice_mixed;
 create external table tbl_ice_mixed(a int, b string) stored by iceberg stored 
as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true',"format-version"='1');
+TBLPROPERTIES ("format-version"='1');
 insert into table tbl_ice_mixed values (1, 'one'), (2, 'two'), (3, 'three'), 
(4, 'four'), (5, 'five'), (111, 'one'), (22, 'two'), (11, 'one'), (44444, 
'four'), (44, 'four');
 
 explain vectorization only detail  select b, max(a) from tbl_ice_mixed group 
by b;
@@ -29,7 +29,7 @@ create external table tbl_ice_mixed_all_types (
     t_date DATE,
     t_decimal DECIMAL(4,2)
     ) stored by iceberg stored as orc
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1');
+    TBLPROPERTIES ("format-version"='1');
 
 insert into tbl_ice_mixed_all_types values (1.1, 1.2, false, 4, 
567890123456789, '6', "col7", cast('2012-10-03 19:58:08' as timestamp), 
date('1234-09-09'), cast('10.01' as decimal(4,2)));
 explain vectorization only detail select max(t_float), t_double, t_boolean, 
t_int, t_bigint, t_binary, t_string,
@@ -59,7 +59,7 @@ create external table tbl_ice_mixed_parted (
     b string
     ) partitioned by (p1 string, p2 string)
     stored by iceberg stored as orc location 'file:/tmp/tbl_ice_mixed_parted'
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1');
+    TBLPROPERTIES ("format-version"='1');
 
 insert into tbl_ice_mixed_parted values
                                       (1, 'aa', 'Europe', 'Hungary'),
diff --git 
a/iceberg/iceberg-handler/src/test/queries/positive/vectorized_iceberg_read_multitable.q
 
b/iceberg/iceberg-handler/src/test/queries/positive/vectorized_iceberg_read_multitable.q
index 73c6c05fe8f..97164e56f69 100644
--- 
a/iceberg/iceberg-handler/src/test/queries/positive/vectorized_iceberg_read_multitable.q
+++ 
b/iceberg/iceberg-handler/src/test/queries/positive/vectorized_iceberg_read_multitable.q
@@ -4,8 +4,7 @@ set hive.query.results.cache.enabled=false;
 create external table lineitem(l_discount decimal(15,2), l_orderkey int) 
stored as orc;
 insert into lineitem values (100.2, 10);
 
-create external table customer_ice(c_custkey int) STORED BY ICEBERG stored as 
orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true');
+create external table customer_ice(c_custkey int) STORED BY ICEBERG stored as 
orc;
 insert into customer_ice values (10);
 
 create external table orders(o_orderkey int, o_custkey int) stored as orc;
@@ -15,8 +14,7 @@ select sum(1 - l_discount) as revenue
 FROM customer_ice, orders, lineitem
 WHERE c_custkey = o_custkey and l_orderkey = o_orderkey limit 20;
 
-create external table lineitem_ice(l_discount decimal(15,2), l_orderkey int) 
STORED BY ICEBERG stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true');
+create external table lineitem_ice(l_discount decimal(15,2), l_orderkey int) 
STORED BY ICEBERG stored as orc;
 insert into lineitem_ice values (100.2, 10);
 
 select sum(1 - l_discount) as revenue
diff --git 
a/iceberg/iceberg-handler/src/test/queries/positive/vectorized_iceberg_read_orc.q
 
b/iceberg/iceberg-handler/src/test/queries/positive/vectorized_iceberg_read_orc.q
index e8baec320e9..afefa7918e7 100644
--- 
a/iceberg/iceberg-handler/src/test/queries/positive/vectorized_iceberg_read_orc.q
+++ 
b/iceberg/iceberg-handler/src/test/queries/positive/vectorized_iceberg_read_orc.q
@@ -2,7 +2,7 @@ set hive.vectorized.execution.enabled=true;
 
 drop table if exists tbl_ice_orc;
 create external table tbl_ice_orc(a int, b string) stored by iceberg stored as 
orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true',"format-version"='1');
+TBLPROPERTIES ("format-version"='1');
 insert into table tbl_ice_orc values (1, 'one'), (2, 'two'), (3, 'three'), (4, 
'four'), (5, 'five'), (111, 'one'), (22, 'two'), (11, 'one'), (44444, 'four'), 
(44, 'four');
 analyze table tbl_ice_orc compute statistics for columns;
 
@@ -23,7 +23,7 @@ create external table tbl_ice_orc_all_types (
     t_date DATE,
     t_decimal DECIMAL(4,2)
     ) stored by iceberg stored as orc
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1');
+    TBLPROPERTIES ("format-version"='1');
 insert into tbl_ice_orc_all_types values (1.1, 1.2, false, 4, 567890123456789, 
'6', "col7", cast('2012-10-03 19:58:08' as timestamp), date('1234-09-09'), 
cast('10.01' as decimal(4,2)));
 
 explain select max(t_float), t_double, t_boolean, t_int, t_bigint, t_binary, 
t_string, t_timestamp, t_date, t_decimal from tbl_ice_orc_all_types
@@ -39,7 +39,7 @@ create external table tbl_ice_orc_parted (
     b string
     ) partitioned by (p1 string, p2 string)
     stored by iceberg stored as orc location 'file:/tmp/tbl_ice_orc_parted'
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1');
+    TBLPROPERTIES ("format-version"='1');
 
 insert into tbl_ice_orc_parted values
                                       (1, 'aa', 'Europe', 'Hungary'),
@@ -89,7 +89,7 @@ create external table tbl_ice_orc_complex (
     structofarrays struct<names:array<string>, birthdays:array<string>>,
     structofmaps struct<map1:map<string, string>, map2:map<string, string>>
     ) stored by iceberg stored as orc
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1');
+    TBLPROPERTIES ("format-version"='1');
 
 -- insert some test data
 insert into tbl_ice_orc_complex values (
diff --git 
a/iceberg/iceberg-handler/src/test/queries/positive/vectorized_iceberg_read_parquet.q
 
b/iceberg/iceberg-handler/src/test/queries/positive/vectorized_iceberg_read_parquet.q
index da2a69e0541..38ef8305a80 100644
--- 
a/iceberg/iceberg-handler/src/test/queries/positive/vectorized_iceberg_read_parquet.q
+++ 
b/iceberg/iceberg-handler/src/test/queries/positive/vectorized_iceberg_read_parquet.q
@@ -2,7 +2,7 @@ set hive.vectorized.execution.enabled=true;
 
 drop table if exists tbl_ice_parquet;
 create external table tbl_ice_parquet(a int, b string) stored by iceberg 
stored as parquet
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true',"format-version"='1');
+TBLPROPERTIES ("format-version"='1');
 insert into table tbl_ice_parquet values (1, 'one'), (2, 'two'), (3, 'three'), 
(4, 'four'), (5, 'five'), (111, 'one'), (22, 'two'), (11, 'one'), (44444, 
'four'), (44, 'four');
 analyze table tbl_ice_parquet compute statistics for columns;
 
@@ -22,7 +22,7 @@ create external table tbl_ice_parquet_all_types (
     t_date DATE,
     t_decimal DECIMAL(4,2)
     ) stored by iceberg stored as parquet
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1');
+    TBLPROPERTIES ("format-version"='1');
 
 insert into tbl_ice_parquet_all_types values (1.1, 1.2, false, 4, 
567890123456789, '6', "col7", cast('2012-10-03 19:58:08' as timestamp), 
date('1234-09-09'), cast('10.01' as decimal(4,2)));
 
@@ -39,7 +39,7 @@ create external table tbl_ice_parquet_parted (
     b string
     ) partitioned by (p1 string, p2 string)
     stored by iceberg stored as parquet location 
'file:/tmp/tbl_ice_parquet_parted'
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1');
+    TBLPROPERTIES ("format-version"='1');
 
 insert into tbl_ice_parquet_parted values
                                       (1, 'aa', 'Europe', 'Hungary'),
@@ -85,7 +85,7 @@ create external table tbl_ice_parquet_complex (
     structofarrays struct<names:array<string>, birthdays:array<string>>,
     structofmaps struct<map1:map<string, string>, map2:map<string, string>>
     ) stored by iceberg stored as parquet
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1');
+    TBLPROPERTIES ("format-version"='1');
 
 -- insert some test data
 insert into tbl_ice_parquet_complex values (
diff --git 
a/iceberg/iceberg-handler/src/test/results/positive/iceberg_merge_schema.q.out 
b/iceberg/iceberg-handler/src/test/results/positive/iceberg_merge_schema.q.out
index 4eac820ba40..84ed846cb51 100644
--- 
a/iceberg/iceberg-handler/src/test/results/positive/iceberg_merge_schema.q.out
+++ 
b/iceberg/iceberg-handler/src/test/results/positive/iceberg_merge_schema.q.out
@@ -186,8 +186,8 @@ STAGE PLANS:
             Map Vectorization:
                 enabled: true
                 enabledConditionsMet: 
hive.vectorized.use.vectorized.input.format IS true
-                inputFormatFeatureSupport: []
-                featureSupportInUse: []
+                inputFormatFeatureSupport: [DECIMAL_64]
+                featureSupportInUse: [DECIMAL_64]
                 inputFileFormats: 
org.apache.iceberg.mr.hive.HiveIcebergInputFormat
                 allNative: true
                 usesVectorUDFAdaptor: false
@@ -235,8 +235,8 @@ STAGE PLANS:
             Map Vectorization:
                 enabled: true
                 enabledConditionsMet: 
hive.vectorized.use.vectorized.input.format IS true
-                inputFormatFeatureSupport: []
-                featureSupportInUse: []
+                inputFormatFeatureSupport: [DECIMAL_64]
+                featureSupportInUse: [DECIMAL_64]
                 inputFileFormats: 
org.apache.iceberg.mr.hive.HiveIcebergInputFormat
                 allNative: true
                 usesVectorUDFAdaptor: false
diff --git 
a/iceberg/iceberg-handler/src/test/results/positive/llap/vectorized_iceberg_read_mixed.q.out
 
b/iceberg/iceberg-handler/src/test/results/positive/llap/vectorized_iceberg_read_mixed.q.out
index 51f0da923f1..cc8b87f769e 100644
--- 
a/iceberg/iceberg-handler/src/test/results/positive/llap/vectorized_iceberg_read_mixed.q.out
+++ 
b/iceberg/iceberg-handler/src/test/results/positive/llap/vectorized_iceberg_read_mixed.q.out
@@ -5,12 +5,12 @@ POSTHOOK: query: drop table if exists tbl_ice_mixed
 POSTHOOK: type: DROPTABLE
 POSTHOOK: Output: database:default
 PREHOOK: query: create external table tbl_ice_mixed(a int, b string) stored by 
iceberg stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true',"format-version"='1')
+TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_mixed
 POSTHOOK: query: create external table tbl_ice_mixed(a int, b string) stored 
by iceberg stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true',"format-version"='1')
+TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_mixed
@@ -332,7 +332,7 @@ PREHOOK: query: create external table 
tbl_ice_mixed_all_types (
     t_date DATE,
     t_decimal DECIMAL(4,2)
     ) stored by iceberg stored as orc
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_mixed_all_types
@@ -348,7 +348,7 @@ POSTHOOK: query: create external table 
tbl_ice_mixed_all_types (
     t_date DATE,
     t_decimal DECIMAL(4,2)
     ) stored by iceberg stored as orc
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_mixed_all_types
@@ -775,7 +775,7 @@ PREHOOK: query: create external table tbl_ice_mixed_parted (
     b string
     ) partitioned by (p1 string, p2 string)
 #### A masked pattern was here ####
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 #### A masked pattern was here ####
 PREHOOK: Output: database:default
@@ -785,7 +785,7 @@ POSTHOOK: query: create external table tbl_ice_mixed_parted 
(
     b string
     ) partitioned by (p1 string, p2 string)
 #### A masked pattern was here ####
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 #### A masked pattern was here ####
 POSTHOOK: Output: database:default
diff --git 
a/iceberg/iceberg-handler/src/test/results/positive/llap/vectorized_iceberg_read_multitable.q.out
 
b/iceberg/iceberg-handler/src/test/results/positive/llap/vectorized_iceberg_read_multitable.q.out
index 7728fb532cc..0e719acd405 100644
--- 
a/iceberg/iceberg-handler/src/test/results/positive/llap/vectorized_iceberg_read_multitable.q.out
+++ 
b/iceberg/iceberg-handler/src/test/results/positive/llap/vectorized_iceberg_read_multitable.q.out
@@ -17,12 +17,10 @@ POSTHOOK: Output: default@lineitem
 POSTHOOK: Lineage: lineitem.l_discount SCRIPT []
 POSTHOOK: Lineage: lineitem.l_orderkey SCRIPT []
 PREHOOK: query: create external table customer_ice(c_custkey int) STORED BY 
ICEBERG stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@customer_ice
 POSTHOOK: query: create external table customer_ice(c_custkey int) STORED BY 
ICEBERG stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@customer_ice
@@ -70,12 +68,10 @@ POSTHOOK: Input: default@orders
 #### A masked pattern was here ####
 -99.20
 PREHOOK: query: create external table lineitem_ice(l_discount decimal(15,2), 
l_orderkey int) STORED BY ICEBERG stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@lineitem_ice
 POSTHOOK: query: create external table lineitem_ice(l_discount decimal(15,2), 
l_orderkey int) STORED BY ICEBERG stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@lineitem_ice
diff --git 
a/iceberg/iceberg-handler/src/test/results/positive/llap/vectorized_iceberg_read_orc.q.out
 
b/iceberg/iceberg-handler/src/test/results/positive/llap/vectorized_iceberg_read_orc.q.out
index e2669a45789..ef0581f005e 100644
--- 
a/iceberg/iceberg-handler/src/test/results/positive/llap/vectorized_iceberg_read_orc.q.out
+++ 
b/iceberg/iceberg-handler/src/test/results/positive/llap/vectorized_iceberg_read_orc.q.out
@@ -5,12 +5,12 @@ POSTHOOK: query: drop table if exists tbl_ice_orc
 POSTHOOK: type: DROPTABLE
 POSTHOOK: Output: database:default
 PREHOOK: query: create external table tbl_ice_orc(a int, b string) stored by 
iceberg stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true',"format-version"='1')
+TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_orc
 POSTHOOK: query: create external table tbl_ice_orc(a int, b string) stored by 
iceberg stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true',"format-version"='1')
+TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_orc
@@ -218,7 +218,7 @@ PREHOOK: query: create external table tbl_ice_orc_all_types 
(
     t_date DATE,
     t_decimal DECIMAL(4,2)
     ) stored by iceberg stored as orc
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_orc_all_types
@@ -234,7 +234,7 @@ POSTHOOK: query: create external table 
tbl_ice_orc_all_types (
     t_date DATE,
     t_decimal DECIMAL(4,2)
     ) stored by iceberg stored as orc
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_orc_all_types
@@ -435,7 +435,7 @@ PREHOOK: query: create external table tbl_ice_orc_parted (
     b string
     ) partitioned by (p1 string, p2 string)
 #### A masked pattern was here ####
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 #### A masked pattern was here ####
 PREHOOK: Output: database:default
@@ -445,7 +445,7 @@ POSTHOOK: query: create external table tbl_ice_orc_parted (
     b string
     ) partitioned by (p1 string, p2 string)
 #### A masked pattern was here ####
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 #### A masked pattern was here ####
 POSTHOOK: Output: database:default
@@ -853,7 +853,7 @@ PREHOOK: query: create external table tbl_ice_orc_complex (
     structofarrays struct<names:array<string>, birthdays:array<string>>,
     structofmaps struct<map1:map<string, string>, map2:map<string, string>>
     ) stored by iceberg stored as orc
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_orc_complex
@@ -871,7 +871,7 @@ POSTHOOK: query: create external table tbl_ice_orc_complex (
     structofarrays struct<names:array<string>, birthdays:array<string>>,
     structofmaps struct<map1:map<string, string>, map2:map<string, string>>
     ) stored by iceberg stored as orc
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_orc_complex
diff --git 
a/iceberg/iceberg-handler/src/test/results/positive/llap/vectorized_iceberg_read_parquet.q.out
 
b/iceberg/iceberg-handler/src/test/results/positive/llap/vectorized_iceberg_read_parquet.q.out
index 0b66a1287bc..7e9983b34fc 100644
--- 
a/iceberg/iceberg-handler/src/test/results/positive/llap/vectorized_iceberg_read_parquet.q.out
+++ 
b/iceberg/iceberg-handler/src/test/results/positive/llap/vectorized_iceberg_read_parquet.q.out
@@ -5,12 +5,12 @@ POSTHOOK: query: drop table if exists tbl_ice_parquet
 POSTHOOK: type: DROPTABLE
 POSTHOOK: Output: database:default
 PREHOOK: query: create external table tbl_ice_parquet(a int, b string) stored 
by iceberg stored as parquet
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true',"format-version"='1')
+TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_parquet
 POSTHOOK: query: create external table tbl_ice_parquet(a int, b string) stored 
by iceberg stored as parquet
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true',"format-version"='1')
+TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_parquet
@@ -218,7 +218,7 @@ PREHOOK: query: create external table 
tbl_ice_parquet_all_types (
     t_date DATE,
     t_decimal DECIMAL(4,2)
     ) stored by iceberg stored as parquet
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_parquet_all_types
@@ -234,7 +234,7 @@ POSTHOOK: query: create external table 
tbl_ice_parquet_all_types (
     t_date DATE,
     t_decimal DECIMAL(4,2)
     ) stored by iceberg stored as parquet
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_parquet_all_types
@@ -435,7 +435,7 @@ PREHOOK: query: create external table 
tbl_ice_parquet_parted (
     b string
     ) partitioned by (p1 string, p2 string)
 #### A masked pattern was here ####
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 #### A masked pattern was here ####
 PREHOOK: Output: database:default
@@ -445,7 +445,7 @@ POSTHOOK: query: create external table 
tbl_ice_parquet_parted (
     b string
     ) partitioned by (p1 string, p2 string)
 #### A masked pattern was here ####
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 #### A masked pattern was here ####
 POSTHOOK: Output: database:default
@@ -659,7 +659,7 @@ PREHOOK: query: create external table 
tbl_ice_parquet_complex (
     structofarrays struct<names:array<string>, birthdays:array<string>>,
     structofmaps struct<map1:map<string, string>, map2:map<string, string>>
     ) stored by iceberg stored as parquet
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_parquet_complex
@@ -677,7 +677,7 @@ POSTHOOK: query: create external table 
tbl_ice_parquet_complex (
     structofarrays struct<names:array<string>, birthdays:array<string>>,
     structofmaps struct<map1:map<string, string>, map2:map<string, string>>
     ) stored by iceberg stored as parquet
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_parquet_complex
diff --git 
a/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_merge_mixed.q.out
 
b/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_merge_mixed.q.out
index fd79d6b888e..c4c9a0ace26 100644
--- 
a/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_merge_mixed.q.out
+++ 
b/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_merge_mixed.q.out
@@ -338,7 +338,7 @@ STAGE PLANS:
                   Statistics: Num rows: 5 Data size: #Masked# Basic stats: 
COMPLETE Column stats: COMPLETE
                   TableScan Vectorization:
                       native: true
-                      vectorizationSchemaColumns: [0:ss_sold_date_sk:int, 
1:ss_sold_time_sk:int, 2:ss_item_sk2:int, 3:ss_customer_sk2:int, 
4:ss_cdemo_sk:int, 5:ss_hdemo_sk:int, 6:ss_addr_sk:int, 7:ss_store_sk:int, 
8:ss_promo_sk:int, 9:ss_ticket_number:int, 10:ss_quantity:int, 
11:ss_wholesale_cost:decimal(7,2), 12:ss_list_price:decimal(7,2), 
13:ss_sales_price:decimal(7,2), 14:ss_ext_discount_amt:decimal(7,2), 
15:ss_ext_sales_price:decimal(7,2), 16:ss_ext_wholesale_cost:decimal(7,2), 
17:ss [...]
+                      vectorizationSchemaColumns: [0:ss_sold_date_sk:int, 
1:ss_sold_time_sk:int, 2:ss_item_sk2:int, 3:ss_customer_sk2:int, 
4:ss_cdemo_sk:int, 5:ss_hdemo_sk:int, 6:ss_addr_sk:int, 7:ss_store_sk:int, 
8:ss_promo_sk:int, 9:ss_ticket_number:int, 10:ss_quantity:int, 
11:ss_wholesale_cost:decimal(7,2)/DECIMAL_64, 
12:ss_list_price:decimal(7,2)/DECIMAL_64, 
13:ss_sales_price:decimal(7,2)/DECIMAL_64, 
14:ss_ext_discount_amt:decimal(7,2)/DECIMAL_64, 
15:ss_ext_sales_price:decimal(7,2)/D [...]
                   Select Operator
                     expressions: ss_sold_time_sk (type: int), ss_item_sk2 
(type: int), ss_customer_sk2 (type: int), ss_cdemo_sk (type: int), ss_hdemo_sk 
(type: int), ss_addr_sk (type: int), ss_store_sk (type: int), ss_promo_sk 
(type: int), ss_ticket_number (type: int), ss_quantity (type: int), 
ss_wholesale_cost (type: decimal(7,2)), ss_list_price (type: decimal(7,2)), 
ss_sales_price (type: decimal(7,2)), ss_ext_discount_amt (type: decimal(7,2)), 
ss_ext_sales_price (type: decimal(7,2)), s [...]
                     outputColumnNames: _col0, _col1, _col2, _col3, _col4, 
_col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12, _col13, _col14, 
_col15, _col16, _col17, _col18, _col19, _col20, _col21, _col22, _col23
@@ -346,7 +346,7 @@ STAGE PLANS:
                         className: VectorSelectOperator
                         native: true
                         projectedOutputColumnNums: [1, 2, 3, 4, 5, 6, 7, 8, 9, 
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 32, 33]
-                        selectExpressions: LongColumnBetween(col 31:bigint, 
left 1000, right 2000)(children: LongColMultiplyLongScalar(col 30:bigint, val 
1000)(children: FuncFloorDoubleToLong(col 29:double)(children: 
DoubleColDivideDoubleScalar(col 28:double, val 1000.0)(children: 
CastLongToDouble(col 2:int) -> 28:double) -> 29:double) -> 30:bigint) -> 
31:bigint) -> 32:boolean, DecimalColLessDecimalScalar(col 14:decimal(7,2), val 
0) -> 33:boolean
+                        selectExpressions: LongColumnBetween(col 31:bigint, 
left 1000, right 2000)(children: LongColMultiplyLongScalar(col 30:bigint, val 
1000)(children: FuncFloorDoubleToLong(col 29:double)(children: 
DoubleColDivideDoubleScalar(col 28:double, val 1000.0)(children: 
CastLongToDouble(col 2:int) -> 28:double) -> 29:double) -> 30:bigint) -> 
31:bigint) -> 32:boolean, Decimal64ColLessDecimal64Scalar(col 
14:decimal(7,2)/DECIMAL_64, decimal64Val 0, decimalVal 0) -> 33:boolean
                     Statistics: Num rows: 5 Data size: #Masked# Basic stats: 
COMPLETE Column stats: COMPLETE
                     Map Join Operator
                       condition map:
@@ -385,7 +385,7 @@ STAGE PLANS:
                           Filter Vectorization:
                               className: VectorFilterOperator
                               native: true
-                              predicateExpression: FilterExprAndExpr(children: 
FilterLongColEqualLongColumn(col 40:int, col 2:int), 
FilterLongColEqualLongColumn(col 41:int, col 3:int), 
FilterLongColEqualLongScalar(col 38:int, val 2451181), 
FilterLongColumnBetween(col 31:bigint, left 1000, right 2000)(children: 
LongColMultiplyLongScalar(col 30:bigint, val 1000)(children: 
FuncFloorDoubleToLong(col 28:double)(children: LongColDivideLongScalar(col 
2:int, val 1000) -> 28:double) -> 30:bigint) [...]
+                              predicateExpression: FilterExprAndExpr(children: 
FilterLongColEqualLongColumn(col 40:int, col 2:int), 
FilterLongColEqualLongColumn(col 41:int, col 3:int), 
FilterLongColEqualLongScalar(col 38:int, val 2451181), 
FilterLongColumnBetween(col 31:bigint, left 1000, right 2000)(children: 
LongColMultiplyLongScalar(col 30:bigint, val 1000)(children: 
FuncFloorDoubleToLong(col 28:double)(children: LongColDivideLongScalar(col 
2:int, val 1000) -> 28:double) -> 30:bigint) [...]
                           predicate: ((_col23 = _col33) and (_col46 = _col36) 
and (_col35 = 2451181) and (floor((_col33 / 1000)) * 1000) BETWEEN 1000 AND 
2000 and (_col29 < 0) and _col32 is null) (type: boolean)
                           Statistics: Num rows: 1 Data size: #Masked# Basic 
stats: COMPLETE Column stats: PARTIAL
                           Select Operator
@@ -412,7 +412,7 @@ STAGE PLANS:
                           Filter Vectorization:
                               className: VectorFilterOperator
                               native: true
-                              predicateExpression: FilterExprAndExpr(children: 
FilterLongColEqualLongColumn(col 40:int, col 2:int), 
FilterLongColEqualLongColumn(col 41:int, col 3:int), 
FilterLongColEqualLongScalar(col 38:int, val 2451181), 
FilterLongColumnBetween(col 31:bigint, left 1000, right 2000)(children: 
LongColMultiplyLongScalar(col 30:bigint, val 1000)(children: 
FuncFloorDoubleToLong(col 28:double)(children: LongColDivideLongScalar(col 
2:int, val 1000) -> 28:double) -> 30:bigint) [...]
+                              predicateExpression: FilterExprAndExpr(children: 
FilterLongColEqualLongColumn(col 40:int, col 2:int), 
FilterLongColEqualLongColumn(col 41:int, col 3:int), 
FilterLongColEqualLongScalar(col 38:int, val 2451181), 
FilterLongColumnBetween(col 31:bigint, left 1000, right 2000)(children: 
LongColMultiplyLongScalar(col 30:bigint, val 1000)(children: 
FuncFloorDoubleToLong(col 28:double)(children: LongColDivideLongScalar(col 
2:int, val 1000) -> 28:double) -> 30:bigint) [...]
                           predicate: ((_col23 = _col33) and (_col46 = _col36) 
and (_col35 = 2451181) and (floor((_col33 / 1000)) * 1000) BETWEEN 1000 AND 
2000 and (_col29 < 0) and _col32 is null) (type: boolean)
                           Statistics: Num rows: 1 Data size: #Masked# Basic 
stats: COMPLETE Column stats: PARTIAL
                           Select Operator
@@ -466,7 +466,7 @@ STAGE PLANS:
                           Filter Vectorization:
                               className: VectorFilterOperator
                               native: true
-                              predicateExpression: FilterExprAndExpr(children: 
FilterLongColEqualLongColumn(col 40:int, col 2:int), 
FilterLongColEqualLongColumn(col 41:int, col 3:int), 
FilterLongColEqualLongScalar(col 38:int, val 2451181), 
FilterLongColumnBetween(col 31:bigint, left 1000, right 2000)(children: 
LongColMultiplyLongScalar(col 30:bigint, val 1000)(children: 
FuncFloorDoubleToLong(col 28:double)(children: LongColDivideLongScalar(col 
2:int, val 1000) -> 28:double) -> 30:bigint) [...]
+                              predicateExpression: FilterExprAndExpr(children: 
FilterLongColEqualLongColumn(col 40:int, col 2:int), 
FilterLongColEqualLongColumn(col 41:int, col 3:int), 
FilterLongColEqualLongScalar(col 38:int, val 2451181), 
FilterLongColumnBetween(col 31:bigint, left 1000, right 2000)(children: 
LongColMultiplyLongScalar(col 30:bigint, val 1000)(children: 
FuncFloorDoubleToLong(col 28:double)(children: LongColDivideLongScalar(col 
2:int, val 1000) -> 28:double) -> 30:bigint) [...]
                           predicate: ((_col23 = _col33) and (_col46 = _col36) 
and (_col35 = 2451181) and (floor((_col33 / 1000)) * 1000) BETWEEN 1000 AND 
2000 and (_col29 < 0)) (type: boolean)
                           Statistics: Num rows: 1 Data size: #Masked# Basic 
stats: COMPLETE Column stats: PARTIAL
                           Select Operator
@@ -509,8 +509,8 @@ STAGE PLANS:
             Map Vectorization:
                 enabled: true
                 enabledConditionsMet: 
hive.vectorized.use.vectorized.input.format IS true
-                inputFormatFeatureSupport: []
-                featureSupportInUse: []
+                inputFormatFeatureSupport: [DECIMAL_64]
+                featureSupportInUse: [DECIMAL_64]
                 inputFileFormats: 
org.apache.iceberg.mr.hive.HiveIcebergInputFormat
                 allNative: false
                 usesVectorUDFAdaptor: false
@@ -518,7 +518,7 @@ STAGE PLANS:
                 rowBatchContext:
                     dataColumnCount: 23
                     includeColumns: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
-                    dataColumns: ss_sold_date_sk:int, ss_sold_time_sk:int, 
ss_item_sk2:int, ss_customer_sk2:int, ss_cdemo_sk:int, ss_hdemo_sk:int, 
ss_addr_sk:int, ss_store_sk:int, ss_promo_sk:int, ss_ticket_number:int, 
ss_quantity:int, ss_wholesale_cost:decimal(7,2), ss_list_price:decimal(7,2), 
ss_sales_price:decimal(7,2), ss_ext_discount_amt:decimal(7,2), 
ss_ext_sales_price:decimal(7,2), ss_ext_wholesale_cost:decimal(7,2), 
ss_ext_list_price:decimal(7,2), ss_ext_tax:decimal(7,2), ss_coup [...]
+                    dataColumns: ss_sold_date_sk:int, ss_sold_time_sk:int, 
ss_item_sk2:int, ss_customer_sk2:int, ss_cdemo_sk:int, ss_hdemo_sk:int, 
ss_addr_sk:int, ss_store_sk:int, ss_promo_sk:int, ss_ticket_number:int, 
ss_quantity:int, ss_wholesale_cost:decimal(7,2)/DECIMAL_64, 
ss_list_price:decimal(7,2)/DECIMAL_64, ss_sales_price:decimal(7,2)/DECIMAL_64, 
ss_ext_discount_amt:decimal(7,2)/DECIMAL_64, 
ss_ext_sales_price:decimal(7,2)/DECIMAL_64, 
ss_ext_wholesale_cost:decimal(7,2)/DECIMAL_64 [...]
                     partitionColumnCount: 0
                     scratchColumnTypeNames: [double, double, bigint, bigint, 
bigint, bigint, bigint, bigint, string, bigint, bigint, bigint, bigint, bigint, 
bigint, bigint, bigint, bigint, bigint, bigint, bigint, decimal(7,2), 
decimal(7,2), decimal(7,2), decimal(7,2), decimal(7,2), decimal(7,2), 
decimal(7,2), decimal(7,2), decimal(7,2), decimal(7,2), decimal(7,2), 
decimal(7,2), decimal(7,2), decimal(7,2), bigint]
         Map 3 
@@ -529,7 +529,7 @@ STAGE PLANS:
                   Statistics: Num rows: 2 Data size: #Masked# Basic stats: 
COMPLETE Column stats: PARTIAL
                   TableScan Vectorization:
                       native: true
-                      vectorizationSchemaColumns: [0:ss_sold_date_sk:int, 
1:ss_sold_time_sk:int, 2:ss_item_sk:int, 3:ss_customer_sk:int, 
4:ss_cdemo_sk:int, 5:ss_hdemo_sk:int, 6:ss_addr_sk:int, 7:ss_store_sk:int, 
8:ss_promo_sk:int, 9:ss_ticket_number:int, 10:ss_quantity:int, 
11:ss_wholesale_cost:decimal(7,2), 12:ss_list_price:decimal(7,2), 
13:ss_sales_price:decimal(7,2), 14:ss_ext_discount_amt:decimal(7,2), 
15:ss_ext_sales_price:decimal(7,2), 16:ss_ext_wholesale_cost:decimal(7,2), 
17:ss_e [...]
+                      vectorizationSchemaColumns: [0:ss_sold_date_sk:int, 
1:ss_sold_time_sk:int, 2:ss_item_sk:int, 3:ss_customer_sk:int, 
4:ss_cdemo_sk:int, 5:ss_hdemo_sk:int, 6:ss_addr_sk:int, 7:ss_store_sk:int, 
8:ss_promo_sk:int, 9:ss_ticket_number:int, 10:ss_quantity:int, 
11:ss_wholesale_cost:decimal(7,2)/DECIMAL_64, 
12:ss_list_price:decimal(7,2)/DECIMAL_64, 
13:ss_sales_price:decimal(7,2)/DECIMAL_64, 
14:ss_ext_discount_amt:decimal(7,2)/DECIMAL_64, 
15:ss_ext_sales_price:decimal(7,2)/DEC [...]
                   Filter Operator
                     Filter Vectorization:
                         className: VectorFilterOperator
@@ -564,8 +564,8 @@ STAGE PLANS:
             Map Vectorization:
                 enabled: true
                 enabledConditionsMet: 
hive.vectorized.use.vectorized.input.format IS true
-                inputFormatFeatureSupport: []
-                featureSupportInUse: []
+                inputFormatFeatureSupport: [DECIMAL_64]
+                featureSupportInUse: [DECIMAL_64]
                 inputFileFormats: 
org.apache.iceberg.mr.hive.HiveIcebergInputFormat
                 allNative: true
                 usesVectorUDFAdaptor: false
@@ -573,7 +573,7 @@ STAGE PLANS:
                 rowBatchContext:
                     dataColumnCount: 23
                     includeColumns: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
-                    dataColumns: ss_sold_date_sk:int, ss_sold_time_sk:int, 
ss_item_sk:int, ss_customer_sk:int, ss_cdemo_sk:int, ss_hdemo_sk:int, 
ss_addr_sk:int, ss_store_sk:int, ss_promo_sk:int, ss_ticket_number:int, 
ss_quantity:int, ss_wholesale_cost:decimal(7,2), ss_list_price:decimal(7,2), 
ss_sales_price:decimal(7,2), ss_ext_discount_amt:decimal(7,2), 
ss_ext_sales_price:decimal(7,2), ss_ext_wholesale_cost:decimal(7,2), 
ss_ext_list_price:decimal(7,2), ss_ext_tax:decimal(7,2), ss_coupon [...]
+                    dataColumns: ss_sold_date_sk:int, ss_sold_time_sk:int, 
ss_item_sk:int, ss_customer_sk:int, ss_cdemo_sk:int, ss_hdemo_sk:int, 
ss_addr_sk:int, ss_store_sk:int, ss_promo_sk:int, ss_ticket_number:int, 
ss_quantity:int, ss_wholesale_cost:decimal(7,2)/DECIMAL_64, 
ss_list_price:decimal(7,2)/DECIMAL_64, ss_sales_price:decimal(7,2)/DECIMAL_64, 
ss_ext_discount_amt:decimal(7,2)/DECIMAL_64, 
ss_ext_sales_price:decimal(7,2)/DECIMAL_64, 
ss_ext_wholesale_cost:decimal(7,2)/DECIMAL_64,  [...]
                     neededVirtualColumns: #Masked#
                     partitionColumnCount: 0
                     scratchColumnTypeNames: [bigint]
diff --git 
a/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_read_mixed.q.out
 
b/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_read_mixed.q.out
index f94d7275f65..84237b934ff 100644
--- 
a/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_read_mixed.q.out
+++ 
b/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_read_mixed.q.out
@@ -5,12 +5,12 @@ POSTHOOK: query: drop table if exists tbl_ice_mixed
 POSTHOOK: type: DROPTABLE
 POSTHOOK: Output: database:default
 PREHOOK: query: create external table tbl_ice_mixed(a int, b string) stored by 
iceberg stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true',"format-version"='1')
+TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_mixed
 POSTHOOK: query: create external table tbl_ice_mixed(a int, b string) stored 
by iceberg stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true',"format-version"='1')
+TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_mixed
@@ -293,7 +293,7 @@ PREHOOK: query: create external table 
tbl_ice_mixed_all_types (
     t_date DATE,
     t_decimal DECIMAL(4,2)
     ) stored by iceberg stored as orc
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_mixed_all_types
@@ -309,7 +309,7 @@ POSTHOOK: query: create external table 
tbl_ice_mixed_all_types (
     t_date DATE,
     t_decimal DECIMAL(4,2)
     ) stored by iceberg stored as orc
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_mixed_all_types
@@ -656,7 +656,7 @@ PREHOOK: query: create external table tbl_ice_mixed_parted (
     b string
     ) partitioned by (p1 string, p2 string)
 #### A masked pattern was here ####
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 #### A masked pattern was here ####
 PREHOOK: Output: database:default
@@ -666,7 +666,7 @@ POSTHOOK: query: create external table tbl_ice_mixed_parted 
(
     b string
     ) partitioned by (p1 string, p2 string)
 #### A masked pattern was here ####
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 #### A masked pattern was here ####
 POSTHOOK: Output: database:default
diff --git 
a/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_read_multitable.q.out
 
b/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_read_multitable.q.out
index fa939bb08ba..6ad2ef9de16 100644
--- 
a/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_read_multitable.q.out
+++ 
b/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_read_multitable.q.out
@@ -17,12 +17,10 @@ POSTHOOK: Output: default@lineitem
 POSTHOOK: Lineage: lineitem.l_discount SCRIPT []
 POSTHOOK: Lineage: lineitem.l_orderkey SCRIPT []
 PREHOOK: query: create external table customer_ice(c_custkey int) STORED BY 
ICEBERG stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@customer_ice
 POSTHOOK: query: create external table customer_ice(c_custkey int) STORED BY 
ICEBERG stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@customer_ice
@@ -70,12 +68,10 @@ POSTHOOK: Input: default@orders
 POSTHOOK: Output: hdfs://### HDFS PATH ###
 -99.20
 PREHOOK: query: create external table lineitem_ice(l_discount decimal(15,2), 
l_orderkey int) STORED BY ICEBERG stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@lineitem_ice
 POSTHOOK: query: create external table lineitem_ice(l_discount decimal(15,2), 
l_orderkey int) STORED BY ICEBERG stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@lineitem_ice
diff --git 
a/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_read_orc.q.out
 
b/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_read_orc.q.out
index 734ac8f8f82..ea68994b041 100644
--- 
a/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_read_orc.q.out
+++ 
b/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_read_orc.q.out
@@ -5,12 +5,12 @@ POSTHOOK: query: drop table if exists tbl_ice_orc
 POSTHOOK: type: DROPTABLE
 POSTHOOK: Output: database:default
 PREHOOK: query: create external table tbl_ice_orc(a int, b string) stored by 
iceberg stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true',"format-version"='1')
+TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_orc
 POSTHOOK: query: create external table tbl_ice_orc(a int, b string) stored by 
iceberg stored as orc
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true',"format-version"='1')
+TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_orc
@@ -180,7 +180,7 @@ PREHOOK: query: create external table tbl_ice_orc_all_types 
(
     t_date DATE,
     t_decimal DECIMAL(4,2)
     ) stored by iceberg stored as orc
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_orc_all_types
@@ -196,7 +196,7 @@ POSTHOOK: query: create external table 
tbl_ice_orc_all_types (
     t_date DATE,
     t_decimal DECIMAL(4,2)
     ) stored by iceberg stored as orc
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_orc_all_types
@@ -357,7 +357,7 @@ PREHOOK: query: create external table tbl_ice_orc_parted (
     b string
     ) partitioned by (p1 string, p2 string)
 #### A masked pattern was here ####
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 #### A masked pattern was here ####
 PREHOOK: Output: database:default
@@ -367,7 +367,7 @@ POSTHOOK: query: create external table tbl_ice_orc_parted (
     b string
     ) partitioned by (p1 string, p2 string)
 #### A masked pattern was here ####
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 #### A masked pattern was here ####
 POSTHOOK: Output: database:default
@@ -772,7 +772,7 @@ PREHOOK: query: create external table tbl_ice_orc_complex (
     structofarrays struct<names:array<string>, birthdays:array<string>>,
     structofmaps struct<map1:map<string, string>, map2:map<string, string>>
     ) stored by iceberg stored as orc
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_orc_complex
@@ -790,7 +790,7 @@ POSTHOOK: query: create external table tbl_ice_orc_complex (
     structofarrays struct<names:array<string>, birthdays:array<string>>,
     structofmaps struct<map1:map<string, string>, map2:map<string, string>>
     ) stored by iceberg stored as orc
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_orc_complex
diff --git 
a/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_read_parquet.q.out
 
b/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_read_parquet.q.out
index c2a1c1c06d1..4b4d114a151 100644
--- 
a/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_read_parquet.q.out
+++ 
b/iceberg/iceberg-handler/src/test/results/positive/vectorized_iceberg_read_parquet.q.out
@@ -5,12 +5,12 @@ POSTHOOK: query: drop table if exists tbl_ice_parquet
 POSTHOOK: type: DROPTABLE
 POSTHOOK: Output: database:default
 PREHOOK: query: create external table tbl_ice_parquet(a int, b string) stored 
by iceberg stored as parquet
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true',"format-version"='1')
+TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_parquet
 POSTHOOK: query: create external table tbl_ice_parquet(a int, b string) stored 
by iceberg stored as parquet
-TBLPROPERTIES ('iceberg.decimal64.vectorization'='true',"format-version"='1')
+TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_parquet
@@ -180,7 +180,7 @@ PREHOOK: query: create external table 
tbl_ice_parquet_all_types (
     t_date DATE,
     t_decimal DECIMAL(4,2)
     ) stored by iceberg stored as parquet
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_parquet_all_types
@@ -196,7 +196,7 @@ POSTHOOK: query: create external table 
tbl_ice_parquet_all_types (
     t_date DATE,
     t_decimal DECIMAL(4,2)
     ) stored by iceberg stored as parquet
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_parquet_all_types
@@ -357,7 +357,7 @@ PREHOOK: query: create external table 
tbl_ice_parquet_parted (
     b string
     ) partitioned by (p1 string, p2 string)
 #### A masked pattern was here ####
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 #### A masked pattern was here ####
 PREHOOK: Output: database:default
@@ -367,7 +367,7 @@ POSTHOOK: query: create external table 
tbl_ice_parquet_parted (
     b string
     ) partitioned by (p1 string, p2 string)
 #### A masked pattern was here ####
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 #### A masked pattern was here ####
 POSTHOOK: Output: database:default
@@ -580,7 +580,7 @@ PREHOOK: query: create external table 
tbl_ice_parquet_complex (
     structofarrays struct<names:array<string>, birthdays:array<string>>,
     structofmaps struct<map1:map<string, string>, map2:map<string, string>>
     ) stored by iceberg stored as parquet
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 PREHOOK: type: CREATETABLE
 PREHOOK: Output: database:default
 PREHOOK: Output: default@tbl_ice_parquet_complex
@@ -598,7 +598,7 @@ POSTHOOK: query: create external table 
tbl_ice_parquet_complex (
     structofarrays struct<names:array<string>, birthdays:array<string>>,
     structofmaps struct<map1:map<string, string>, map2:map<string, string>>
     ) stored by iceberg stored as parquet
-    TBLPROPERTIES 
('iceberg.decimal64.vectorization'='true',"format-version"='1')
+    TBLPROPERTIES ("format-version"='1')
 POSTHOOK: type: CREATETABLE
 POSTHOOK: Output: database:default
 POSTHOOK: Output: default@tbl_ice_parquet_complex
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/vector/VectorizedDummyColumnReader.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/vector/VectorizedDummyColumnReader.java
index ee21fd771f9..32b6ee46c7d 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/vector/VectorizedDummyColumnReader.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/vector/VectorizedDummyColumnReader.java
@@ -22,8 +22,8 @@
 import org.apache.hadoop.hive.common.type.HiveDecimal;
 import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.ColumnVector;
-import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.DoubleColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.IDecimalColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.StructColumnVector;
 import org.apache.hadoop.hive.ql.exec.vector.TimestampColumnVector;
@@ -128,7 +128,7 @@ private void fillPrimitive(ColumnVector col, 
PrimitiveTypeInfo ti, Object value)
         return;
 
       case DECIMAL:
-        DecimalColumnVector dcv = (DecimalColumnVector) col;
+        IDecimalColumnVector dcv = (IDecimalColumnVector) col;
         dcv.set(0, HiveDecimal.create(value.toString()));
         return;
 

Reply via email to