Interface SupportsProjectionPushDown
-
@PublicEvolving public interface SupportsProjectionPushDownEnables to push down a (possibly nested) projection into aScanTableSource.Given the following SQL:
CREATE TABLE t (i INT, r ROW < d DOUBLE, b BOOLEAN>, s STRING); SELECT s, r.d FROM t;In the above example,
r.dandsare required fields. Other fields can be skipped in a projection. Compared to table's schema, fields are reordered.By default, if this interface is not implemented, a projection is applied in a subsequent operation after the source.
For efficiency, a source can push a projection further down in order to be close to the actual data generation. A projection is only selecting fields that are used by a query (possibly in a different field order). It does not contain any computation. A projection can either be performed on the fields of the top-level row only or consider nested fields as well (see
supportsNestedProjection()).- See Also:
Projection,ProjectedRowData
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description voidapplyProjection(int[][] projectedFields, DataType producedDataType)Provides the field index paths that should be used for a projection.booleansupportsNestedProjection()Returns whether this source supports nested projection.
-
-
-
Method Detail
-
supportsNestedProjection
boolean supportsNestedProjection()
Returns whether this source supports nested projection.
-
applyProjection
void applyProjection(int[][] projectedFields, DataType producedDataType)Provides the field index paths that should be used for a projection. The indices are 0-based and support fields within (possibly nested) structures if this is enabled viasupportsNestedProjection().In the example mentioned in
SupportsProjectionPushDown, this method would receive:[[2], [1]]which is equivalent to[["s"], ["r"]]ifsupportsNestedProjection()returns false.[[2], [1, 0]]which is equivalent to[["s"], ["r", "d"]]]ifsupportsNestedProjection()returns true.
Note: Use the passed data type instead of
ResolvedSchema.toPhysicalRowDataType()for describing the final output data type when creatingTypeInformation.- Parameters:
projectedFields- field index paths of all fields that must be present in the physically produced dataproducedDataType- the final output type of the source, with the projection applied
-
-