Interface DynamicTableSink.Context

Enclosing interface:
DynamicTableSink

@PublicEvolving public static interface DynamicTableSink.Context
Context for creating runtime implementation via a DynamicTableSink.SinkRuntimeProvider.

It offers utilities by the planner for creating runtime implementation with minimal dependencies to internal data structures.

Methods should be called in DynamicTableSink.getSinkRuntimeProvider(Context). The returned instances are Serializable and can be directly passed into the runtime implementation class.

  • Method Details

    • isBounded

      boolean isBounded()
      Returns whether a runtime implementation can expect a finite number of rows.

      This information might be derived from the session's execution mode and/or kind of query.

    • createTypeInformation

      <T> org.apache.flink.api.common.typeinfo.TypeInformation<T> createTypeInformation(DataType consumedDataType)
      Creates type information describing the internal data structures of the given DataType.
      See Also:
    • createTypeInformation

      <T> org.apache.flink.api.common.typeinfo.TypeInformation<T> createTypeInformation(LogicalType consumedLogicalType)
      Creates type information describing the internal data structures of the given LogicalType.
    • createDataStructureConverter

      DynamicTableSink.DataStructureConverter createDataStructureConverter(DataType consumedDataType)
      Creates a converter for mapping between Flink's internal data structures and objects specified by the given DataType that can be passed into a runtime implementation.

      For example, RowData and its fields can be converted into a Row, or the internal representation for structured types can be converted back into the original (possibly nested) POJO.

      See Also:
    • getTargetColumns

      Optional<int[][]> getTargetColumns()
      Returns an Optional array of column index paths related to user specified target column list or Optional.empty() when not specified. The array indices are 0-based and support composite columns within (possibly nested) structures.

      This information comes from the column list of the DML clause, e.g., for a sink table t1 which schema is: a STRING, b ROW < b1 INT, b2 STRING>, c BIGINT

      • insert: 'insert into t1(a, b.b2) ...', the column list will be 'a, b.b2', and will return [[0], [1, 1]]. The statement 'insert into t1 select ...' without specifying a column list will return Optional.empty().
      • update: 'update t1 set a=1, b.b1=2 where ...', the column list will be 'a, b.b1', and will return [[0], [1, 0]].

      Note: will always return empty for the delete statement because it has no column list.