voon created HUDI-7955:
--------------------------
Summary: Account for Hive3 and Hive2 getPrimitiveJavaObject
discrepancy for WritableTimestampObjectInspector
Key: HUDI-7955
URL: https://issues.apache.org/jira/browse/HUDI-7955
Project: Apache Hudi
Issue Type: Bug
Reporter: voon
Attachments: image-2024-07-05-18-11-33-420.png,
image-2024-07-05-18-13-28-135.png
The invocation of *getPrimitiveJavaObject* returns a different implementation
of timestamp in Hive3 and Hive2.
- Hive2: *java.sql.Timestamp*
- Hive3: *org.apache.hadoop.hive.common.type.Timestamp*
Hudi common is compiled with Hive2, but Trino is using Hive3, causing the
discrepancy between compile and runtime. When execution flow falls into this
section of the code where the trigger conditions are listed below:
1. MOR table is used
2. User is querying the _rt table
3. User's table has a *TIMESTAMP* type and query requires it
4. Merge is required as record is present in both Parquet and Log file
Error below will be thrown:
{code:java}
java.lang.NoSuchMethodError: 'java.sql.Timestamp
org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableTimestampObjectInspector.getPrimitiveJavaObject(java.lang.Object)'{code}
h1.
Hive3
!image-2024-07-05-18-11-33-420.png|width=509,height=572!
h1. Hive2
!image-2024-07-05-18-13-28-135.png|width=507,height=501!
h1. Solution:
Hive shimming should be applied to obtaining *getPrimitiveJavaObject* too.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)