Class BinaryArrayData
- java.lang.Object
-
- org.apache.flink.table.data.binary.BinarySection
-
- org.apache.flink.table.data.binary.BinaryArrayData
-
- All Implemented Interfaces:
ArrayData,BinaryFormat,TypedSetters
@Internal public final class BinaryArrayData extends BinarySection implements ArrayData, TypedSetters
A binary implementation ofArrayDatawhich is backed byMemorySegments.For fields that hold fixed-length primitive types, such as long, double or int, they are stored compacted in bytes, just like the original java array.
The binary layout of
BinaryArrayData:[size(int)] + [null bits(4-byte word boundaries)] + [values or offset&length] + [variable length part].
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.flink.table.data.ArrayData
ArrayData.ElementGetter
-
-
Field Summary
-
Fields inherited from class org.apache.flink.table.data.binary.BinarySection
offset, segments, sizeInBytes
-
Fields inherited from interface org.apache.flink.table.data.binary.BinaryFormat
HIGHEST_FIRST_BIT, HIGHEST_SECOND_TO_EIGHTH_BIT, MAX_FIX_PART_DATA_SIZE
-
-
Constructor Summary
Constructors Constructor Description BinaryArrayData()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleananyNull()static intcalculateFixLengthPartSize(LogicalType type)It store real value when type is primitive.static intcalculateHeaderInBytes(int numFields)BinaryArrayDatacopy()BinaryArrayDatacopy(BinaryArrayData reuse)static BinaryArrayDatafromPrimitiveArray(boolean[] arr)static BinaryArrayDatafromPrimitiveArray(byte[] arr)static BinaryArrayDatafromPrimitiveArray(double[] arr)static BinaryArrayDatafromPrimitiveArray(float[] arr)static BinaryArrayDatafromPrimitiveArray(int[] arr)static BinaryArrayDatafromPrimitiveArray(long[] arr)static BinaryArrayDatafromPrimitiveArray(short[] arr)ArrayDatagetArray(int pos)Returns the array value at the given position.byte[]getBinary(int pos)Returns the binary value at the given position.booleangetBoolean(int pos)Returns the boolean value at the given position.bytegetByte(int pos)Returns the byte value at the given position.DecimalDatagetDecimal(int pos, int precision, int scale)Returns the decimal value at the given position.doublegetDouble(int pos)Returns the double value at the given position.floatgetFloat(int pos)Returns the float value at the given position.intgetInt(int pos)Returns the integer value at the given position.longgetLong(int pos)Returns the long value at the given position.MapDatagetMap(int pos)Returns the map value at the given position.<T> RawValueData<T>getRawValue(int pos)Returns the raw value at the given position.RowDatagetRow(int pos, int numFields)Returns the row value at the given position.shortgetShort(int pos)Returns the short value at the given position.StringDatagetString(int pos)Returns the string value at the given position.TimestampDatagetTimestamp(int pos, int precision)Returns the timestamp value at the given position.org.apache.flink.types.variant.VariantgetVariant(int pos)Returns the Variant value at the given position.inthashCode()booleanisNullAt(int pos)Returns true if the element is null at the given position.voidpointTo(org.apache.flink.core.memory.MemorySegment[] segments, int offset, int sizeInBytes)voidsetBoolean(int pos, boolean value)voidsetByte(int pos, byte value)voidsetDecimal(int pos, DecimalData value, int precision)Set the decimal column value.voidsetDouble(int pos, double value)voidsetFloat(int pos, float value)voidsetInt(int pos, int value)voidsetLong(int pos, long value)voidsetNotNullAt(int pos)voidsetNullAt(int pos)voidsetNullBoolean(int pos)voidsetNullByte(int pos)voidsetNullDouble(int pos)voidsetNullFloat(int pos)voidsetNullInt(int pos)voidsetNullLong(int pos)voidsetNullShort(int pos)voidsetShort(int pos, short value)voidsetTimestamp(int pos, TimestampData value, int precision)Set Timestamp value.intsize()Returns the number of elements in this array.boolean[]toBooleanArray()byte[]toByteArray()double[]toDoubleArray()float[]toFloatArray()int[]toIntArray()long[]toLongArray()<T> T[]toObjectArray(LogicalType elementType)short[]toShortArray()-
Methods inherited from class org.apache.flink.table.data.binary.BinarySection
equals, getOffset, getSegments, getSizeInBytes, pointTo
-
-
-
-
Method Detail
-
calculateHeaderInBytes
public static int calculateHeaderInBytes(int numFields)
-
calculateFixLengthPartSize
public static int calculateFixLengthPartSize(LogicalType type)
It store real value when type is primitive. It store the length and offset of variable-length part when type is string, map, etc.
-
size
public int size()
Description copied from interface:ArrayDataReturns the number of elements in this array.
-
pointTo
public void pointTo(org.apache.flink.core.memory.MemorySegment[] segments, int offset, int sizeInBytes)- Overrides:
pointToin classBinarySection
-
isNullAt
public boolean isNullAt(int pos)
Description copied from interface:ArrayDataReturns true if the element is null at the given position.
-
setNullAt
public void setNullAt(int pos)
- Specified by:
setNullAtin interfaceTypedSetters
-
setNotNullAt
public void setNotNullAt(int pos)
-
getLong
public long getLong(int pos)
Description copied from interface:ArrayDataReturns the long value at the given position.
-
setLong
public void setLong(int pos, long value)- Specified by:
setLongin interfaceTypedSetters
-
setNullLong
public void setNullLong(int pos)
-
getInt
public int getInt(int pos)
Description copied from interface:ArrayDataReturns the integer value at the given position.
-
setInt
public void setInt(int pos, int value)- Specified by:
setIntin interfaceTypedSetters
-
setNullInt
public void setNullInt(int pos)
-
getString
public StringData getString(int pos)
Description copied from interface:ArrayDataReturns the string value at the given position.
-
getDecimal
public DecimalData getDecimal(int pos, int precision, int scale)
Description copied from interface:ArrayDataReturns the decimal value at the given position.The precision and scale are required to determine whether the decimal value was stored in a compact representation (see
DecimalData).- Specified by:
getDecimalin interfaceArrayData
-
getTimestamp
public TimestampData getTimestamp(int pos, int precision)
Description copied from interface:ArrayDataReturns the timestamp value at the given position.The precision is required to determine whether the timestamp value was stored in a compact representation (see
TimestampData).- Specified by:
getTimestampin interfaceArrayData
-
getRawValue
public <T> RawValueData<T> getRawValue(int pos)
Description copied from interface:ArrayDataReturns the raw value at the given position.- Specified by:
getRawValuein interfaceArrayData
-
getVariant
public org.apache.flink.types.variant.Variant getVariant(int pos)
Description copied from interface:ArrayDataReturns the Variant value at the given position.- Specified by:
getVariantin interfaceArrayData
-
getBinary
public byte[] getBinary(int pos)
Description copied from interface:ArrayDataReturns the binary value at the given position.
-
getArray
public ArrayData getArray(int pos)
Description copied from interface:ArrayDataReturns the array value at the given position.
-
getMap
public MapData getMap(int pos)
Description copied from interface:ArrayDataReturns the map value at the given position.
-
getRow
public RowData getRow(int pos, int numFields)
Description copied from interface:ArrayDataReturns the row value at the given position.The number of fields is required to correctly extract the row.
-
getBoolean
public boolean getBoolean(int pos)
Description copied from interface:ArrayDataReturns the boolean value at the given position.- Specified by:
getBooleanin interfaceArrayData
-
setBoolean
public void setBoolean(int pos, boolean value)- Specified by:
setBooleanin interfaceTypedSetters
-
setNullBoolean
public void setNullBoolean(int pos)
-
getByte
public byte getByte(int pos)
Description copied from interface:ArrayDataReturns the byte value at the given position.
-
setByte
public void setByte(int pos, byte value)- Specified by:
setBytein interfaceTypedSetters
-
setNullByte
public void setNullByte(int pos)
-
getShort
public short getShort(int pos)
Description copied from interface:ArrayDataReturns the short value at the given position.
-
setShort
public void setShort(int pos, short value)- Specified by:
setShortin interfaceTypedSetters
-
setNullShort
public void setNullShort(int pos)
-
getFloat
public float getFloat(int pos)
Description copied from interface:ArrayDataReturns the float value at the given position.
-
setFloat
public void setFloat(int pos, float value)- Specified by:
setFloatin interfaceTypedSetters
-
setNullFloat
public void setNullFloat(int pos)
-
getDouble
public double getDouble(int pos)
Description copied from interface:ArrayDataReturns the double value at the given position.
-
setDouble
public void setDouble(int pos, double value)- Specified by:
setDoublein interfaceTypedSetters
-
setNullDouble
public void setNullDouble(int pos)
-
setDecimal
public void setDecimal(int pos, DecimalData value, int precision)Description copied from interface:TypedSettersSet the decimal column value.Note: Precision is compact: can call
TypedSetters.setNullAt(int)when decimal is null. Precision is not compact: can not callTypedSetters.setNullAt(int)when decimal is null, must callsetDecimal(pos, null, precision)because we need update var-length-part.- Specified by:
setDecimalin interfaceTypedSetters
-
setTimestamp
public void setTimestamp(int pos, TimestampData value, int precision)Description copied from interface:TypedSettersSet Timestamp value.Note: If precision is compact: can call
TypedSetters.setNullAt(int)when TimestampData value is null. Otherwise: can not callTypedSetters.setNullAt(int)when TimestampData value is null, must callsetTimestamp(pos, null, precision)because we need to update var-length-part.- Specified by:
setTimestampin interfaceTypedSetters
-
anyNull
public boolean anyNull()
-
toBooleanArray
public boolean[] toBooleanArray()
- Specified by:
toBooleanArrayin interfaceArrayData
-
toByteArray
public byte[] toByteArray()
- Specified by:
toByteArrayin interfaceArrayData
-
toShortArray
public short[] toShortArray()
- Specified by:
toShortArrayin interfaceArrayData
-
toIntArray
public int[] toIntArray()
- Specified by:
toIntArrayin interfaceArrayData
-
toLongArray
public long[] toLongArray()
- Specified by:
toLongArrayin interfaceArrayData
-
toFloatArray
public float[] toFloatArray()
- Specified by:
toFloatArrayin interfaceArrayData
-
toDoubleArray
public double[] toDoubleArray()
- Specified by:
toDoubleArrayin interfaceArrayData
-
toObjectArray
public <T> T[] toObjectArray(LogicalType elementType)
-
copy
public BinaryArrayData copy()
-
copy
public BinaryArrayData copy(BinaryArrayData reuse)
-
hashCode
public int hashCode()
- Overrides:
hashCodein classBinarySection
-
fromPrimitiveArray
public static BinaryArrayData fromPrimitiveArray(boolean[] arr)
-
fromPrimitiveArray
public static BinaryArrayData fromPrimitiveArray(byte[] arr)
-
fromPrimitiveArray
public static BinaryArrayData fromPrimitiveArray(short[] arr)
-
fromPrimitiveArray
public static BinaryArrayData fromPrimitiveArray(int[] arr)
-
fromPrimitiveArray
public static BinaryArrayData fromPrimitiveArray(long[] arr)
-
fromPrimitiveArray
public static BinaryArrayData fromPrimitiveArray(float[] arr)
-
fromPrimitiveArray
public static BinaryArrayData fromPrimitiveArray(double[] arr)
-
-