Skip to content

RETURNING付きCTEを含むクエリに対するZTD適用方針を整理する #704

@mk3008

Description

@mk3008

概要

RETURNING 付き CTE を含むクエリを、ZTD の考え方でどのように扱うかを整理したい。

ここで重要なのは、ZTD は中間状態を直接テストするものではなく、最終端にあるクエリの観測可能な結果を検証するものである、という前提である。

そのため、RETURNING 付き CTE を含んでいても、最終的に観測対象が明確なクエリへ収束していれば、ZTD へ移植可能であるはずである。

背景

RETURNING 付き CTE は中間 relation を作るため、一見すると ZTD と相性が悪そうに見える。しかし、ZTD が検証するのは中間そのものではなく、最終的な query contract である。

したがって問題は "中間があること" ではなく、以下をどのように定義するかである。

  • 最終的に何を query result とみなすか
  • 副作用を伴うステップをどこまで許容するか
  • ZTD の観測対象を final query result に限定したまま扱えるか

この整理がないまま実装を進めると、解析可能だが ZTD では扱えないケースと、扱えるケースの境界が曖昧になる。

論点

  • RETURNING 付き CTE を含んでいても、最終 SELECT または最終観測結果が明確なら ZTD 化可能とみなせるか
  • 中間 CTE は観測対象ではなく、最終 query contract の構成要素としてのみ扱うべきか
  • pipeline 化された実行形態でも、最終端の query result だけを検証対象とする整理で十分か
  • unsupported case をどこで fail-fast するべきか

受け入れ条件

  • RETURNING 付き CTE を含むクエリのうち、ZTD 適用可能な条件を明文化できる
  • "最終端の query result を検証する" という原則と矛盾しない形で説明できる
  • ZTD 適用可能例と非対応例を最低限提示できる
  • 必要であれば queryspec / entryspec / 実行 contract 側の制約を整理できる

非ゴール

  • 中間 CTE の内部状態そのものを ZTD の直接検証対象にすること
  • すべての multi-step SQL を無条件で ZTD 対応にすること

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions