Incomplete plan to get rid of the legacy in Table API, including:
Factory
stackflink-table-tests
module whenever is possibleTableSink
and TableSource
This task can be further splitted in:
TableSink
and TableSource
. There should be already implementations replacing the legacy ones, except for:
CassandraAppendTableSink
. Discuss with cassandra maintainers.ArrowTableSource
and related PythonInputFormatTableSource
. Discuss with python maintainers.DynamicTableSourceFactory
and DynamicTableSinkFactory
. Note that some of the test utilities are already provided in the new stack, e.g. CollectionTableSource
and GeneratorTableSource
sounds like overcomplicated mocks of connectors we already support natively in the new stackTableSink
and TableSource
. This will involve removing entire tests, e.g. LegacyTableSinkITCase
which is merely testing the old stack.TableSink
and TableSource
.I suggest in step 2 to port the old test implementations of TableSink
/TableSource
without removing the old ones, in order to simplify the execution of step 3. Then, in step 4, all the code now not referenced anymore, can be removed.
TableSink
and TableSource
Remove TableSink
, TableSource
and TableFormatFactory
and cleanup all the code relying on these interfaces until the project compiles.
On the road, you should hit the following things to cleanup:
Table#insertInto
TableEnvironment#insertInto
TableEnvironment#fromTableSource
Operation
nodes, e.g. TableSourceQueryOperation
, UnregisteredSinkModifyOperation
BatchPhysicalLegacySinkRule
, PushPartitionIntoLegacyTableSourceScanRule
.TableFactory
Remove TableFactory
and cleanup all the code relying on it until the project compiles.
Some interfaces are implementing TableFactory
for compatibility reason but should not be cleaned up, e.g. CatalogFactory
, ModuleFactory
.
This involves also cleaning up TableFactoryUtil
and TableFactoryService
.
* Update Scala table and aggregate functions implicits to new stack.
TableFunctionDefinition
, TableEnvironment.registerFunction
This includes all the Table API methods that take strings, e.g. Table.select(String)
or fromDataStream(DataStream<T>, String)
.
This task includes:
ExpressionParser
entrypoint interface, its usages and its implementation.PlannerExpression
treeList of classes:
This task includes:
PlannerExpression
nodes to new type inference, like Extract
, CurrentTimestamp
, ArrayElement
, …PlannerExpressionConverter
.