变更Source
本文为您介绍Source变更的可兼容性和不可兼容性详情。
背景信息
当前Create Table DDL的Schema部分的变更,需要根据使用该表的Query的变化来判断整体的兼容性。With属性中除了Connector的类型,其他的属性暂不进行兼容性检查。
可兼容的变更
字段的修改不影响下游算子的兼容性,属于完全或部分兼容变更。
-- 原始SQL。
create table MyTable (
a int,
b bigint,
c varchar
) with (
'connector'='datagen'
);
select a, sum(b), max(c) from MyTable group by a;
-- 新增字段:d,该修改属于完全兼容变更。
-- Query中未使用到字段d。
create table MyTable (
a int,
b bigint,
c varchar,
d int
) with (
'connector'='datagen'
);
select a, sum(b), max(c) from MyTable group by a;
-- 修改字段:b -> b as d + 1,该修改属于部分兼容变更。
-- max(c) 的计算结果不受影响。b列发生变化,因此原始的sum(b)被认为删除。
-- 其对应的状态数据会被丢弃,新的sum(b)被认为新增指标,其值在作业启动时开始计算。
create table MyTable (
a int,
d bigint,
c varchar,
b as d + 1
) with (
'connector'='datagen'
);
select a, sum(b), max(c) from MyTable group by a;
不兼容的变更
修改Connector类型属于不兼容变更。
-- 原始SQL。 create table MyTable ( a int, b bigint, c varchar ) with ( 'connector'='datagen' ); select a, sum(b), max(c) from MyTable group by a; -- Connnector类型变化:datagen -> kafka,该修改属于不兼容修改。 create table MyTable ( a int, b bigint, c varchar ) with ( 'connector'='kafka', ... ); select a, sum(b), max(c) from MyTable group by a;
修改表名属于不兼容变更。
-- 原始SQL。 create table MyTable ( a int, b bigint, c varchar ) with ( 'connector'='datagen' ); select a, sum(b), max(c) from MyTable group by a; -- 表名类型变化:MyTable -> MyTable2,该修改属于不兼容修改。 create table MyTable2 ( a int, b bigint, c varchar ) with ( 'connector'='datagen' ); select a, sum(b), max(c) from MyTable2 group by a;
字段的修改,且影响下游算子的兼容性,该修改属于不兼容变更。
-- 原始SQL。 create table MyTable1 ( a int, b bigint ) with ( 'connector'='datagen' ); create table MyTable2 ( c int, d bigint ) with ( 'connector'='datagen' ); select * from MyTable1 join MyTable2 on c = d; -- MyTable2中新增e字段,该修改属于不兼容变更。 -- join要求其输入的字段不能修改。 create table MyTable1 ( a int, b bigint ) with ( 'connector'='datagen' ); create table MyTable2 ( c int, d bigint, e varchar ) with ( 'connector'='datagen' ); -- 原始SQL。 select * from MyTable1 join MyTable2 on c = d;