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