@Public public final class BinaryArray extends BinarySection implements InternalArray, DataSetters
InternalArray
which is backed by MemorySegment
s.
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 BinaryArray
:
[size(int)] + [null bits(4-byte word boundaries)] + [values or offset&length] + [variable length part].
InternalArray.ElementGetter
HIGHEST_FIRST_BIT, HIGHEST_SECOND_TO_EIGHTH_BIT, MAX_FIX_PART_DATA_SIZE, offset, segments, sizeInBytes
Constructor and Description |
---|
BinaryArray() |
Modifier and Type | Method and Description |
---|---|
boolean |
anyNull() |
static int |
calculateFixLengthPartSize(DataType type)
It store real value when type is primitive.
|
static int |
calculateHeaderInBytes(int numFields) |
BinaryArray |
copy() |
BinaryArray |
copy(BinaryArray reuse) |
static BinaryArray |
fromLongArray(InternalArray arr) |
static BinaryArray |
fromLongArray(Long[] arr) |
static BinaryArray |
fromPrimitiveArray(boolean[] arr) |
static BinaryArray |
fromPrimitiveArray(byte[] arr) |
static BinaryArray |
fromPrimitiveArray(double[] arr) |
static BinaryArray |
fromPrimitiveArray(float[] arr) |
static BinaryArray |
fromPrimitiveArray(int[] arr) |
static BinaryArray |
fromPrimitiveArray(long[] arr) |
static BinaryArray |
fromPrimitiveArray(short[] arr) |
InternalArray |
getArray(int pos)
Returns the array value at the given position.
|
byte[] |
getBinary(int pos)
Returns the binary value at the given position.
|
boolean |
getBoolean(int pos)
Returns the boolean value at the given position.
|
byte |
getByte(int pos)
Returns the byte value at the given position.
|
Decimal |
getDecimal(int pos,
int precision,
int scale)
Returns the decimal value at the given position.
|
double |
getDouble(int pos)
Returns the double value at the given position.
|
float |
getFloat(int pos)
Returns the float value at the given position.
|
int |
getInt(int pos)
Returns the integer value at the given position.
|
long |
getLong(int pos)
Returns the long value at the given position.
|
InternalMap |
getMap(int pos)
Returns the map value at the given position.
|
InternalRow |
getRow(int pos,
int numFields)
Returns the row value at the given position.
|
short |
getShort(int pos)
Returns the short value at the given position.
|
BinaryString |
getString(int pos)
Returns the string value at the given position.
|
Timestamp |
getTimestamp(int pos,
int precision)
Returns the timestamp value at the given position.
|
int |
hashCode() |
boolean |
isNullAt(int pos)
Returns true if the element is null at the given position.
|
void |
pointTo(MemorySegment[] segments,
int offset,
int sizeInBytes) |
void |
setBoolean(int pos,
boolean value) |
void |
setByte(int pos,
byte value) |
void |
setDecimal(int pos,
Decimal value,
int precision)
Set the decimal column value.
|
void |
setDouble(int pos,
double value) |
void |
setFloat(int pos,
float value) |
void |
setInt(int pos,
int value) |
void |
setLong(int pos,
long value) |
void |
setNotNullAt(int pos) |
void |
setNullAt(int pos) |
void |
setNullBoolean(int pos) |
void |
setNullByte(int pos) |
void |
setNullDouble(int pos) |
void |
setNullFloat(int pos) |
void |
setNullInt(int pos) |
void |
setNullLong(int pos) |
void |
setNullShort(int pos) |
void |
setShort(int pos,
short value) |
void |
setTimestamp(int pos,
Timestamp value,
int precision)
Set Timestamp value.
|
int |
size()
Returns the number of elements in this array.
|
boolean[] |
toBooleanArray() |
byte[] |
toByteArray() |
double[] |
toDoubleArray() |
float[] |
toFloatArray() |
int[] |
toIntArray() |
long[] |
toLongArray() |
<T> T[] |
toObjectArray(DataType elementType) |
short[] |
toShortArray() |
equals, getOffset, getSegments, getSizeInBytes, pointTo, toBytes
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
createElementGetter
public static int calculateHeaderInBytes(int numFields)
public static int calculateFixLengthPartSize(DataType type)
public int size()
InternalArray
size
in interface InternalArray
public void pointTo(MemorySegment[] segments, int offset, int sizeInBytes)
pointTo
in class BinarySection
public boolean isNullAt(int pos)
DataGetters
isNullAt
in interface DataGetters
public void setNullAt(int pos)
setNullAt
in interface DataSetters
public void setNotNullAt(int pos)
public long getLong(int pos)
DataGetters
getLong
in interface DataGetters
public void setLong(int pos, long value)
setLong
in interface DataSetters
public void setNullLong(int pos)
public int getInt(int pos)
DataGetters
getInt
in interface DataGetters
public void setInt(int pos, int value)
setInt
in interface DataSetters
public void setNullInt(int pos)
public BinaryString getString(int pos)
DataGetters
getString
in interface DataGetters
public Decimal getDecimal(int pos, int precision, int scale)
DataGetters
The precision and scale are required to determine whether the decimal value was stored in
a compact representation (see Decimal
).
getDecimal
in interface DataGetters
public Timestamp getTimestamp(int pos, int precision)
DataGetters
The precision is required to determine whether the timestamp value was stored in a compact
representation (see Timestamp
).
getTimestamp
in interface DataGetters
public byte[] getBinary(int pos)
DataGetters
getBinary
in interface DataGetters
public InternalArray getArray(int pos)
DataGetters
getArray
in interface DataGetters
public InternalMap getMap(int pos)
DataGetters
getMap
in interface DataGetters
public InternalRow getRow(int pos, int numFields)
DataGetters
The number of fields is required to correctly extract the row.
getRow
in interface DataGetters
public boolean getBoolean(int pos)
DataGetters
getBoolean
in interface DataGetters
public void setBoolean(int pos, boolean value)
setBoolean
in interface DataSetters
public void setNullBoolean(int pos)
public byte getByte(int pos)
DataGetters
getByte
in interface DataGetters
public void setByte(int pos, byte value)
setByte
in interface DataSetters
public void setNullByte(int pos)
public short getShort(int pos)
DataGetters
getShort
in interface DataGetters
public void setShort(int pos, short value)
setShort
in interface DataSetters
public void setNullShort(int pos)
public float getFloat(int pos)
DataGetters
getFloat
in interface DataGetters
public void setFloat(int pos, float value)
setFloat
in interface DataSetters
public void setNullFloat(int pos)
public double getDouble(int pos)
DataGetters
getDouble
in interface DataGetters
public void setDouble(int pos, double value)
setDouble
in interface DataSetters
public void setNullDouble(int pos)
public void setDecimal(int pos, Decimal value, int precision)
DataSetters
Note: Precision is compact: can call DataSetters.setNullAt(int)
when decimal is null. Precision is
not compact: can not call DataSetters.setNullAt(int)
when decimal is null, must call setDecimal(pos, null, precision)
because we need update var-length-part.
setDecimal
in interface DataSetters
public void setTimestamp(int pos, Timestamp value, int precision)
DataSetters
Note: If precision is compact: can call DataSetters.setNullAt(int)
when TimestampData value is
null. Otherwise: can not call DataSetters.setNullAt(int)
when TimestampData value is null, must call
setTimestamp(pos, null, precision)
because we need to update var-length-part.
setTimestamp
in interface DataSetters
public boolean anyNull()
public boolean[] toBooleanArray()
toBooleanArray
in interface InternalArray
public byte[] toByteArray()
toByteArray
in interface InternalArray
public short[] toShortArray()
toShortArray
in interface InternalArray
public int[] toIntArray()
toIntArray
in interface InternalArray
public long[] toLongArray()
toLongArray
in interface InternalArray
public float[] toFloatArray()
toFloatArray
in interface InternalArray
public double[] toDoubleArray()
toDoubleArray
in interface InternalArray
public <T> T[] toObjectArray(DataType elementType)
public BinaryArray copy()
public BinaryArray copy(BinaryArray reuse)
public int hashCode()
hashCode
in class BinarySection
public static BinaryArray fromPrimitiveArray(boolean[] arr)
public static BinaryArray fromPrimitiveArray(byte[] arr)
public static BinaryArray fromPrimitiveArray(short[] arr)
public static BinaryArray fromPrimitiveArray(int[] arr)
public static BinaryArray fromPrimitiveArray(long[] arr)
public static BinaryArray fromPrimitiveArray(float[] arr)
public static BinaryArray fromPrimitiveArray(double[] arr)
public static BinaryArray fromLongArray(Long[] arr)
public static BinaryArray fromLongArray(InternalArray arr)
Copyright © 2023–2024 The Apache Software Foundation. All rights reserved.