Class EnrichedRowData

  • All Implemented Interfaces:
    RowData

    @Internal
    public class EnrichedRowData
    extends Object
    implements RowData
    An implementation of RowData which is backed by two RowData with a well-defined index mapping, One of the rows is fixed, while the other can be swapped for performant changes in hot code paths. The RowKind is inherited from the mutable row.
    • Constructor Detail

      • EnrichedRowData

        public EnrichedRowData​(RowData fixedRow,
                               int[] indexMapping)
    • Method Detail

      • replaceMutableRow

        public EnrichedRowData replaceMutableRow​(RowData mutableRow)
        Replaces the mutable RowData backing this EnrichedRowData.

        This method replaces the mutable row data in place and does not return a new object. This is done for performance reasons.

      • getArity

        public int getArity()
        Description copied from interface: RowData
        Returns the number of fields in this row.

        The number does not include RowKind. It is kept separately.

        Specified by:
        getArity in interface RowData
      • getRowKind

        public RowKind getRowKind()
        Description copied from interface: RowData
        Returns the kind of change that this row describes in a changelog.
        Specified by:
        getRowKind in interface RowData
        See Also:
        RowKind
      • setRowKind

        public void setRowKind​(RowKind kind)
        Description copied from interface: RowData
        Sets the kind of change that this row describes in a changelog.
        Specified by:
        setRowKind in interface RowData
        See Also:
        RowKind
      • isNullAt

        public boolean isNullAt​(int pos)
        Description copied from interface: RowData
        Returns true if the field is null at the given position.
        Specified by:
        isNullAt in interface RowData
      • getBoolean

        public boolean getBoolean​(int pos)
        Description copied from interface: RowData
        Returns the boolean value at the given position.
        Specified by:
        getBoolean in interface RowData
      • getByte

        public byte getByte​(int pos)
        Description copied from interface: RowData
        Returns the byte value at the given position.
        Specified by:
        getByte in interface RowData
      • getShort

        public short getShort​(int pos)
        Description copied from interface: RowData
        Returns the short value at the given position.
        Specified by:
        getShort in interface RowData
      • getInt

        public int getInt​(int pos)
        Description copied from interface: RowData
        Returns the integer value at the given position.
        Specified by:
        getInt in interface RowData
      • getLong

        public long getLong​(int pos)
        Description copied from interface: RowData
        Returns the long value at the given position.
        Specified by:
        getLong in interface RowData
      • getFloat

        public float getFloat​(int pos)
        Description copied from interface: RowData
        Returns the float value at the given position.
        Specified by:
        getFloat in interface RowData
      • getDouble

        public double getDouble​(int pos)
        Description copied from interface: RowData
        Returns the double value at the given position.
        Specified by:
        getDouble in interface RowData
      • getString

        public StringData getString​(int pos)
        Description copied from interface: RowData
        Returns the string value at the given position.
        Specified by:
        getString in interface RowData
      • getDecimal

        public DecimalData getDecimal​(int pos,
                                      int precision,
                                      int scale)
        Description copied from interface: RowData
        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).

        Specified by:
        getDecimal in interface RowData
      • getTimestamp

        public TimestampData getTimestamp​(int pos,
                                          int precision)
        Description copied from interface: RowData
        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).

        Specified by:
        getTimestamp in interface RowData
      • getRawValue

        public <T> RawValueData<T> getRawValue​(int pos)
        Description copied from interface: RowData
        Returns the raw value at the given position.
        Specified by:
        getRawValue in interface RowData
      • getBinary

        public byte[] getBinary​(int pos)
        Description copied from interface: RowData
        Returns the binary value at the given position.
        Specified by:
        getBinary in interface RowData
      • getArray

        public ArrayData getArray​(int pos)
        Description copied from interface: RowData
        Returns the array value at the given position.
        Specified by:
        getArray in interface RowData
      • getMap

        public MapData getMap​(int pos)
        Description copied from interface: RowData
        Returns the map value at the given position.
        Specified by:
        getMap in interface RowData
      • getRow

        public RowData getRow​(int pos,
                              int numFields)
        Description copied from interface: RowData
        Returns the row value at the given position.

        The number of fields is required to correctly extract the row.

        Specified by:
        getRow in interface RowData
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • from

        public static EnrichedRowData from​(RowData fixedRow,
                                           List<String> producedRowFields,
                                           List<String> mutableRowFields,
                                           List<String> fixedRowFields)
        Creates a new EnrichedRowData with the provided fixedRow as the immutable static row, and uses the producedRowFields, fixedRowFields and mutableRowFields arguments to compute the indexes mapping.

        The producedRowFields should include the name of fields of the full row once mutable and fixed rows are merged, while fixedRowFields and mutableRowFields should contain respectively the field names of fixed row and mutable row. All the lists are ordered with indexes matching the position of the field in the row. As an example, for a complete row (a, b, c) the mutable row might be (a, c) and the fixed row might be (b)