@Internal public class JdbcDynamicTableSource extends Object implements ScanTableSource, LookupTableSource, SupportsProjectionPushDown, SupportsLimitPushDown
DynamicTableSource
for JDBC.ScanTableSource.ScanContext, ScanTableSource.ScanRuntimeProvider
LookupTableSource.LookupContext, LookupTableSource.LookupRuntimeProvider
DynamicTableSource.Context, DynamicTableSource.DataStructureConverter
Constructor and Description |
---|
JdbcDynamicTableSource(JdbcConnectorOptions options,
JdbcReadOptions readOptions,
int lookupMaxRetryTimes,
LookupCache cache,
DataType physicalRowDataType) |
Modifier and Type | Method and Description |
---|---|
void |
applyLimit(long limit)
Provides the expected maximum number of produced records for limiting on a best-effort basis.
|
void |
applyProjection(int[][] projectedFields,
DataType producedDataType)
Provides the field index paths that should be used for a projection.
|
String |
asSummaryString()
Returns a string that summarizes this source for printing to a console or log.
|
DynamicTableSource |
copy()
Creates a copy of this instance during planning.
|
boolean |
equals(Object o) |
ChangelogMode |
getChangelogMode()
Returns the set of changes that the planner can expect during runtime.
|
LookupTableSource.LookupRuntimeProvider |
getLookupRuntimeProvider(LookupTableSource.LookupContext context)
Returns a provider of runtime implementation for reading the data.
|
ScanTableSource.ScanRuntimeProvider |
getScanRuntimeProvider(ScanTableSource.ScanContext runtimeProviderContext)
Returns a provider of runtime implementation for reading the data.
|
int |
hashCode() |
boolean |
supportsNestedProjection()
Returns whether this source supports nested projection.
|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
applyProjection
public JdbcDynamicTableSource(JdbcConnectorOptions options, JdbcReadOptions readOptions, int lookupMaxRetryTimes, @Nullable LookupCache cache, DataType physicalRowDataType)
public LookupTableSource.LookupRuntimeProvider getLookupRuntimeProvider(LookupTableSource.LookupContext context)
LookupTableSource
There exist different interfaces for runtime implementation which is why LookupTableSource.LookupRuntimeProvider
serves as the base interface.
Independent of the provider interface, a source implementation can work on either
arbitrary objects or internal data structures (see org.apache.flink.table.data
for
more information).
The given LookupTableSource.LookupContext
offers utilities by the planner for creating runtime
implementation with minimal dependencies to internal data structures.
getLookupRuntimeProvider
in interface LookupTableSource
LookupFunctionProvider
,
AsyncLookupFunctionProvider
public ScanTableSource.ScanRuntimeProvider getScanRuntimeProvider(ScanTableSource.ScanContext runtimeProviderContext)
ScanTableSource
There might exist different interfaces for runtime implementation which is why ScanTableSource.ScanRuntimeProvider
serves as the base interface. Concrete ScanTableSource.ScanRuntimeProvider
interfaces might be located in other Flink modules.
Independent of the provider interface, the table runtime expects that a source
implementation emits internal data structures (see RowData
for more information).
The given ScanTableSource.ScanContext
offers utilities by the planner for creating runtime
implementation with minimal dependencies to internal data structures.
SourceProvider
is the recommended core interface. SourceFunctionProvider
in flink-table-api-java-bridge
and InputFormatProvider
are available for
backwards compatibility.
getScanRuntimeProvider
in interface ScanTableSource
SourceProvider
public ChangelogMode getChangelogMode()
ScanTableSource
getChangelogMode
in interface ScanTableSource
RowKind
public boolean supportsNestedProjection()
SupportsProjectionPushDown
supportsNestedProjection
in interface SupportsProjectionPushDown
public void applyProjection(int[][] projectedFields, DataType producedDataType)
SupportsProjectionPushDown
SupportsProjectionPushDown.supportsNestedProjection()
.
In the example mentioned in SupportsProjectionPushDown
, this method would receive:
[[2], [1]]
which is equivalent to [["s"], ["r"]]
if SupportsProjectionPushDown.supportsNestedProjection()
returns false.
[[2], [1, 0]]
which is equivalent to [["s"], ["r", "d"]]]
if SupportsProjectionPushDown.supportsNestedProjection()
returns true.
Note: Use the passed data type instead of ResolvedSchema.toPhysicalRowDataType()
for describing the final output data type when creating TypeInformation
.
applyProjection
in interface SupportsProjectionPushDown
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 appliedpublic DynamicTableSource copy()
DynamicTableSource
copy
in interface DynamicTableSource
public String asSummaryString()
DynamicTableSource
asSummaryString
in interface DynamicTableSource
public void applyLimit(long limit)
SupportsLimitPushDown
applyLimit
in interface SupportsLimitPushDown
Copyright © 2014–2024 The Apache Software Foundation. All rights reserved.