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: 52
Message: Re: Row pattern recognition
From 6d9b5e9b94e2f868f62c5b0dba48b246cd9c051a 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)