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)