Package com.illumon.iris.db.v2.parquet
Class BigDecimalParquetBytesCodec
java.lang.Object
com.illumon.iris.db.v2.parquet.BigDecimalParquetBytesCodec
- All Implemented Interfaces:
ObjectCodec<BigDecimal>
,ObjectDecoder<BigDecimal>
public class BigDecimalParquetBytesCodec extends Object implements ObjectCodec<BigDecimal>
-
Field Summary
-
Constructor Summary
Constructors Constructor Description BigDecimalParquetBytesCodec(int precision, int scale, int encodedSizeInBytes)
BigDecimalParquetBytesCodec(int precision, int scale, int encodedSizeInBytes, RoundingMode roundingMode)
-
Method Summary
Modifier and Type Method Description BigDecimal
decode(byte[] input, int offset, int length)
Decode an object from an array of bytes.byte[]
encode(BigDecimal input)
Encode the specified input as an array of bytes.int
expectedObjectWidth()
What width byte array does this ObjectCodec expect to encode and decode?int
getPrecision()
If applicable, the maximum encodable precision.int
getScale()
If applicable, the maximum encodable scale.boolean
isNullable()
Does this codec support encoding of null values?
-
Constructor Details
-
BigDecimalParquetBytesCodec
public BigDecimalParquetBytesCodec(int precision, int scale, int encodedSizeInBytes, RoundingMode roundingMode)- Parameters:
precision
-scale
-encodedSizeInBytes
- encoded size in bytes, if fixed size, or -1 if variable size. note that according to the parquet spec, the minimum number of bytes required to represent the unscaled value should be used for a variable sized (binary) encoding; in any case, the maximum encoded bytes is implicitly limited by precision.
-
BigDecimalParquetBytesCodec
public BigDecimalParquetBytesCodec(int precision, int scale, int encodedSizeInBytes)
-
-
Method Details
-
isNullable
public boolean isNullable()Description copied from interface:ObjectCodec
Does this codec support encoding of null values?- Specified by:
isNullable
in interfaceObjectCodec<BigDecimal>
- Returns:
- if null values are supported
-
getPrecision
public int getPrecision()Description copied from interface:ObjectCodec
If applicable, the maximum encodable precision. If precision is not applicable (i.e. for non-numeric types) this method should return zero.- Specified by:
getPrecision
in interfaceObjectCodec<BigDecimal>
- Returns:
- the numeric precision supported by this codec
-
getScale
public int getScale()Description copied from interface:ObjectCodec
If applicable, the maximum encodable scale. If scale is not applicable (i.e. for non-numeric types) this method should return zero.- Specified by:
getScale
in interfaceObjectCodec<BigDecimal>
- Returns:
- the numeric scale (digits after the decimal point) supported by this codec
-
encode
Description copied from interface:ObjectCodec
Encode the specified input as an array of bytes. Note that it is up to the implementation how to encode null inputs. The use of a zero-length byte array (e.g.CollectionUtil.ZERO_LENGTH_BYTE_ARRAY
) is strongly encouraged.- Specified by:
encode
in interfaceObjectCodec<BigDecimal>
- Parameters:
input
- The input object, possibly null- Returns:
- The output byte array
-
decode
Description copied from interface:ObjectDecoder
Decode an object from an array of bytes.- Specified by:
decode
in interfaceObjectDecoder<BigDecimal>
- Parameters:
input
- The input byte array containing bytes to decodeoffset
- The offset into the byte array to start decoding fromlength
- The length of the byte array to decode from, starting at the offset- Returns:
- The output object, possibly null
-
expectedObjectWidth
public int expectedObjectWidth()Description copied from interface:ObjectDecoder
What width byte array does this ObjectCodec expect to encode and decode?- Specified by:
expectedObjectWidth
in interfaceObjectDecoder<BigDecimal>
- Returns:
- VARIABLE_WIDTH_SENTINEL if the codec must encode and decode variable width columns, otherwise the fixed size of byte array that must be decoded and encoded.
-