nocfbot-0054-Test-deparse-of-an-inline-row-pattern-window.txt
text/plain
Filename: nocfbot-0054-Test-deparse-of-an-inline-row-pattern-window.txt
Type: text/plain
Part: 51
Message:
Re: Row pattern recognition
From c33935aecc31bc25961122e69cd96fd65710ea2a Mon Sep 17 00:00:00 2001
From: Henson Choi <assam258@gmail.com>
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)