Hi, > So what I actually need to do is *remove* part which executes `if > (IsA(plan, JsonTablePathScan))` branch since now it is executed > without the patch. I will submit an updated version.
Here is the simplified patch. -- Best regards, Aleksander Alekseev
From 6537c04eafe9c0f53d37b468da954cd72ed08c34 Mon Sep 17 00:00:00 2001 From: Aleksander Alekseev <[email protected]> Date: Fri, 10 Jul 2026 16:27:54 +0300 Subject: [PATCH v3] Improve get_json_table_plan() test coverage Add a test with PLAN (p OUTER (p1 CROSS p2)). CROSS makes the plan non-default so get_json_table_plan() is reached, and the JsonTableSiblingJoin branch is exercised. Author: Aleksander Alekseev <[email protected]> Reviewed-by: Jonathan Gonzalez V. <[email protected]> Discussion: https://postgr.es/m/caj7c6tp0kgan1hjtj1pytqvf0vyr+ce01oax9li_upgdg2n...@mail.gmail.com --- .../regress/expected/sqljson_jsontable.out | 28 +++++++++++++++++++ src/test/regress/sql/sqljson_jsontable.sql | 12 ++++++++ 2 files changed, 40 insertions(+) diff --git a/src/test/regress/expected/sqljson_jsontable.out b/src/test/regress/expected/sqljson_jsontable.out index ae64dbed303..58c739dd312 100644 --- a/src/test/regress/expected/sqljson_jsontable.out +++ b/src/test/regress/expected/sqljson_jsontable.out @@ -1926,3 +1926,31 @@ CREATE OR REPLACE VIEW public.json_table_view_on_empty AS ) ERROR ON ERROR ) DROP VIEW json_table_view_on_empty; +-- Test that JSON_TABLE with an explicit CROSS plan is correctly reproduced +-- in a view definition. +CREATE VIEW jt_plan_outer_cross AS +SELECT * FROM JSON_TABLE( + jsonb 'null', '$' AS p + COLUMNS (NESTED PATH '$[*]' AS p1 COLUMNS (a int), + NESTED PATH '$[*]' AS p2 COLUMNS (b int)) + PLAN (p OUTER (p1 CROSS p2)) +); +\sv jt_plan_outer_cross +CREATE OR REPLACE VIEW public.jt_plan_outer_cross AS + SELECT a, + b + FROM JSON_TABLE( + 'null'::jsonb, '$' AS p + COLUMNS ( + NESTED PATH '$[*]' AS p1 + COLUMNS ( + a integer PATH '$."a"' + ), + NESTED PATH '$[*]' AS p2 + COLUMNS ( + b integer PATH '$."b"' + ) + ) + PLAN (p OUTER (p1 CROSS p2)) + ) +DROP VIEW jt_plan_outer_cross; diff --git a/src/test/regress/sql/sqljson_jsontable.sql b/src/test/regress/sql/sqljson_jsontable.sql index 2a33aaec57f..97d8f85aeb1 100644 --- a/src/test/regress/sql/sqljson_jsontable.sql +++ b/src/test/regress/sql/sqljson_jsontable.sql @@ -1052,3 +1052,15 @@ SELECT * FROM JSON_TABLE(jsonb '{}', '$' AS p0 \sv json_table_view_on_empty; DROP VIEW json_table_view_on_empty; + +-- Test that JSON_TABLE with an explicit CROSS plan is correctly reproduced +-- in a view definition. +CREATE VIEW jt_plan_outer_cross AS +SELECT * FROM JSON_TABLE( + jsonb 'null', '$' AS p + COLUMNS (NESTED PATH '$[*]' AS p1 COLUMNS (a int), + NESTED PATH '$[*]' AS p2 COLUMNS (b int)) + PLAN (p OUTER (p1 CROSS p2)) +); +\sv jt_plan_outer_cross +DROP VIEW jt_plan_outer_cross; -- 2.43.0
