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

krisztiankasa 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 2cd59de300e HIVE-29328: Addendum: Orc acid footer metadata should be 
case insensitive (#6219)
2cd59de300e is described below

commit 2cd59de300e9dae3fe1d6d2538efdbf56f80c763
Author: InvisibleProgrammer <[email protected]>
AuthorDate: Thu Dec 11 08:47:27 2025 +0100

    HIVE-29328: Addendum: Orc acid footer metadata should be case insensitive 
(#6219)
---
 .../hadoop/hive/ql/io/orc/OrcInputFormat.java       | 21 +++++++--------------
 .../hadoop/hive/ql/io/orc/OrcRecordUpdater.java     | 12 ++++++------
 2 files changed, 13 insertions(+), 20 deletions(-)

diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java 
b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java
index 05642e27605..59f08459fdf 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java
@@ -19,7 +19,6 @@
 package org.apache.hadoop.hive.ql.io.orc;
 
 import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.Equator;
 import org.apache.hadoop.hdfs.protocol.HdfsLocatedFileStatus;
 import org.apache.hadoop.hive.common.BlobStorageUtils;
 import org.apache.hadoop.hive.common.NoDynamicValuesException;
@@ -380,7 +379,7 @@ public static RecordReader createReaderFromFile(Reader file,
    * @return <code>false</code> if an ACID file, <code>true</code> if a simple 
orc file
    */
   public static boolean isOriginal(Reader file) {
-    return !checkIfAcidRowNamesFilled(file.getSchema().getFieldNames());
+    return !containsAllAcidRows(file.getSchema().getFieldNames());
   }
 
   /**
@@ -389,21 +388,15 @@ public static boolean isOriginal(Reader file) {
    * @return <code>false</code> if an ACID file, <code>true</code> if a simple 
orc file
    */
   public static boolean isOriginal(Footer footer) {
-    return 
!checkIfAcidRowNamesFilled(footer.getTypesList().getFirst().getFieldNamesList());
+    return 
!containsAllAcidRows(footer.getTypesList().getFirst().getFieldNamesList());
   }
 
-  private static boolean checkIfAcidRowNamesFilled(Collection<String> 
fieldNames) {
-    return 
CollectionUtils.isEqualCollection(OrcRecordUpdater.ALL_ACID_ROW_NAMES, 
fieldNames, new Equator<>() {
-      @Override
-      public boolean equate(String s, String t1) {
-        return s.equalsIgnoreCase(t1);
-      }
+  private static boolean containsAllAcidRows(Collection<String> fieldNames) {
+    Collection<String> lowerCaseFieldNames = fieldNames.stream()
+            .map(String::toLowerCase)
+            .collect(Collectors.toCollection(HashSet::new));
 
-      @Override
-      public int hash(String s) {
-        return 0;
-      }
-    });
+    return 
CollectionUtils.isEqualCollection(OrcRecordUpdater.ALL_ACID_ROW_NAMES, 
lowerCaseFieldNames);
   }
 
   public static boolean[] genIncludedColumns(TypeDescription readerSchema,
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRecordUpdater.java 
b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRecordUpdater.java
index c99ae79824a..f6a99f60e07 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRecordUpdater.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcRecordUpdater.java
@@ -93,12 +93,12 @@ public class OrcRecordUpdater implements RecordUpdater {
   static final String CURRENT_WRITEID_FIELD_NAME = "currentTransaction";
   static final String ROW_FIELD_NAME = "row";
   public static final Collection<String> ALL_ACID_ROW_NAMES = Arrays.asList(
-      OrcRecordUpdater.BUCKET_FIELD_NAME,
-      OrcRecordUpdater.CURRENT_WRITEID_FIELD_NAME,
-      OrcRecordUpdater.ORIGINAL_WRITEID_FIELD_NAME,
-      OrcRecordUpdater.OPERATION_FIELD_NAME,
-      OrcRecordUpdater.ROW_FIELD_NAME,
-      OrcRecordUpdater.ROW_ID_FIELD_NAME);
+      OrcRecordUpdater.BUCKET_FIELD_NAME.toLowerCase(),
+      OrcRecordUpdater.CURRENT_WRITEID_FIELD_NAME.toLowerCase(),
+      OrcRecordUpdater.ORIGINAL_WRITEID_FIELD_NAME.toLowerCase(),
+      OrcRecordUpdater.OPERATION_FIELD_NAME.toLowerCase(),
+      OrcRecordUpdater.ROW_FIELD_NAME.toLowerCase(),
+      OrcRecordUpdater.ROW_ID_FIELD_NAME.toLowerCase());
 
   /**
    * total number of fields (above)

Reply via email to