|
20 | 20 |
|
21 | 21 | import static com.google.common.base.Preconditions.checkArgument; |
22 | 22 | import static com.google.common.collect.ImmutableSet.toImmutableSet; |
| 23 | +import static io.airlift.slice.SizeOf.SIZE_OF_LONG; |
23 | 24 | import static io.trino.decoder.FieldValueProviders.bytesValueProvider; |
24 | 25 | import static io.trino.decoder.FieldValueProviders.longValueProvider; |
25 | 26 | import com.fasterxml.jackson.core.JsonProcessingException; |
|
34 | 35 | import io.trino.decoder.DecoderColumnHandle; |
35 | 36 | import io.trino.decoder.FieldValueProvider; |
36 | 37 | import io.trino.spi.block.Block; |
| 38 | +import io.trino.spi.block.Int128ArrayBlock; |
37 | 39 | import io.trino.spi.connector.ColumnHandle; |
38 | 40 | import io.trino.spi.connector.RecordCursor; |
| 41 | +import io.trino.spi.type.Int128; |
39 | 42 | import io.trino.spi.type.Type; |
40 | 43 | import java.io.IOException; |
41 | 44 | import java.util.HashMap; |
@@ -711,9 +714,20 @@ private FieldValueProvider getFieldValueProvider(int fieldIndex, Class<?> expect |
711 | 714 | return currentRowValues[fieldIndex]; |
712 | 715 | } |
713 | 716 |
|
| 717 | + private FieldValueProvider getFieldValueProvider(int fieldIndex) { |
| 718 | + checkArgument(fieldIndex < columnHandles.size(), "Invalid field index"); |
| 719 | + return currentRowValues[fieldIndex]; |
| 720 | + } |
| 721 | + |
714 | 722 | @Override |
715 | 723 | public Object getObject(int field) { |
716 | | - return getFieldValueProvider(field, Block.class).getBlock(); |
| 724 | + Block block = getFieldValueProvider(field).getBlock(); |
| 725 | + if (block instanceof Int128ArrayBlock) { |
| 726 | + return Int128.valueOf( |
| 727 | + block.getLong(0, 0), |
| 728 | + block.getLong(0, SIZE_OF_LONG)); |
| 729 | + } |
| 730 | + return block; |
717 | 731 | } |
718 | 732 |
|
719 | 733 | @Override |
|
0 commit comments