このトピックでは、デプロイメントの SQL ステートメントで UNION ALL を変更した後、デプロイメントと状態データ間の互換性がどのように影響を受けるかについて説明します。
互換性に影響を与えない、または部分的に影響を与える変更
UNION ALL で入力クエリの順序を変更します。この変更は、ダウンストリームのステートフル演算子の状態データの互換性には影響しません。
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 で入力クエリの順序を変更します。この変更後も、デプロイメントは状態データと完全に互換性があります。
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 に入力クエリを追加、または UNION ALL から入力クエリを削除します。この変更は、ダウンストリームのステートフル演算子の状態データの非互換性を引き起こします。
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 に入力クエリを追加します。この変更後、デプロイメントは状態データと互換性がなくなります。
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;