本文为您介绍修改SQL除Query、Source和Sink之外的其他限制。

  • 当前作业的Flink版本和产生Checkpoint或Savepoint对应作业的Flink版本要求相同,不同的Flink版本当前不支持状态兼容性检查。
  • 当前作业的依赖和产生Checkpoint或Savepoint对应作业的依赖要求能兼容。当前系统无法识别自定义Connector、自定义函数依赖的状态的兼容性变化,需要您自己保证。
  • 当前只支持单个的修改,包括只修改会影响状态计算的Where条件、只修改统计指标(Aggregate Function)、只修改Sink。
    -- 原始SQL。
    create table MyTable (
      a int,
      b bigint,
      c varchar
    );
    
    create table MySink (
      a int,
      b bigint,
      c varchar
    ) with (
      'connector' = 'print'
    );
    
    insert into MySink select a, sum(b), max(c) from MyTable group by a;
    
    
    -- 修改Sink表:MySink -> MySink2,和修改统计函数:max(c) -> min(c),该修改属于无法判断的修改。
    create table MySink2 (
      a int,
      b bigint,
      c varchar
    ) with (
      'connector' = 'print'
    );
    
    insert into MySink2 select a, sum(b), min(c) from MyTable group by a;
    
    -- 添加Where条件:a > 10,和修改统计函数:max(c) -> min(c),该修改属于无法判断的修改。
    insert into MySink
    select a, sum(b), min(c) from (
      select * from MyTable where a > 10
    ) group by a;
  • 不支持新增全新状态的Query ,当前修改属于不兼容修改。
    -- 原始SQL。
    create table MyTable (
      a int,
      b bigint,
      c varchar
    );
    
    create table MySink (
      a int,
      b bigint,
      c varchar
    ) with (
      'connector' = 'print'
    );
    
    insert into MySink select a, b, c from MyTable;
    
    -- 新增group aggregate query,当前修改属于不兼容修改。
    insert into MySink select a, sum(b), min(c) from MyTable group by a;