本文为您介绍Union All修改的可兼容性和不可兼容性详情。

可兼容的修改

调整Union All的输入Query的顺序,对下游有状态算子属于完全兼容修改。
create table MyTable2 (
  a int,
  b bigint,
  c varchar,
  d int
);

-- 原始SQL。
select a, sum(b), max(c) from (
  select a, b, c from MyTable union all select a, b, c from MyTable2
) group by a;


--调整Union All的输入Query的顺序,该修改属于完全兼容修改。
select a, sum(b), max(c) from (
  select a, b, c from MyTable2 union all select a, b, c from MyTable
) group by a;

不兼容的修改

添加或删除Union All的输入Query,对下游有状态算子属于不兼容性修改。
create table MyTable2 (
  a int,
  b bigint,
  c varchar,
  d int
);

-- 原始SQL。
select a, sum(b), max(c) from (
  select a, b, c from MyTable union all select a, b, c from MyTable2
) group by a;

create table MyTable3 (
  a int,
  b bigint,
  c varchar,
  d int
);

-- 添加Union All的输入Query,该修改属于不兼容修改。
select a, sum(b), max(c) from (
  select a, b, c from MyTable
  union all
  select a, b, c from MyTable2
  union all
  select a, b, c from MyTable3
) group by a;