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

mmerli pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/branch-3.0 by this push:
     new b97c18f3375 [fix][sql][branch-3.0] Fix long decimal compatibility in 
Trino 368. (#23419)
b97c18f3375 is described below

commit b97c18f33757d2ab71b7bc6b00c91323b1e9f120
Author: Baodi Shi <[email protected]>
AuthorDate: Wed Oct 9 01:32:23 2024 +0800

    [fix][sql][branch-3.0] Fix long decimal compatibility in Trino 368. (#23419)
---
 .../org/apache/pulsar/sql/presto/PulsarRecordCursor.java | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git 
a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarRecordCursor.java
 
b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarRecordCursor.java
index 42a69b142e4..07f2d5a9b17 100644
--- 
a/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarRecordCursor.java
+++ 
b/pulsar-sql/presto-pulsar/src/main/java/org/apache/pulsar/sql/presto/PulsarRecordCursor.java
@@ -20,6 +20,7 @@ package org.apache.pulsar.sql.presto;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.collect.ImmutableSet.toImmutableSet;
+import static io.airlift.slice.SizeOf.SIZE_OF_LONG;
 import static io.trino.decoder.FieldValueProviders.bytesValueProvider;
 import static io.trino.decoder.FieldValueProviders.longValueProvider;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -34,8 +35,10 @@ import io.netty.util.ReferenceCountUtil;
 import io.trino.decoder.DecoderColumnHandle;
 import io.trino.decoder.FieldValueProvider;
 import io.trino.spi.block.Block;
+import io.trino.spi.block.Int128ArrayBlock;
 import io.trino.spi.connector.ColumnHandle;
 import io.trino.spi.connector.RecordCursor;
+import io.trino.spi.type.Int128;
 import io.trino.spi.type.Type;
 import java.io.IOException;
 import java.util.HashMap;
@@ -711,9 +714,20 @@ public class PulsarRecordCursor implements RecordCursor {
         return currentRowValues[fieldIndex];
     }
 
+    private FieldValueProvider getFieldValueProvider(int fieldIndex) {
+        checkArgument(fieldIndex < columnHandles.size(), "Invalid field 
index");
+        return currentRowValues[fieldIndex];
+    }
+
     @Override
     public Object getObject(int field) {
-        return getFieldValueProvider(field, Block.class).getBlock();
+        Block block = getFieldValueProvider(field).getBlock();
+        if (block instanceof Int128ArrayBlock) {
+            return Int128.valueOf(
+                    block.getLong(0, 0),
+                    block.getLong(0, SIZE_OF_LONG));
+        }
+        return block;
     }
 
     @Override

Reply via email to