v3.11.0 — B51 CTE 間 JOIN 誤結果 修正 + B52 CTE 列別名インライン化 unknown field 修正
CTE 関連の2つの正しさバグ修正(両方 SemVer=minor)。B6(KLIKE 外部結合)の回避策検討中に実データ検証で発見。全2,718テスト green・本番 kintone 実データで確認。
B51 — 複数 CTE の CTE 間 JOIN が誤結果を返す(silent wrong results・優先度高)
2つ以上の CTE を CTE 同士で JOIN すると左 CTE の列が空・行重複・LEFT 未一致行欠落(誤った結果を静かに返す)。原因=CTE/一時テーブル参照が明示 alias なしだと alias:null→最終 JOIN の Map が null キー衝突で片側上書き+修飾キー欠落で空文字直積。修正=effectiveTableAlias = alias ?? cteName を識別・JOIN・WHERE/SELECT/ORDER/GROUP/メタ解決に一貫適用(明示 alias 優先・SELECT * 出力は非修飾維持)+alias 衝突/cache miss を fail-closed+applyJoin が空文字値と構造的キー欠落を区別してエラー化。
B52 — 単一 CTE の列別名がインライン化で解決されず unknown field(error)
WITH a AS (SELECT レコード番号 AS aid FROM APPx) SELECT a.aid FROM a が unknown field。原因=canInlineSingleCte が CTE 出力別名を考慮せずインライン化。修正=インライン化を SELECT */別名なし単純フィールド/同名別名のみに限定し、改名列別名・式・リテラル・関数・CASE ありの CTE は実体化(B51 の effective alias で正しく解決)。SELECT */同名フィールド CTE のインライン+WHERE 押し下げは維持。
実機(本番 kintone・APP730)
- B51: CTE 間 INNER JOIN が正しく2行(左列も正しい値)・LEFT で未一致行を NULL 保持・SELECT * 非回帰。
- B52: 別名 CTE の参照・算術式 CTE が正しく実体化・SELECT * CTE はインライン+WHERE 押し下げ維持。
アセット
- ksql-plugin-v3.11.0.zip — kintone プラグイン
- ksql-mcp.js — MCP サーバー(single-file bundle)
- ksql-mcp.mcpb — MCP Bundle
詳細は CHANGELOG.md を参照。