nocfbot-0066-Tidy-up-row-pattern-recognition-regression-test-c.txt

text/plain

Filename: nocfbot-0066-Tidy-up-row-pattern-recognition-regression-test-c.txt
Type: text/plain
Part: 64
Message: Re: Row pattern recognition
From b90e6b67cc5dd74bb60558a846da0716f223a713 Mon Sep 17 00:00:00 2001
From: Henson Choi <assam258@gmail.com>
Date: Mon, 8 Jun 2026 16:22:16 +0900
Subject: [PATCH 66/68] Tidy up row pattern recognition regression test
 comments

Drop the "-- Expected: ERROR: ..." comments that repeat exact error text
(they go stale; the .out already has the real error) and reword comments
that embedded literal limits.  Rename the "Jacob's Patterns" section and
clarify the serialization section's deparse/re-parse round-trip intent.

Test comments only; rpr_base.out regenerated, no output changes.
---
 src/test/regress/expected/rpr_base.out | 169 +++++++----------------
 src/test/regress/sql/rpr_base.sql      | 184 +++++++------------------
 2 files changed, 102 insertions(+), 251 deletions(-)

diff --git a/src/test/regress/expected/rpr_base.out b/src/test/regress/expected/rpr_base.out
index 1fcb2ce22f0..f1767305d06 100644
--- a/src/test/regress/expected/rpr_base.out
+++ b/src/test/regress/expected/rpr_base.out
@@ -12,7 +12,7 @@
 --   Quantifiers Tests
 --   Navigation Functions Tests
 --   SKIP TO / INITIAL Tests
---   Serialization/Deserialization Tests (objects kept for pg_upgrade/pg_dump)
+--   Serialization/Deserialization Tests
 --   Glued Quantifier / Alternation Tests
 --   Error Cases Tests
 --   Window Deduplication Tests
@@ -34,7 +34,7 @@
 --   Error Limit Tests
 --
 -- Contributed Tests:
---   Jacob's Patterns
+--   Basic Pattern Matching
 --   Pathological Patterns
 -- ============================================================
 SET client_min_messages = WARNING;
@@ -50,6 +50,7 @@ CREATE TABLE rpr_keywords (
     past INT,        -- PAST keyword
     pattern INT,     -- PATTERN keyword
     seek INT,        -- SEEK keyword
+-- ERROR: SEEK is not supported
     skip INT         -- SKIP keyword (pre-existing)
 );
 INSERT INTO rpr_keywords VALUES (1, 10, 20, 30, 40, 50, 60);
@@ -224,7 +225,7 @@ DROP TABLE rpr_auto;
 -- Duplicate variable names
 CREATE TABLE rpr_dup (id INT);
 INSERT INTO rpr_dup VALUES (1), (2);
--- Duplicate DEFINE entries
+-- Duplicate DEFINE variable name is not allowed
 SELECT COUNT(*) OVER w
 FROM rpr_dup
 WINDOW w AS (
@@ -236,12 +237,11 @@ WINDOW w AS (
 ERROR:  DEFINE variable "a" appears more than once
 LINE 7:     DEFINE A AS id > 0, A AS id < 10
                    ^
--- Expected: ERROR: row pattern definition variable name "a" appears more than once in DEFINE clause
 DROP TABLE rpr_dup;
 -- Boolean coercion
 CREATE TABLE rpr_bool (id INT, flag BOOLEAN);
 INSERT INTO rpr_bool VALUES (1, true), (2, false);
--- Non-boolean expression
+-- DEFINE clause must be a boolean expression
 SELECT COUNT(*) OVER w
 FROM rpr_bool
 WINDOW w AS (
@@ -253,7 +253,6 @@ WINDOW w AS (
 ERROR:  argument of DEFINE must be type boolean, not type integer
 LINE 7:     DEFINE A AS id
                         ^
--- Expected: ERROR: argument of DEFINE must be type boolean
 -- Boolean column reference
 SELECT id, flag, COUNT(*) OVER w as cnt
 FROM rpr_bool
@@ -393,8 +392,7 @@ ORDER BY id;
   6 |  30 |   1
 (6 rows)
 
--- Invalid frame start positions
--- Not starting at CURRENT ROW
+-- ERROR: frame must start at current row when row pattern recognition is used
 SELECT COUNT(*) OVER w
 FROM rpr_frame
 WINDOW w AS (
@@ -408,7 +406,6 @@ LINE 5:     ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
             ^
 DETAIL:  Current frame starts with UNBOUNDED PRECEDING.
 HINT:  Use: ROWS BETWEEN CURRENT ROW AND ...
--- Expected: ERROR: FRAME must start at current row when row pattern recognition is used
 -- EXCLUDE options
 -- EXCLUDE not permitted
 SELECT COUNT(*) OVER w
@@ -425,7 +422,6 @@ LINE 6:     EXCLUDE CURRENT ROW
             ^
 DETAIL:  Frame definition includes EXCLUDE CURRENT ROW.
 HINT:  Remove the EXCLUDE clause from the window definition.
--- Expected: ERROR: cannot use EXCLUDE options with row pattern recognition
 -- EXCLUDE GROUP not permitted
 SELECT COUNT(*) OVER w
 FROM rpr_frame
@@ -441,7 +437,6 @@ LINE 6:     EXCLUDE GROUP
             ^
 DETAIL:  Frame definition includes EXCLUDE GROUP.
 HINT:  Remove the EXCLUDE clause from the window definition.
--- Expected: ERROR: cannot use EXCLUDE options with row pattern recognition
 -- EXCLUDE TIES not permitted
 SELECT COUNT(*) OVER w
 FROM rpr_frame
@@ -457,8 +452,7 @@ LINE 6:     EXCLUDE TIES
             ^
 DETAIL:  Frame definition includes EXCLUDE TIES.
 HINT:  Remove the EXCLUDE clause from the window definition.
--- Expected: ERROR: cannot use EXCLUDE options with row pattern recognition
--- RANGE frame not starting at CURRENT ROW
+-- range frame is not allowed with RPR
 SELECT COUNT(*) OVER w
 FROM rpr_frame
 WINDOW w AS (
@@ -471,8 +465,7 @@ ERROR:  cannot use FRAME option RANGE with row pattern recognition
 LINE 5:     RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWIN...
             ^
 HINT:  Use ROWS instead.
--- Expected: ERROR: cannot use FRAME option RANGE with row pattern recognition
--- GROUPS frame not starting at CURRENT ROW
+-- GROUPS frame is not allowed with RPR
 SELECT COUNT(*) OVER w
 FROM rpr_frame
 WINDOW w AS (
@@ -485,8 +478,7 @@ ERROR:  cannot use FRAME option GROUPS with row pattern recognition
 LINE 5:     GROUPS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWI...
             ^
 HINT:  Use ROWS instead.
--- Expected: ERROR: cannot use FRAME option GROUPS with row pattern recognition
--- Starting with N PRECEDING
+-- ERROR: frame must start at current row when row pattern recognition is used
 SELECT COUNT(*) OVER w
 FROM rpr_frame
 WINDOW w AS (
@@ -500,8 +492,7 @@ LINE 5:     ROWS BETWEEN 1 PRECEDING AND UNBOUNDED FOLLOWING
             ^
 DETAIL:  Current frame starts with offset PRECEDING.
 HINT:  Use: ROWS BETWEEN CURRENT ROW AND ...
--- Expected: ERROR: FRAME must start at current row when row pattern recognition is used
--- Starting with N FOLLOWING
+-- ERROR: frame must start at current row with RPR
 SELECT COUNT(*) OVER w
 FROM rpr_frame
 WINDOW w AS (
@@ -515,9 +506,7 @@ LINE 5:     ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING
             ^
 DETAIL:  Current frame starts with offset FOLLOWING.
 HINT:  Use: ROWS BETWEEN CURRENT ROW AND ...
--- Expected: ERROR: FRAME must start at current row when row pattern recognition is used
--- Frame end bound edge cases
--- End before start: CURRENT ROW AND 1 PRECEDING
+-- ERROR: end before start: CURRENT ROW AND 1 PRECEDING
 SELECT COUNT(*) OVER w
 FROM rpr_frame
 WINDOW w AS (
@@ -529,8 +518,7 @@ WINDOW w AS (
 ERROR:  frame starting from current row cannot have preceding rows
 LINE 5:     ROWS BETWEEN CURRENT ROW AND 1 PRECEDING
                                          ^
--- Expected: ERROR: frame starting from current row cannot have preceding rows
--- End before start: CURRENT ROW AND UNBOUNDED PRECEDING
+-- ERROR: end before start: CURRENT ROW AND UNBOUNDED PRECEDING
 SELECT COUNT(*) OVER w
 FROM rpr_frame
 WINDOW w AS (
@@ -542,7 +530,6 @@ WINDOW w AS (
 ERROR:  frame end cannot be UNBOUNDED PRECEDING
 LINE 5:     ROWS BETWEEN CURRENT ROW AND UNBOUNDED PRECEDING
                                          ^
--- Expected: ERROR: frame end cannot be UNBOUNDED PRECEDING
 -- Single row frame: CURRENT ROW AND CURRENT ROW is rejected (the standard
 -- allows only UNBOUNDED FOLLOWING or a positive offset FOLLOWING).
 SELECT id, val, COUNT(*) OVER w as cnt
@@ -559,7 +546,6 @@ ERROR:  cannot use CURRENT ROW as frame end with row pattern recognition
 LINE 5:     ROWS BETWEEN CURRENT ROW AND CURRENT ROW
             ^
 HINT:  Use UNBOUNDED FOLLOWING or a positive offset FOLLOWING.
--- Expected: ERROR: cannot use CURRENT ROW as frame end with row pattern recognition
 -- Zero offset: CURRENT ROW AND 0 FOLLOWING denotes the same one-row frame
 -- and is likewise rejected (caught at execution time).
 SELECT id, val, COUNT(*) OVER w as cnt
@@ -573,7 +559,6 @@ WINDOW w AS (
 )
 ORDER BY id;
 ERROR:  frame ending offset must be positive with row pattern recognition
--- Expected: ERROR: frame ending offset must be positive with row pattern recognition
 -- A non-constant frame end offset is allowed; a zero value is still rejected,
 -- this time at execution time (a literal cannot exercise that path).
 PREPARE rpr_end_offset(int8) AS
@@ -600,7 +585,6 @@ EXECUTE rpr_end_offset(2);
 
 EXECUTE rpr_end_offset(0);
 ERROR:  frame ending offset must be positive with row pattern recognition
--- Expected: ERROR: frame ending offset must be positive with row pattern recognition
 DEALLOCATE rpr_end_offset;
 -- Large offset: CURRENT ROW AND 1000 FOLLOWING
 SELECT id, val, COUNT(*) OVER w as cnt
@@ -669,7 +653,7 @@ ORDER BY id;
   6 |  30 |   1
 (6 rows)
 
--- RANGE frame with RPR (not permitted)
+-- range frame is not allowed with RPR
 SELECT id, val, COUNT(*) OVER w as cnt
 FROM rpr_frame
 WINDOW w AS (
@@ -684,7 +668,6 @@ ERROR:  cannot use FRAME option RANGE with row pattern recognition
 LINE 5:     RANGE BETWEEN CURRENT ROW AND 10 FOLLOWING
             ^
 HINT:  Use ROWS instead.
--- Expected: ERROR: cannot use FRAME option RANGE with row pattern recognition
 -- GROUPS frame with RPR (not permitted)
 SELECT id, val, COUNT(*) OVER w as cnt
 FROM rpr_frame
@@ -700,7 +683,6 @@ ERROR:  cannot use FRAME option GROUPS with row pattern recognition
 LINE 5:     GROUPS BETWEEN CURRENT ROW AND 1 FOLLOWING
             ^
 HINT:  Use ROWS instead.
--- Expected: ERROR: cannot use FRAME option GROUPS with row pattern recognition
 DROP TABLE rpr_frame;
 -- ============================================================
 -- PARTITION BY + FRAME Tests
@@ -749,7 +731,6 @@ ERROR:  cannot use FRAME option RANGE with row pattern recognition
 LINE 6:     RANGE BETWEEN CURRENT ROW AND 10 FOLLOWING
             ^
 HINT:  Use ROWS instead.
--- Expected: ERROR: cannot use FRAME option RANGE with row pattern recognition
 DROP TABLE rpr_partition;
 -- ============================================================
 -- PATTERN Syntax Tests
@@ -1011,7 +992,6 @@ ORDER BY id;
 ERROR:  quantifier bound must be between 1 and 2147483646
 LINE 6:     PATTERN (A{0} B)
                        ^
--- Expected: ERROR: quantifier bound must be between 1 and 2147483646
 -- {0,0} is not allowed (max must be >= 1)
 SELECT id, val, COUNT(*) OVER w as cnt
 FROM rpr_quant
@@ -1025,7 +1005,6 @@ ORDER BY id;
 ERROR:  quantifier bounds must be between 0 and 2147483646 with max >= 1
 LINE 6:     PATTERN (A{0,0} B)
                        ^
--- Expected: ERROR: quantifier bounds must be between 0 and 2147483646 with max >= 1
 -- {0,1} (equivalent to ?)
 SELECT id, val, COUNT(*) OVER w as cnt
 FROM rpr_quant
@@ -1155,6 +1134,7 @@ DROP TABLE rpr_quant;
 CREATE TABLE rpr_reluctant (id INT, val INT);
 INSERT INTO rpr_reluctant VALUES (1, 10), (2, 20), (3, 30);
 -- *? (zero or more, reluctant)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1170,8 +1150,8 @@ WINDOW w AS (
      0
 (3 rows)
 
--- Reluctant quantifier: prefer shortest match
 -- +? (one or more, reluctant)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1187,8 +1167,8 @@ WINDOW w AS (
      1
 (3 rows)
 
--- Reluctant quantifier: prefer shortest match
 -- ?? (zero or one, reluctant)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1204,8 +1184,8 @@ WINDOW w AS (
      0
 (3 rows)
 
--- Reluctant quantifier: prefer shortest match
 -- {n,}? (n or more, reluctant)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1221,8 +1201,8 @@ WINDOW w AS (
      0
 (3 rows)
 
--- Reluctant quantifier: prefer shortest match
 -- {n,m}? (n to m, reluctant)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1238,8 +1218,8 @@ WINDOW w AS (
      1
 (3 rows)
 
--- Reluctant quantifier: prefer shortest match
 -- {n}? (exactly n, reluctant)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1255,8 +1235,8 @@ WINDOW w AS (
      0
 (3 rows)
 
--- Reluctant quantifier: prefer shortest match
 -- {,m}? (up to m, reluctant) - COMPLETELY UNTESTED RULE!
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1272,8 +1252,6 @@ WINDOW w AS (
      0
 (3 rows)
 
--- Reluctant quantifier: prefer shortest match
--- Invalid reluctant patterns (wrong token after quantifier)
 -- {2}+ (should be {2}? not {2}+)
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
@@ -1286,7 +1264,6 @@ WINDOW w AS (
 ERROR:  syntax error at or near "+"
 LINE 6:     PATTERN (A{2}+)
                          ^
--- Expected: ERROR: syntax error at or near "+"
 -- {2,}* (should be {2,}? not {2,}*)
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
@@ -1299,7 +1276,6 @@ WINDOW w AS (
 ERROR:  syntax error at or near "*"
 LINE 6:     PATTERN (A{2,}*)
                           ^
--- Expected: ERROR: syntax error at or near "*"
 -- {,3}* (should be {,3}? not {,3}*)
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
@@ -1312,7 +1288,6 @@ WINDOW w AS (
 ERROR:  syntax error at or near "*"
 LINE 6:     PATTERN (A{,3}*)
                           ^
--- Expected: ERROR: syntax error at or near "*"
 -- {1,3}+ (should be {1,3}? not {1,3}+)
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
@@ -1325,9 +1300,8 @@ WINDOW w AS (
 ERROR:  syntax error at or near "+"
 LINE 6:     PATTERN (A{1,3}+)
                            ^
--- Expected: ERROR: syntax error at or near "+"
 -- Boundary errors in reluctant quantifiers
--- {-1}? (negative bound)
+-- negative bound is not allowed
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1339,8 +1313,7 @@ WINDOW w AS (
 ERROR:  syntax error at or near "-"
 LINE 6:     PATTERN (A{-1}?)
                        ^
--- Expected: ERROR: syntax error at or near "-"
--- {2147483647}? (INT_MAX)
+-- ERROR: quantifier bound exceeds limits
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1352,8 +1325,7 @@ WINDOW w AS (
 ERROR:  quantifier bound must be between 1 and 2147483646
 LINE 6:     PATTERN (A{2147483647}?)
                        ^
--- Expected: ERROR: quantifier bound must be between 1 and 2147483646
--- {-1,}? (negative lower bound)
+-- negative lower bound is not allowed
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1365,8 +1337,7 @@ WINDOW w AS (
 ERROR:  syntax error at or near "-"
 LINE 6:     PATTERN (A{-1,}?)
                        ^
--- Expected: ERROR: syntax error at or near "-"
--- {2147483647,}? (INT_MAX lower bound)
+-- ERROR: quantifier lower bound exceeds limits
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1378,8 +1349,7 @@ WINDOW w AS (
 ERROR:  quantifier bound must be between 0 and 2147483646
 LINE 6:     PATTERN (A{2147483647,}?)
                        ^
--- Expected: ERROR: quantifier bound must be between 0 and 2147483646
--- {,0}? (zero upper bound)
+-- zero upper bound is not allowed
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1391,8 +1361,7 @@ WINDOW w AS (
 ERROR:  quantifier bound must be between 1 and 2147483646
 LINE 6:     PATTERN (A{,0}?)
                         ^
--- Expected: ERROR: quantifier bound must be between 1 and 2147483646
--- {,2147483647}? (INT_MAX upper bound)
+-- ERROR: {,2147483647}? (upper bound in range exceeds limits)
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1404,8 +1373,7 @@ WINDOW w AS (
 ERROR:  quantifier bound must be between 1 and 2147483646
 LINE 6:     PATTERN (A{,2147483647}?)
                         ^
--- Expected: ERROR: quantifier bound must be between 1 and 2147483646
--- {-1,3}? (negative lower in range)
+-- ERROR: {-1,3}? (negative lower bound in range is not allowed)
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1417,8 +1385,7 @@ WINDOW w AS (
 ERROR:  syntax error at or near "-"
 LINE 6:     PATTERN (A{-1,3}?)
                        ^
--- Expected: ERROR: syntax error at or near "-"
--- {1,2147483647}? (INT_MAX upper in range)
+-- ERROR: {1,2147483647}? (upper bound in range exceeds limits)
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1430,8 +1397,7 @@ WINDOW w AS (
 ERROR:  quantifier bounds must be between 0 and 2147483646 with max >= 1
 LINE 6:     PATTERN (A{1,2147483647}?)
                        ^
--- Expected: ERROR: quantifier bounds must be between 0 and 2147483646 with max >= 1
--- {5,3}? (min > max)
+-- ERROR: {5,3}? (min > max is not allowed)
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1443,10 +1409,10 @@ WINDOW w AS (
 ERROR:  quantifier minimum bound must not exceed maximum
 LINE 6:     PATTERN (A{5,3}?)
                        ^
--- Expected: ERROR: quantifier minimum bound must not exceed maximum
 -- Token-separated reluctant quantifiers (space between quantifier and ?)
 -- These may be tokenized differently by the lexer
 -- * ? (token separated)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1462,8 +1428,8 @@ WINDOW w AS (
      0
 (3 rows)
 
--- Reluctant quantifier: prefer shortest match
 -- + ? (token separated)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1479,8 +1445,8 @@ WINDOW w AS (
      1
 (3 rows)
 
--- Reluctant quantifier: prefer shortest match
 -- {2,} ? (token separated)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1496,8 +1462,6 @@ WINDOW w AS (
      0
 (3 rows)
 
--- Reluctant quantifier: prefer shortest match
--- Invalid token combinations
 -- * + (invalid combination)
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
@@ -1510,7 +1474,6 @@ WINDOW w AS (
 ERROR:  syntax error at or near "+"
 LINE 6:     PATTERN (A* +)
                         ^
--- Expected: ERROR: syntax error at or near "+"
 -- + * (invalid combination)
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
@@ -1523,8 +1486,8 @@ WINDOW w AS (
 ERROR:  syntax error at or near "*"
 LINE 6:     PATTERN (A+ *)
                         ^
--- Expected: ERROR: syntax error at or near "*"
 -- ? ? (parsed as ?? reluctant quantifier)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1540,12 +1503,11 @@ WINDOW w AS (
      0
 (3 rows)
 
--- Reluctant quantifier: prefer shortest match
 DROP TABLE rpr_reluctant;
 -- Quantifier boundary conditions
 CREATE TABLE rpr_bounds (id INT);
 INSERT INTO rpr_bounds VALUES (1), (2);
--- min > max
+-- ERROR: quantifier lower bound must not exceed upper bound
 SELECT COUNT(*) OVER w
 FROM rpr_bounds
 WINDOW w AS (
@@ -1557,7 +1519,6 @@ WINDOW w AS (
 ERROR:  quantifier minimum bound must not exceed maximum
 LINE 6:     PATTERN (A{5,3})
                        ^
--- Expected: ERROR: quantifier minimum bound must not exceed maximum
 -- Large bounds
 SELECT COUNT(*) OVER w
 FROM rpr_bounds
@@ -1603,7 +1564,7 @@ WINDOW w AS (
      0
 (2 rows)
 
--- INT_MAX = 2147483647 (over limit)
+-- ERROR: quantifier bound exceeds limits
 SELECT COUNT(*) OVER w
 FROM rpr_bounds
 WINDOW w AS (
@@ -1615,9 +1576,8 @@ WINDOW w AS (
 ERROR:  quantifier bound must be between 1 and 2147483646
 LINE 6:     PATTERN (A{2147483647})
                        ^
--- Expected: ERROR: quantifier bound must be between 1 and 2147483646
 -- {n,} boundary errors
--- Negative lower bound in {n,}
+-- ERROR: negative lower bound in {n,} is not allowed
 SELECT COUNT(*) OVER w
 FROM rpr_bounds
 WINDOW w AS (
@@ -1629,8 +1589,7 @@ WINDOW w AS (
 ERROR:  syntax error at or near "-"
 LINE 6:     PATTERN (A{-1,})
                        ^
--- Expected: ERROR: syntax error at or near "-"
--- INT_MAX in {n,}
+-- ERROR: quantifier lower bound exceeds limits
 SELECT COUNT(*) OVER w
 FROM rpr_bounds
 WINDOW w AS (
@@ -1642,7 +1601,6 @@ WINDOW w AS (
 ERROR:  quantifier bound must be between 0 and 2147483646
 LINE 6:     PATTERN (A{2147483647,})
                        ^
--- Expected: ERROR: quantifier bound must be between 0 and 2147483646
 -- {,m} boundary errors
 -- Zero upper bound in {,m}
 SELECT COUNT(*) OVER w
@@ -1656,8 +1614,7 @@ WINDOW w AS (
 ERROR:  quantifier bound must be between 1 and 2147483646
 LINE 6:     PATTERN (A{,0})
                         ^
--- Expected: ERROR: quantifier bound must be between 1 and 2147483646
--- INT_MAX in {,m}
+-- ERROR: quantifier upper bound exceeds limits
 SELECT COUNT(*) OVER w
 FROM rpr_bounds
 WINDOW w AS (
@@ -1669,7 +1626,6 @@ WINDOW w AS (
 ERROR:  quantifier bound must be between 1 and 2147483646
 LINE 6:     PATTERN (A{,2147483647})
                         ^
--- Expected: ERROR: quantifier bound must be between 1 and 2147483646
 DROP TABLE rpr_bounds;
 -- ============================================================
 -- Navigation Functions Tests (PREV / NEXT / FIRST / LAST)
@@ -1756,7 +1712,6 @@ ORDER BY id;
 ERROR:  cannot use prev outside a DEFINE clause
 LINE 1: SELECT PREV(id), id, val, COUNT(*) OVER w as cnt
                ^
--- Expected: ERROR: cannot use prev outside a DEFINE clause
 -- NEXT function cannot be used other than in DEFINE
 SELECT NEXT(id), id, val, COUNT(*) OVER w as cnt
 FROM rpr_nav
@@ -1772,7 +1727,6 @@ ORDER BY id;
 ERROR:  cannot use next outside a DEFINE clause
 LINE 1: SELECT NEXT(id), id, val, COUNT(*) OVER w as cnt
                ^
--- Expected: ERROR: cannot use next outside a DEFINE clause
 -- FIRST function - reference match_start row
 SELECT id, val, COUNT(*) OVER w as cnt
 FROM rpr_nav
@@ -1841,13 +1795,11 @@ SELECT FIRST(id), id, val FROM rpr_nav;
 ERROR:  cannot use first outside a DEFINE clause
 LINE 1: SELECT FIRST(id), id, val FROM rpr_nav;
                ^
--- Expected: ERROR: cannot use first outside a DEFINE clause
 -- LAST function cannot be used other than in DEFINE
 SELECT LAST(id), id, val FROM rpr_nav;
 ERROR:  cannot use last outside a DEFINE clause
 LINE 1: SELECT LAST(id), id, val FROM rpr_nav;
                ^
--- Expected: ERROR: cannot use last outside a DEFINE clause
 DROP TABLE rpr_nav;
 -- ============================================================
 -- SKIP TO / INITIAL Tests
@@ -2033,12 +1985,13 @@ ERROR:  SEEK is not supported
 LINE 6:     SEEK
             ^
 HINT:  Use INITIAL instead.
--- Expected: ERROR: SEEK is not supported
--- HINT: Use INITIAL instead.
 DROP TABLE rpr_seek;
 -- ============================================================
 -- Serialization/Deserialization Tests
 -- ============================================================
+-- RPR-defining views and tables here are intentionally left in place (not
+-- dropped) so that pg_dump/pg_upgrade exercise the deparse-then-re-parse
+-- round-trip of the RPR window clause.
 -- View creation and deparsing
 CREATE TABLE rpr_serial (id INT, val INT);
 INSERT INTO rpr_serial VALUES
@@ -3317,7 +3270,6 @@ DROP TABLE rpr_glue;
 DROP TABLE IF EXISTS rpr_err;
 CREATE TABLE rpr_err (id INT, val INT);
 INSERT INTO rpr_err VALUES (1, 10), (2, 20);
--- Syntax errors
 -- Invalid quantifier syntax
 SELECT COUNT(*) OVER w
 FROM rpr_err
@@ -3346,7 +3298,7 @@ EXCEPTION
 END $$;
 NOTICE:  Unmatched parentheses: EXPECTED ERROR - syntax error at or near "AS"
 SET client_min_messages = WARNING;
--- Empty DEFINE
+-- ERROR: empty DEFINE not allowed
 SELECT COUNT(*) OVER w
 FROM rpr_err
 WINDOW w AS (
@@ -3359,7 +3311,7 @@ ERROR:  syntax error at or near ")"
 LINE 8: );
         ^
 -- Expected: Syntax error
--- Empty PATTERN
+-- ERROR: empty PATTERN not allowed
 SELECT COUNT(*) OVER w
 FROM rpr_err
 WINDOW w AS (
@@ -3372,7 +3324,7 @@ ERROR:  syntax error at or near ")"
 LINE 6:     PATTERN ()
                      ^
 -- Expected: Syntax error
--- DEFINE without PATTERN (PATTERN and DEFINE must be used together)
+-- ERROR: DEFINE without PATTERN (PATTERN and DEFINE must be used together)
 SELECT COUNT(*) OVER w
 FROM rpr_err
 WINDOW w AS (
@@ -3397,7 +3349,6 @@ WINDOW w AS (
 ERROR:  pattern variable qualified expression "a.val" is not supported in DEFINE clause
 LINE 7:     DEFINE A AS A.val > 0
                         ^
--- Expected: ERROR: pattern variable qualified expression "a.val" is not supported
 -- PATTERN-only variable qualified name: not supported even without DEFINE entry
 SELECT COUNT(*) OVER w
 FROM rpr_err
@@ -3410,7 +3361,6 @@ WINDOW w AS (
 ERROR:  pattern variable qualified expression "b.val" is not supported in DEFINE clause
 LINE 7:     DEFINE A AS B.val > 0
                         ^
--- Expected: ERROR: pattern variable qualified expression "b.val" is not supported
 -- DEFINE-only variable qualified name: still a pattern variable, not a range variable
 SELECT COUNT(*) OVER w
 FROM rpr_err
@@ -3423,7 +3373,6 @@ WINDOW w AS (
 ERROR:  DEFINE variable "b" is not used in PATTERN
 LINE 7:     DEFINE A AS val > 0, B AS B.val > 0
                                  ^
--- Expected: ERROR: pattern variable qualified expression "b.val" is not supported
 -- FROM-clause range variable qualified name: not allowed (prohibited by ISO/IEC 19075-5 6.5)
 SELECT COUNT(*) OVER w
 FROM rpr_err
@@ -3436,7 +3385,6 @@ WINDOW w AS (
 ERROR:  range variable qualified expression "rpr_err.val" is not allowed in DEFINE clause
 LINE 7:     DEFINE A AS rpr_err.val > 0
                         ^
--- Expected: ERROR: range variable qualified expression "rpr_err.val" is not allowed
 -- Unknown qualifier (neither pattern var nor range var): the DEFINE pre-check
 -- must fall through so that normal column resolution produces a sensible error.
 SELECT COUNT(*) OVER w
@@ -3450,7 +3398,6 @@ WINDOW w AS (
 ERROR:  missing FROM-clause entry for table "nosuch"
 LINE 7:     DEFINE A AS nosuch.val > 0
                         ^
--- Expected: ERROR: missing FROM-clause entry for table "nosuch"
 -- Unqualified composite field access in DEFINE works: no qualifier means no
 -- pattern/range-var navigation, so the pre-check skips and normal resolution
 -- handles "(items).amount" via A_Indirection on the current row.
@@ -3488,7 +3435,6 @@ WINDOW w AS (
 ERROR:  pattern variable qualified expression "a.items" is not supported in DEFINE clause
 LINE 7:     DEFINE A AS (A.items).amount > 10
                          ^
--- Expected: ERROR: pattern variable qualified expression "a.items" is not supported
 SELECT COUNT(*) OVER w
 FROM rpr_composite
 WINDOW w AS (
@@ -3500,11 +3446,9 @@ WINDOW w AS (
 ERROR:  range variable qualified expression "rpr_composite.items" is not allowed in DEFINE clause
 LINE 7:     DEFINE A AS (rpr_composite.items).amount > 10
                          ^
--- Expected: ERROR: range variable qualified expression "rpr_composite.items" is not allowed
 DROP TABLE rpr_composite;
 DROP TYPE rpr_item;
--- Semantic errors
--- Undefined column in DEFINE
+-- ERROR: undefined column in DEFINE
 SELECT COUNT(*) OVER w
 FROM rpr_err
 WINDOW w AS (
@@ -3516,8 +3460,7 @@ WINDOW w AS (
 ERROR:  column "nonexistent_column" does not exist
 LINE 7:     DEFINE A AS nonexistent_column > 0
                         ^
--- Expected: ERROR: column "nonexistent_column" does not exist
--- Type mismatch
+-- ERROR: type mismatch
 SELECT COUNT(*) OVER w
 FROM rpr_err
 WINDOW w AS (
@@ -3529,8 +3472,7 @@ WINDOW w AS (
 ERROR:  invalid input syntax for type integer: "string"
 LINE 7:     DEFINE A AS val > 'string'
                               ^
--- Expected: ERROR: invalid input syntax for type integer: "string"
--- Aggregate function in DEFINE (if not allowed)
+-- ERROR: aggregate function in DEFINE is not supported
 SELECT COUNT(*) OVER w
 FROM rpr_err
 WINDOW w AS (
@@ -3542,8 +3484,7 @@ WINDOW w AS (
 ERROR:  aggregate functions are not allowed in DEFINE
 LINE 7:     DEFINE A AS COUNT(*) > 0
                         ^
--- Expected: ERROR: aggregate functions are not allowed in DEFINE
--- Subquery in DEFINE (NOT SUPPORTED)
+-- Subquery in DEFINE is not supported
 SELECT COUNT(*) OVER w
 FROM rpr_err
 WINDOW w AS (
@@ -3555,8 +3496,6 @@ WINDOW w AS (
 ERROR:  cannot use subquery in DEFINE expression
 LINE 7:     DEFINE A AS val > (SELECT max(val) FROM rpr_err)
                               ^
--- Expected: ERROR: cannot use subquery in DEFINE expression
--- Edge cases
 -- Pattern variable not used (should work, extra vars ignored)
 SELECT id, val, COUNT(*) OVER w as cnt
 FROM rpr_err
@@ -5703,7 +5642,6 @@ WINDOW w AS (
 ERROR:  quantifier bounds must be between 0 and 2147483646 with max >= 1
 LINE 6:     PATTERN ((A{2000000000,2147483647}){2})
                         ^
--- Expected: ERROR at parse time before optimization
 -- Test: nested unbounded with large min causes overflow fallback
 EXPLAIN (COSTS OFF)
 SELECT COUNT(*) OVER w FROM rpr_fallback
@@ -5947,7 +5885,6 @@ ORDER BY category;
 ERROR:  syntax error at or near "GROUP"
 LINE 12: GROUP BY category
          ^
--- Expected: ERROR: syntax error at or near "GROUP"
 -- (GROUP BY after WINDOW clause is not valid SQL syntax)
 -- ============================================================
 -- Subquery and CTE Tests
@@ -6427,7 +6364,6 @@ INSERT INTO rpr_sort VALUES
     (1, 'A', 30), (2, 'B', 20), (3, 'A', 10),
     (4, 'B', 40), (5, 'A', 50), (6, 'B', 60);
 -- RPR with GROUP BY (aggregate in DEFINE -> ERROR before GROUP BY interaction)
--- Expected: ERROR: aggregate functions are not allowed in DEFINE
 SELECT category,
        COUNT(*) as group_cnt,
        MAX(val) as max_val,
@@ -6445,7 +6381,6 @@ ERROR:  aggregate functions are not allowed in DEFINE
 LINE 11:     DEFINE A AS COUNT(*) > 0
                          ^
 -- RPR with HAVING (same aggregate-in-DEFINE error)
--- Expected: ERROR: aggregate functions are not allowed in DEFINE
 SELECT category,
        COUNT(*) as group_cnt,
        COUNT(*) OVER w as window_cnt
@@ -6758,7 +6693,7 @@ WINDOW w AS (
 (2 rows)
 
 -- Expected: Success - exactly at RPR_VARID_MAX boundary
--- Test: 241 variables in PATTERN, 240 in DEFINE (exceeds limit with implicit TRUE)
+-- ERROR: 241 variables in PATTERN, 240 in DEFINE (exceeds limit with implicit TRUE)
 SELECT COUNT(*) OVER w FROM rpr_errors
 WINDOW w AS (
     ORDER BY id
@@ -6794,7 +6729,6 @@ ERROR:  too many pattern variables
 LINE 5: ...V230 V231 V232 V233 V234 V235 V236 V237 V238 V239 V240 V241)
                                                                   ^
 DETAIL:  Maximum is 240.
--- Expected: ERROR - too many pattern variables (Maximum is 240)
 -- Test: Pattern nesting at maximum depth (depth 253)
 -- Note: 253 nested GROUP{3,7}? quantifiers; reluctant quantifiers are not
 -- subject to quantifier multiplication, so the nesting (and depth 253) is
@@ -6826,12 +6760,10 @@ WINDOW w AS (
 );
 ERROR:  pattern nesting too deep
 DETAIL:  Pattern nesting depth 254 exceeds maximum 253.
--- Expected: ERROR - pattern nesting too deep
 DROP TABLE rpr_errors;
 -- ============================================================
--- Jacob's Patterns
+-- Basic Pattern Matching
 -- ============================================================
--- Basic pattern matching tests from jacob branch
 -- Test: A? (optional, greedy)
 SELECT id, val, count(*) OVER w AS c
 FROM rpr_plan
@@ -7194,3 +7126,4 @@ FROM (SELECT id, val,
 (2 rows)
 
 DROP TABLE rpr_plan;
+RESET client_min_messages;
diff --git a/src/test/regress/sql/rpr_base.sql b/src/test/regress/sql/rpr_base.sql
index cc79843aeb7..7dc13232d89 100644
--- a/src/test/regress/sql/rpr_base.sql
+++ b/src/test/regress/sql/rpr_base.sql
@@ -12,7 +12,7 @@
 --   Quantifiers Tests
 --   Navigation Functions Tests
 --   SKIP TO / INITIAL Tests
---   Serialization/Deserialization Tests (objects kept for pg_upgrade/pg_dump)
+--   Serialization/Deserialization Tests
 --   Glued Quantifier / Alternation Tests
 --   Error Cases Tests
 --   Window Deduplication Tests
@@ -34,7 +34,7 @@
 --   Error Limit Tests
 --
 -- Contributed Tests:
---   Jacob's Patterns
+--   Basic Pattern Matching
 --   Pathological Patterns
 -- ============================================================
 
@@ -54,6 +54,7 @@ CREATE TABLE rpr_keywords (
     past INT,        -- PAST keyword
     pattern INT,     -- PATTERN keyword
     seek INT,        -- SEEK keyword
+-- ERROR: SEEK is not supported
     skip INT         -- SKIP keyword (pre-existing)
 );
 
@@ -69,7 +70,6 @@ DROP TABLE rpr_keywords;
 -- DEFINE Clause Tests
 -- ============================================================
 
-
 -- Simple column references
 CREATE TABLE stock_price (
     dt DATE,
@@ -182,7 +182,7 @@ DROP TABLE rpr_auto;
 CREATE TABLE rpr_dup (id INT);
 INSERT INTO rpr_dup VALUES (1), (2);
 
--- Duplicate DEFINE entries
+-- Duplicate DEFINE variable name is not allowed
 SELECT COUNT(*) OVER w
 FROM rpr_dup
 WINDOW w AS (
@@ -191,7 +191,6 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS id > 0, A AS id < 10
 );
--- Expected: ERROR: row pattern definition variable name "a" appears more than once in DEFINE clause
 
 DROP TABLE rpr_dup;
 
@@ -199,7 +198,7 @@ DROP TABLE rpr_dup;
 CREATE TABLE rpr_bool (id INT, flag BOOLEAN);
 INSERT INTO rpr_bool VALUES (1, true), (2, false);
 
--- Non-boolean expression
+-- DEFINE clause must be a boolean expression
 SELECT COUNT(*) OVER w
 FROM rpr_bool
 WINDOW w AS (
@@ -208,7 +207,6 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS id
 );
--- Expected: ERROR: argument of DEFINE must be type boolean
 
 -- Boolean column reference
 SELECT id, flag, COUNT(*) OVER w as cnt
@@ -301,7 +299,6 @@ DROP TABLE rpr_unused;
 -- FRAME Options Tests
 -- ============================================================
 
-
 CREATE TABLE rpr_frame (id INT, val INT);
 INSERT INTO rpr_frame VALUES
     (1, 10), (2, 10), (3, 10),  -- Same val: 10
@@ -327,9 +324,7 @@ WINDOW w AS (
 )
 ORDER BY id;
 
--- Invalid frame start positions
-
--- Not starting at CURRENT ROW
+-- ERROR: frame must start at current row when row pattern recognition is used
 SELECT COUNT(*) OVER w
 FROM rpr_frame
 WINDOW w AS (
@@ -338,7 +333,6 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: FRAME must start at current row when row pattern recognition is used
 
 -- EXCLUDE options
 
@@ -352,7 +346,6 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: cannot use EXCLUDE options with row pattern recognition
 
 -- EXCLUDE GROUP not permitted
 SELECT COUNT(*) OVER w
@@ -364,7 +357,6 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: cannot use EXCLUDE options with row pattern recognition
 
 -- EXCLUDE TIES not permitted
 SELECT COUNT(*) OVER w
@@ -376,9 +368,8 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: cannot use EXCLUDE options with row pattern recognition
 
--- RANGE frame not starting at CURRENT ROW
+-- range frame is not allowed with RPR
 SELECT COUNT(*) OVER w
 FROM rpr_frame
 WINDOW w AS (
@@ -387,9 +378,8 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: cannot use FRAME option RANGE with row pattern recognition
 
--- GROUPS frame not starting at CURRENT ROW
+-- GROUPS frame is not allowed with RPR
 SELECT COUNT(*) OVER w
 FROM rpr_frame
 WINDOW w AS (
@@ -398,9 +388,8 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: cannot use FRAME option GROUPS with row pattern recognition
 
--- Starting with N PRECEDING
+-- ERROR: frame must start at current row when row pattern recognition is used
 SELECT COUNT(*) OVER w
 FROM rpr_frame
 WINDOW w AS (
@@ -409,9 +398,8 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: FRAME must start at current row when row pattern recognition is used
 
--- Starting with N FOLLOWING
+-- ERROR: frame must start at current row with RPR
 SELECT COUNT(*) OVER w
 FROM rpr_frame
 WINDOW w AS (
@@ -420,11 +408,8 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: FRAME must start at current row when row pattern recognition is used
 
--- Frame end bound edge cases
-
--- End before start: CURRENT ROW AND 1 PRECEDING
+-- ERROR: end before start: CURRENT ROW AND 1 PRECEDING
 SELECT COUNT(*) OVER w
 FROM rpr_frame
 WINDOW w AS (
@@ -433,9 +418,8 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: frame starting from current row cannot have preceding rows
 
--- End before start: CURRENT ROW AND UNBOUNDED PRECEDING
+-- ERROR: end before start: CURRENT ROW AND UNBOUNDED PRECEDING
 SELECT COUNT(*) OVER w
 FROM rpr_frame
 WINDOW w AS (
@@ -444,7 +428,6 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: frame end cannot be UNBOUNDED PRECEDING
 
 -- Single row frame: CURRENT ROW AND CURRENT ROW is rejected (the standard
 -- allows only UNBOUNDED FOLLOWING or a positive offset FOLLOWING).
@@ -458,7 +441,6 @@ WINDOW w AS (
     DEFINE A AS val > 0
 )
 ORDER BY id;
--- Expected: ERROR: cannot use CURRENT ROW as frame end with row pattern recognition
 
 -- Zero offset: CURRENT ROW AND 0 FOLLOWING denotes the same one-row frame
 -- and is likewise rejected (caught at execution time).
@@ -472,7 +454,6 @@ WINDOW w AS (
     DEFINE A AS val > 0
 )
 ORDER BY id;
--- Expected: ERROR: frame ending offset must be positive with row pattern recognition
 
 -- A non-constant frame end offset is allowed; a zero value is still rejected,
 -- this time at execution time (a literal cannot exercise that path).
@@ -489,7 +470,6 @@ WINDOW w AS (
 ORDER BY id;
 EXECUTE rpr_end_offset(2);
 EXECUTE rpr_end_offset(0);
--- Expected: ERROR: frame ending offset must be positive with row pattern recognition
 DEALLOCATE rpr_end_offset;
 
 -- Large offset: CURRENT ROW AND 1000 FOLLOWING
@@ -532,7 +512,7 @@ WINDOW w AS (
 )
 ORDER BY id;
 
--- RANGE frame with RPR (not permitted)
+-- range frame is not allowed with RPR
 SELECT id, val, COUNT(*) OVER w as cnt
 FROM rpr_frame
 WINDOW w AS (
@@ -543,7 +523,6 @@ WINDOW w AS (
     DEFINE A AS val >= 0, B AS val >= 0
 )
 ORDER BY id;
--- Expected: ERROR: cannot use FRAME option RANGE with row pattern recognition
 
 -- GROUPS frame with RPR (not permitted)
 SELECT id, val, COUNT(*) OVER w as cnt
@@ -556,7 +535,6 @@ WINDOW w AS (
     DEFINE A AS val >= 0, B AS val >= 0
 )
 ORDER BY id;
--- Expected: ERROR: cannot use FRAME option GROUPS with row pattern recognition
 
 DROP TABLE rpr_frame;
 
@@ -596,7 +574,6 @@ WINDOW w AS (
     DEFINE A AS val >= 10, B AS val >= 20
 )
 ORDER BY id;
--- Expected: ERROR: cannot use FRAME option RANGE with row pattern recognition
 
 DROP TABLE rpr_partition;
 
@@ -604,7 +581,6 @@ DROP TABLE rpr_partition;
 -- PATTERN Syntax Tests
 -- ============================================================
 
-
 CREATE TABLE rpr_pattern (id INT, val INT);
 INSERT INTO rpr_pattern VALUES
     (1, 5), (2, 10), (3, 15), (4, 20), (5, 25),
@@ -700,7 +676,6 @@ DROP TABLE rpr_pattern;
 -- Quantifiers Tests
 -- ============================================================
 
-
 CREATE TABLE rpr_quant (id INT, val INT);
 INSERT INTO rpr_quant VALUES
     (1, 10), (2, 20), (3, 30), (4, 40), (5, 50),
@@ -753,7 +728,6 @@ WINDOW w AS (
     DEFINE A AS val > 1000, B AS val > 0
 )
 ORDER BY id;
--- Expected: ERROR: quantifier bound must be between 1 and 2147483646
 
 -- {0,0} is not allowed (max must be >= 1)
 SELECT id, val, COUNT(*) OVER w as cnt
@@ -765,7 +739,6 @@ WINDOW w AS (
     DEFINE A AS val > 1000, B AS val > 0
 )
 ORDER BY id;
--- Expected: ERROR: quantifier bounds must be between 0 and 2147483646 with max >= 1
 
 -- {0,1} (equivalent to ?)
 SELECT id, val, COUNT(*) OVER w as cnt
@@ -837,6 +810,7 @@ CREATE TABLE rpr_reluctant (id INT, val INT);
 INSERT INTO rpr_reluctant VALUES (1, 10), (2, 20), (3, 30);
 
 -- *? (zero or more, reluctant)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -845,9 +819,9 @@ WINDOW w AS (
     PATTERN (A*?)
     DEFINE A AS val > 0
 );
--- Reluctant quantifier: prefer shortest match
 
 -- +? (one or more, reluctant)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -856,9 +830,9 @@ WINDOW w AS (
     PATTERN (A+?)
     DEFINE A AS val > 0
 );
--- Reluctant quantifier: prefer shortest match
 
 -- ?? (zero or one, reluctant)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -867,9 +841,9 @@ WINDOW w AS (
     PATTERN (A??)
     DEFINE A AS val > 0
 );
--- Reluctant quantifier: prefer shortest match
 
 -- {n,}? (n or more, reluctant)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -878,9 +852,9 @@ WINDOW w AS (
     PATTERN (A{2,}?)
     DEFINE A AS val > 0
 );
--- Reluctant quantifier: prefer shortest match
 
 -- {n,m}? (n to m, reluctant)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -889,9 +863,9 @@ WINDOW w AS (
     PATTERN (A{1,3}?)
     DEFINE A AS val > 0
 );
--- Reluctant quantifier: prefer shortest match
 
 -- {n}? (exactly n, reluctant)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -900,9 +874,9 @@ WINDOW w AS (
     PATTERN (A{2}?)
     DEFINE A AS val > 0
 );
--- Reluctant quantifier: prefer shortest match
 
 -- {,m}? (up to m, reluctant) - COMPLETELY UNTESTED RULE!
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -911,9 +885,6 @@ WINDOW w AS (
     PATTERN (A{,3}?)
     DEFINE A AS val > 0
 );
--- Reluctant quantifier: prefer shortest match
-
--- Invalid reluctant patterns (wrong token after quantifier)
 
 -- {2}+ (should be {2}? not {2}+)
 SELECT COUNT(*) OVER w
@@ -924,7 +895,6 @@ WINDOW w AS (
     PATTERN (A{2}+)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: syntax error at or near "+"
 
 -- {2,}* (should be {2,}? not {2,}*)
 SELECT COUNT(*) OVER w
@@ -935,7 +905,6 @@ WINDOW w AS (
     PATTERN (A{2,}*)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: syntax error at or near "*"
 
 -- {,3}* (should be {,3}? not {,3}*)
 SELECT COUNT(*) OVER w
@@ -946,7 +915,6 @@ WINDOW w AS (
     PATTERN (A{,3}*)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: syntax error at or near "*"
 
 -- {1,3}+ (should be {1,3}? not {1,3}+)
 SELECT COUNT(*) OVER w
@@ -957,11 +925,10 @@ WINDOW w AS (
     PATTERN (A{1,3}+)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: syntax error at or near "+"
 
 -- Boundary errors in reluctant quantifiers
 
--- {-1}? (negative bound)
+-- negative bound is not allowed
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -970,9 +937,8 @@ WINDOW w AS (
     PATTERN (A{-1}?)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: syntax error at or near "-"
 
--- {2147483647}? (INT_MAX)
+-- ERROR: quantifier bound exceeds limits
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -981,9 +947,8 @@ WINDOW w AS (
     PATTERN (A{2147483647}?)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: quantifier bound must be between 1 and 2147483646
 
--- {-1,}? (negative lower bound)
+-- negative lower bound is not allowed
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -992,9 +957,8 @@ WINDOW w AS (
     PATTERN (A{-1,}?)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: syntax error at or near "-"
 
--- {2147483647,}? (INT_MAX lower bound)
+-- ERROR: quantifier lower bound exceeds limits
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1003,9 +967,8 @@ WINDOW w AS (
     PATTERN (A{2147483647,}?)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: quantifier bound must be between 0 and 2147483646
 
--- {,0}? (zero upper bound)
+-- zero upper bound is not allowed
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1014,9 +977,8 @@ WINDOW w AS (
     PATTERN (A{,0}?)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: quantifier bound must be between 1 and 2147483646
 
--- {,2147483647}? (INT_MAX upper bound)
+-- ERROR: {,2147483647}? (upper bound in range exceeds limits)
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1025,9 +987,8 @@ WINDOW w AS (
     PATTERN (A{,2147483647}?)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: quantifier bound must be between 1 and 2147483646
 
--- {-1,3}? (negative lower in range)
+-- ERROR: {-1,3}? (negative lower bound in range is not allowed)
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1036,9 +997,8 @@ WINDOW w AS (
     PATTERN (A{-1,3}?)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: syntax error at or near "-"
 
--- {1,2147483647}? (INT_MAX upper in range)
+-- ERROR: {1,2147483647}? (upper bound in range exceeds limits)
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1047,9 +1007,8 @@ WINDOW w AS (
     PATTERN (A{1,2147483647}?)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: quantifier bounds must be between 0 and 2147483646 with max >= 1
 
--- {5,3}? (min > max)
+-- ERROR: {5,3}? (min > max is not allowed)
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1058,12 +1017,12 @@ WINDOW w AS (
     PATTERN (A{5,3}?)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: quantifier minimum bound must not exceed maximum
 
 -- Token-separated reluctant quantifiers (space between quantifier and ?)
 -- These may be tokenized differently by the lexer
 
 -- * ? (token separated)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1072,9 +1031,9 @@ WINDOW w AS (
     PATTERN (A* ?)
     DEFINE A AS val > 0
 );
--- Reluctant quantifier: prefer shortest match
 
 -- + ? (token separated)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1083,9 +1042,9 @@ WINDOW w AS (
     PATTERN (A+ ?)
     DEFINE A AS val > 0
 );
--- Reluctant quantifier: prefer shortest match
 
 -- {2,} ? (token separated)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1094,9 +1053,6 @@ WINDOW w AS (
     PATTERN (A{2,} ?)
     DEFINE A AS val > 0
 );
--- Reluctant quantifier: prefer shortest match
-
--- Invalid token combinations
 
 -- * + (invalid combination)
 SELECT COUNT(*) OVER w
@@ -1107,7 +1063,6 @@ WINDOW w AS (
     PATTERN (A* +)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: syntax error at or near "+"
 
 -- + * (invalid combination)
 SELECT COUNT(*) OVER w
@@ -1118,9 +1073,9 @@ WINDOW w AS (
     PATTERN (A+ *)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: syntax error at or near "*"
 
 -- ? ? (parsed as ?? reluctant quantifier)
+-- Reluctant quantifier: prefer shortest match
 SELECT COUNT(*) OVER w
 FROM rpr_reluctant
 WINDOW w AS (
@@ -1129,7 +1084,6 @@ WINDOW w AS (
     PATTERN (A? ?)
     DEFINE A AS val > 0
 );
--- Reluctant quantifier: prefer shortest match
 
 DROP TABLE rpr_reluctant;
 
@@ -1138,7 +1092,7 @@ DROP TABLE rpr_reluctant;
 CREATE TABLE rpr_bounds (id INT);
 INSERT INTO rpr_bounds VALUES (1), (2);
 
--- min > max
+-- ERROR: quantifier lower bound must not exceed upper bound
 SELECT COUNT(*) OVER w
 FROM rpr_bounds
 WINDOW w AS (
@@ -1147,7 +1101,6 @@ WINDOW w AS (
     PATTERN (A{5,3})
     DEFINE A AS id > 0
 );
--- Expected: ERROR: quantifier minimum bound must not exceed maximum
 
 -- Large bounds
 SELECT COUNT(*) OVER w
@@ -1179,7 +1132,7 @@ WINDOW w AS (
     DEFINE A AS id > 0
 );
 
--- INT_MAX = 2147483647 (over limit)
+-- ERROR: quantifier bound exceeds limits
 SELECT COUNT(*) OVER w
 FROM rpr_bounds
 WINDOW w AS (
@@ -1188,11 +1141,10 @@ WINDOW w AS (
     PATTERN (A{2147483647})
     DEFINE A AS id > 0
 );
--- Expected: ERROR: quantifier bound must be between 1 and 2147483646
 
 -- {n,} boundary errors
 
--- Negative lower bound in {n,}
+-- ERROR: negative lower bound in {n,} is not allowed
 SELECT COUNT(*) OVER w
 FROM rpr_bounds
 WINDOW w AS (
@@ -1201,9 +1153,8 @@ WINDOW w AS (
     PATTERN (A{-1,})
     DEFINE A AS id > 0
 );
--- Expected: ERROR: syntax error at or near "-"
 
--- INT_MAX in {n,}
+-- ERROR: quantifier lower bound exceeds limits
 SELECT COUNT(*) OVER w
 FROM rpr_bounds
 WINDOW w AS (
@@ -1212,7 +1163,6 @@ WINDOW w AS (
     PATTERN (A{2147483647,})
     DEFINE A AS id > 0
 );
--- Expected: ERROR: quantifier bound must be between 0 and 2147483646
 
 -- {,m} boundary errors
 
@@ -1225,9 +1175,8 @@ WINDOW w AS (
     PATTERN (A{,0})
     DEFINE A AS id > 0
 );
--- Expected: ERROR: quantifier bound must be between 1 and 2147483646
 
--- INT_MAX in {,m}
+-- ERROR: quantifier upper bound exceeds limits
 SELECT COUNT(*) OVER w
 FROM rpr_bounds
 WINDOW w AS (
@@ -1236,7 +1185,6 @@ WINDOW w AS (
     PATTERN (A{,2147483647})
     DEFINE A AS id > 0
 );
--- Expected: ERROR: quantifier bound must be between 1 and 2147483646
 
 DROP TABLE rpr_bounds;
 
@@ -1244,7 +1192,6 @@ DROP TABLE rpr_bounds;
 -- Navigation Functions Tests (PREV / NEXT / FIRST / LAST)
 -- ============================================================
 
-
 CREATE TABLE rpr_nav (id INT, val INT);
 INSERT INTO rpr_nav VALUES
     (1, 10), (2, 20), (3, 15), (4, 25), (5, 30);
@@ -1301,7 +1248,6 @@ WINDOW w AS (
         B AS val > PREV(val)
 )
 ORDER BY id;
--- Expected: ERROR: cannot use prev outside a DEFINE clause
 
 -- NEXT function cannot be used other than in DEFINE
 SELECT NEXT(id), id, val, COUNT(*) OVER w as cnt
@@ -1315,7 +1261,6 @@ WINDOW w AS (
         B AS val > PREV(val)
 )
 ORDER BY id;
--- Expected: ERROR: cannot use next outside a DEFINE clause
 
 -- FIRST function - reference match_start row
 SELECT id, val, COUNT(*) OVER w as cnt
@@ -1358,11 +1303,9 @@ ORDER BY id;
 
 -- FIRST function cannot be used other than in DEFINE
 SELECT FIRST(id), id, val FROM rpr_nav;
--- Expected: ERROR: cannot use first outside a DEFINE clause
 
 -- LAST function cannot be used other than in DEFINE
 SELECT LAST(id), id, val FROM rpr_nav;
--- Expected: ERROR: cannot use last outside a DEFINE clause
 
 DROP TABLE rpr_nav;
 
@@ -1370,7 +1313,6 @@ DROP TABLE rpr_nav;
 -- SKIP TO / INITIAL Tests
 -- ============================================================
 
-
 CREATE TABLE rpr_skip (id INT, val INT);
 INSERT INTO rpr_skip VALUES
     (1, 1), (2, 2), (3, 3), (4, 4), (5, 5),
@@ -1492,15 +1434,15 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS val > 0
 );
--- Expected: ERROR: SEEK is not supported
--- HINT: Use INITIAL instead.
 
 DROP TABLE rpr_seek;
 
 -- ============================================================
 -- Serialization/Deserialization Tests
 -- ============================================================
-
+-- RPR-defining views and tables here are intentionally left in place (not
+-- dropped) so that pg_dump/pg_upgrade exercise the deparse-then-re-parse
+-- round-trip of the RPR window clause.
 
 -- View creation and deparsing
 
@@ -2190,13 +2132,10 @@ DROP TABLE rpr_glue;
 -- Error Cases Tests
 -- ============================================================
 
-
 DROP TABLE IF EXISTS rpr_err;
 CREATE TABLE rpr_err (id INT, val INT);
 INSERT INTO rpr_err VALUES (1, 10), (2, 20);
 
--- Syntax errors
-
 -- Invalid quantifier syntax
 SELECT COUNT(*) OVER w
 FROM rpr_err
@@ -2222,7 +2161,7 @@ EXCEPTION
 END $$;
 SET client_min_messages = WARNING;
 
--- Empty DEFINE
+-- ERROR: empty DEFINE not allowed
 SELECT COUNT(*) OVER w
 FROM rpr_err
 WINDOW w AS (
@@ -2233,7 +2172,7 @@ WINDOW w AS (
 );
 -- Expected: Syntax error
 
--- Empty PATTERN
+-- ERROR: empty PATTERN not allowed
 SELECT COUNT(*) OVER w
 FROM rpr_err
 WINDOW w AS (
@@ -2244,7 +2183,7 @@ WINDOW w AS (
 );
 -- Expected: Syntax error
 
--- DEFINE without PATTERN (PATTERN and DEFINE must be used together)
+-- ERROR: DEFINE without PATTERN (PATTERN and DEFINE must be used together)
 SELECT COUNT(*) OVER w
 FROM rpr_err
 WINDOW w AS (
@@ -2265,7 +2204,6 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS A.val > 0
 );
--- Expected: ERROR: pattern variable qualified expression "a.val" is not supported
 
 -- PATTERN-only variable qualified name: not supported even without DEFINE entry
 SELECT COUNT(*) OVER w
@@ -2276,7 +2214,6 @@ WINDOW w AS (
     PATTERN (A+ B+)
     DEFINE A AS B.val > 0
 );
--- Expected: ERROR: pattern variable qualified expression "b.val" is not supported
 
 -- DEFINE-only variable qualified name: still a pattern variable, not a range variable
 SELECT COUNT(*) OVER w
@@ -2287,7 +2224,6 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS val > 0, B AS B.val > 0
 );
--- Expected: ERROR: pattern variable qualified expression "b.val" is not supported
 
 -- FROM-clause range variable qualified name: not allowed (prohibited by ISO/IEC 19075-5 6.5)
 SELECT COUNT(*) OVER w
@@ -2298,7 +2234,6 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS rpr_err.val > 0
 );
--- Expected: ERROR: range variable qualified expression "rpr_err.val" is not allowed
 
 -- Unknown qualifier (neither pattern var nor range var): the DEFINE pre-check
 -- must fall through so that normal column resolution produces a sensible error.
@@ -2310,7 +2245,6 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS nosuch.val > 0
 );
--- Expected: ERROR: missing FROM-clause entry for table "nosuch"
 
 -- Unqualified composite field access in DEFINE works: no qualifier means no
 -- pattern/range-var navigation, so the pre-check skips and normal resolution
@@ -2340,7 +2274,6 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS (A.items).amount > 10
 );
--- Expected: ERROR: pattern variable qualified expression "a.items" is not supported
 SELECT COUNT(*) OVER w
 FROM rpr_composite
 WINDOW w AS (
@@ -2349,13 +2282,10 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS (rpr_composite.items).amount > 10
 );
--- Expected: ERROR: range variable qualified expression "rpr_composite.items" is not allowed
 DROP TABLE rpr_composite;
 DROP TYPE rpr_item;
 
--- Semantic errors
-
--- Undefined column in DEFINE
+-- ERROR: undefined column in DEFINE
 SELECT COUNT(*) OVER w
 FROM rpr_err
 WINDOW w AS (
@@ -2364,9 +2294,8 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS nonexistent_column > 0
 );
--- Expected: ERROR: column "nonexistent_column" does not exist
 
--- Type mismatch
+-- ERROR: type mismatch
 SELECT COUNT(*) OVER w
 FROM rpr_err
 WINDOW w AS (
@@ -2375,9 +2304,8 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS val > 'string'
 );
--- Expected: ERROR: invalid input syntax for type integer: "string"
 
--- Aggregate function in DEFINE (if not allowed)
+-- ERROR: aggregate function in DEFINE is not supported
 SELECT COUNT(*) OVER w
 FROM rpr_err
 WINDOW w AS (
@@ -2386,9 +2314,8 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS COUNT(*) > 0
 );
--- Expected: ERROR: aggregate functions are not allowed in DEFINE
 
--- Subquery in DEFINE (NOT SUPPORTED)
+-- Subquery in DEFINE is not supported
 SELECT COUNT(*) OVER w
 FROM rpr_err
 WINDOW w AS (
@@ -2397,9 +2324,6 @@ WINDOW w AS (
     PATTERN (A+)
     DEFINE A AS val > (SELECT max(val) FROM rpr_err)
 );
--- Expected: ERROR: cannot use subquery in DEFINE expression
-
--- Edge cases
 
 -- Pattern variable not used (should work, extra vars ignored)
 SELECT id, val, COUNT(*) OVER w as cnt
@@ -3414,7 +3338,6 @@ WINDOW w AS (
     PATTERN ((A{2000000000,2147483647}){2})
     DEFINE A AS val > 0
 );
--- Expected: ERROR at parse time before optimization
 
 -- Test: nested unbounded with large min causes overflow fallback
 EXPLAIN (COSTS OFF)
@@ -3563,7 +3486,6 @@ WINDOW w AS (
 )
 GROUP BY category
 ORDER BY category;
--- Expected: ERROR: syntax error at or near "GROUP"
 -- (GROUP BY after WINDOW clause is not valid SQL syntax)
 
 -- ============================================================
@@ -3937,7 +3859,6 @@ INSERT INTO rpr_sort VALUES
     (4, 'B', 40), (5, 'A', 50), (6, 'B', 60);
 
 -- RPR with GROUP BY (aggregate in DEFINE -> ERROR before GROUP BY interaction)
--- Expected: ERROR: aggregate functions are not allowed in DEFINE
 
 SELECT category,
        COUNT(*) as group_cnt,
@@ -3954,7 +3875,6 @@ WINDOW w AS (
 ORDER BY category;
 
 -- RPR with HAVING (same aggregate-in-DEFINE error)
--- Expected: ERROR: aggregate functions are not allowed in DEFINE
 
 SELECT category,
        COUNT(*) as group_cnt,
@@ -4189,7 +4109,7 @@ WINDOW w AS (
 );
 -- Expected: Success - exactly at RPR_VARID_MAX boundary
 
--- Test: 241 variables in PATTERN, 240 in DEFINE (exceeds limit with implicit TRUE)
+-- ERROR: 241 variables in PATTERN, 240 in DEFINE (exceeds limit with implicit TRUE)
 SELECT COUNT(*) OVER w FROM rpr_errors
 WINDOW w AS (
     ORDER BY id
@@ -4221,7 +4141,6 @@ WINDOW w AS (
     V221 AS val > 0, V222 AS val > 0, V223 AS val > 0, V224 AS val > 0, V225 AS val > 0, V226 AS val > 0, V227 AS val > 0, V228 AS val > 0, V229 AS val > 0, V230 AS val > 0,
     V231 AS val > 0, V232 AS val > 0, V233 AS val > 0, V234 AS val > 0, V235 AS val > 0, V236 AS val > 0, V237 AS val > 0, V238 AS val > 0, V239 AS val > 0, V240 AS val > 0
 );
--- Expected: ERROR - too many pattern variables (Maximum is 240)
 
 -- Test: Pattern nesting at maximum depth (depth 253)
 -- Note: 253 nested GROUP{3,7}? quantifiers; reluctant quantifiers are not
@@ -4247,14 +4166,12 @@ WINDOW w AS (
     PATTERN (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((A{3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?){3,7}?)
     DEFINE A AS val > 0
 );
--- Expected: ERROR - pattern nesting too deep
 
 DROP TABLE rpr_errors;
 
 -- ============================================================
--- Jacob's Patterns
+-- Basic Pattern Matching
 -- ============================================================
--- Basic pattern matching tests from jacob branch
 
 -- Test: A? (optional, greedy)
 SELECT id, val, count(*) OVER w AS c
@@ -4453,3 +4370,4 @@ FROM (SELECT id, val,
 ) s;
 
 DROP TABLE rpr_plan;
+RESET client_min_messages;
-- 
2.50.1 (Apple Git-155)