From c33935aecc31bc25961122e69cd96fd65710ea2a Mon Sep 17 00:00:00 2001 From: Henson Choi Date: Sat, 6 Jun 2026 06:58:01 +0900 Subject: [PATCH 54/68] Test deparse of an inline row pattern window A window spec written inline (OVER (...) with no WINDOW alias) deparses through a different get_window_function_node branch than a named window, and no view exercised it. Add an inline-OVER view to rpr_base and capture its viewdef, covering that path. No code change. --- src/test/regress/expected/rpr_base.out | 23 +++++++++++++++++++++++ src/test/regress/sql/rpr_base.sql | 10 ++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/test/regress/expected/rpr_base.out b/src/test/regress/expected/rpr_base.out index f086ecc9a5d..c50c7a5f6a8 100644 --- a/src/test/regress/expected/rpr_base.out +++ b/src/test/regress/expected/rpr_base.out @@ -2564,6 +2564,29 @@ SELECT pg_get_viewdef('rpr_serial_quoted'::regclass); "Up" AS (val > PREV(val)) ); (1 row) +-- Inline OVER round-trip: inline window spec (no WINDOW alias) deparses inside OVER (...) +CREATE VIEW rpr_serial_inline_over AS +SELECT id, val, + count(*) OVER (ORDER BY id + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + PATTERN (A B+) + DEFINE A AS val > 10, B AS val > PREV(val)) AS cnt +FROM rpr_serial; +SELECT pg_get_viewdef('rpr_serial_inline_over'::regclass); + pg_get_viewdef +---------------------------------------------------------------------------------- + SELECT id, + + val, + + count(*) OVER (ORDER BY id ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + + AFTER MATCH SKIP PAST LAST ROW + + INITIAL + + PATTERN (a b+) + + DEFINE + + a AS (val > 10), + + b AS (val > PREV(val)) ) AS cnt + + FROM rpr_serial; +(1 row) + -- Materialized view (if supported) CREATE TABLE rpr_mview (id INT, val INT); INSERT INTO rpr_mview VALUES (1, 10), (2, 20), (3, 30); diff --git a/src/test/regress/sql/rpr_base.sql b/src/test/regress/sql/rpr_base.sql index e0af7199629..7dfb72f6bfd 100644 --- a/src/test/regress/sql/rpr_base.sql +++ b/src/test/regress/sql/rpr_base.sql @@ -1727,6 +1727,16 @@ WINDOW w AS (ORDER BY id DEFINE "Start" AS TRUE, "Up" AS val > PREV(val)); SELECT pg_get_viewdef('rpr_serial_quoted'::regclass); +-- Inline OVER round-trip: inline window spec (no WINDOW alias) deparses inside OVER (...) +CREATE VIEW rpr_serial_inline_over AS +SELECT id, val, + count(*) OVER (ORDER BY id + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING + PATTERN (A B+) + DEFINE A AS val > 10, B AS val > PREV(val)) AS cnt +FROM rpr_serial; +SELECT pg_get_viewdef('rpr_serial_inline_over'::regclass); + -- Materialized view (if supported) CREATE TABLE rpr_mview (id INT, val INT); -- 2.50.1 (Apple Git-155)