Interface RowData
-
- All Known Implementing Classes:
BinaryRowData
,BoxedWrapperRowData
,ColumnarRowData
,EnrichedRowData
,GenericRowData
,JoinedRowData
,NestedRowData
,ProjectedRowData
,UpdatableRowData
@PublicEvolving public interface RowData
Base interface for an internal data structure representing data ofRowType
and other (possibly nested) structured types such asStructuredType
in the table ecosystem.All top-level records that are travelling through Table API or SQL pipelines during runtime are instances of this interface. Each
RowData
contains aRowKind
which represents the kind of change that a row describes in a changelog. TheRowKind
is just metadata information of row and thus not part of the table's schema, i.e., not a dedicated field.Note: All fields of this data structure must be internal data structures.
The
RowData
interface has different implementations which are designed for different scenarios:- The binary-oriented implementation
BinaryRowData
is backed by references toMemorySegment
instead of using Java objects to reduce the serialization/deserialization overhead. - The object-oriented implementation
GenericRowData
is backed by an array of JavaObject
which is easy to construct and efficient to update.
GenericRowData
is intended for public use and has stable behavior. It is recommended to construct instances ofRowData
with this class if internal data structures are required.The mappings from Flink's Table API and SQL data types to the internal data structures are listed in the following table:
+--------------------------------+-----------------------------------------+ | SQL Data Types | Internal Data Structures | +--------------------------------+-----------------------------------------+ | BOOLEAN | boolean | +--------------------------------+-----------------------------------------+ | CHAR / VARCHAR / STRING |
StringData
| +--------------------------------+-----------------------------------------+ | BINARY / VARBINARY / BYTES | byte[] | +--------------------------------+-----------------------------------------+ | DECIMAL |DecimalData
| +--------------------------------+-----------------------------------------+ | TINYINT | byte | +--------------------------------+-----------------------------------------+ | SMALLINT | short | +--------------------------------+-----------------------------------------+ | INT | int | +--------------------------------+-----------------------------------------+ | BIGINT | long | +--------------------------------+-----------------------------------------+ | FLOAT | float | +--------------------------------+-----------------------------------------+ | DOUBLE | double | +--------------------------------+-----------------------------------------+ | DATE | int (number of days since epoch) | +--------------------------------+-----------------------------------------+ | TIME | int (number of milliseconds of the day) | +--------------------------------+-----------------------------------------+ | TIMESTAMP |TimestampData
| +--------------------------------+-----------------------------------------+ | TIMESTAMP WITH LOCAL TIME ZONE |TimestampData
| +--------------------------------+-----------------------------------------+ | INTERVAL YEAR TO MONTH | int (number of months) | +--------------------------------+-----------------------------------------+ | INTERVAL DAY TO MONTH | long (number of milliseconds) | +--------------------------------+-----------------------------------------+ | ROW / structured types |RowData
| +--------------------------------+-----------------------------------------+ | ARRAY |ArrayData
| +--------------------------------+-----------------------------------------+ | MAP / MULTISET |MapData
| +--------------------------------+-----------------------------------------+ | RAW |RawValueData
| +--------------------------------+-----------------------------------------+Nullability is always handled by the container data structure.
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static interface
RowData.FieldGetter
Accessor for getting the field of a row during runtime.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Modifier and Type Method Description static RowData.FieldGetter
createFieldGetter(LogicalType fieldType, int fieldPos)
Creates an accessor for getting elements in an internal row data structure at the given position.int
getArity()
Returns the number of fields in this row.ArrayData
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.DecimalData
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.MapData
getMap(int pos)
Returns the map value at the given position.<T> RawValueData<T>
getRawValue(int pos)
Returns the raw value at the given position.RowData
getRow(int pos, int numFields)
Returns the row value at the given position.RowKind
getRowKind()
Returns the kind of change that this row describes in a changelog.short
getShort(int pos)
Returns the short value at the given position.StringData
getString(int pos)
Returns the string value at the given position.TimestampData
getTimestamp(int pos, int precision)
Returns the timestamp value at the given position.boolean
isNullAt(int pos)
Returns true if the field is null at the given position.void
setRowKind(RowKind kind)
Sets the kind of change that this row describes in a changelog.
-
-
-
Method Detail
-
getArity
int getArity()
Returns the number of fields in this row.The number does not include
RowKind
. It is kept separately.
-
getRowKind
RowKind getRowKind()
Returns the kind of change that this row describes in a changelog.- See Also:
RowKind
-
setRowKind
void setRowKind(RowKind kind)
Sets the kind of change that this row describes in a changelog.- See Also:
RowKind
-
isNullAt
boolean isNullAt(int pos)
Returns true if the field is null at the given position.
-
getBoolean
boolean getBoolean(int pos)
Returns the boolean value at the given position.
-
getByte
byte getByte(int pos)
Returns the byte value at the given position.
-
getShort
short getShort(int pos)
Returns the short value at the given position.
-
getInt
int getInt(int pos)
Returns the integer value at the given position.
-
getLong
long getLong(int pos)
Returns the long value at the given position.
-
getFloat
float getFloat(int pos)
Returns the float value at the given position.
-
getDouble
double getDouble(int pos)
Returns the double value at the given position.
-
getString
StringData getString(int pos)
Returns the string value at the given position.
-
getDecimal
DecimalData getDecimal(int pos, int precision, int scale)
Returns 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
).
-
getTimestamp
TimestampData getTimestamp(int pos, int precision)
Returns 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
).
-
getRawValue
<T> RawValueData<T> getRawValue(int pos)
Returns the raw value at the given position.
-
getBinary
byte[] getBinary(int pos)
Returns the binary value at the given position.
-
getArray
ArrayData getArray(int pos)
Returns the array value at the given position.
-
getMap
MapData getMap(int pos)
Returns the map value at the given position.
-
getRow
RowData getRow(int pos, int numFields)
Returns the row value at the given position.The number of fields is required to correctly extract the row.
-
createFieldGetter
static RowData.FieldGetter createFieldGetter(LogicalType fieldType, int fieldPos)
Creates an accessor for getting elements in an internal row data structure at the given position.- Parameters:
fieldType
- the element type of the rowfieldPos
- the element position of the row
-
-