Skip to content

Commit

Permalink
[fix][sql][branch-3.0] Fix decimal compatibility in Trino 368.
Browse files Browse the repository at this point in the history
  • Loading branch information
shibd committed Oct 8, 2024
1 parent 0fa9572 commit 1413bcc
Showing 1 changed file with 15 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

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;
Expand All @@ -34,8 +35,10 @@
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;
Expand Down Expand Up @@ -711,9 +714,20 @@ private FieldValueProvider getFieldValueProvider(int fieldIndex, Class<?> expect
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
Expand Down

0 comments on commit 1413bcc

Please sign in to comment.