Thread

  1. Re: Row pattern recognition

    Tatsuo Ishii <ishii@postgresql.org> — 2026-05-02T05:03:04Z

    Attached is the v47 patches for Row pattern recognition (SQL/RPR).
    
    Major changes from v46 include:
    
    - Change implementation of row pattern navigation operations using
      "1-slot model", which allows to implement more standard compliant
      features such as an offset argument, more row pattern navigation
      operations (FIRST, LAST) and compound forms.
    
    - Row pattern navigation operations now support FIRST, LAST and
      compound forms
    
    - Add JIT compilation support for all row pattern navigation
      operations (including compound forms)
    
    - Add tuplestore trim optimization for RPR PREV navigation
    
    - Window function last_value() now allows to set mark in certain cases
    
    - Change the implementation of reduced frame map. Now consumes less CPU and memory
    
    - Add more optimization (absorption). e.g. (A B B)+
    
    - Add planner integration tests (rpr_integration.sql)
    
    - Add src/backend/executor/README.rpr (previously was in ExecRPR.c)
    
    Current status:
    
    The series of patches are to implement the row pattern recognition
    (SQL/RPR) feature. Currently the implementation is a subset of SQL/RPR
    (ISO/IEC 19075-2:2016). Namely, implementation of some features of
    R020 (WINDOW clause). R010 (MATCH_RECOGNIZE) is out of the scope of
    the patches.
    
    Currently following features are implemented in the patches.
    
    - PATTERN
    - PATTERN regular expressions (+, *, ?)
      alternation (|), grouping () , {n}, {n,}, {n,m}, {,m}
      reluctant quantifiers (*? etc.),
    - DEFINE
    - INITIAL
    - AFTER MATCH SKIP TO PAST LAST ROW
    - AFTER MATCH SKIP TO NEXT ROW
    - Row pattern navigation (FIRST, LAST, PREV, NEXT and their compound forms)
    
    Currently following features are not implemented in the patches.
    
    - MEASURES
    - Pattern variable name qualified column reference (e.g. A.price)
    - SUBSET
    - SEEK
    - AFTER MATCH SKIP TO
    - AFTER MATCH SKIP TO FIRST
    - AFTER MATCH SKIP TO LAST
    - PATTERN regular expression  {- and -}, () (empty pattern)
      Anchors (^, $) are not permitted with RPR in Window clause by the
      standard.
    - PERMUTE
    - CLASSIFIER
    
    Regards,
    --
    Tatsuo Ishii
    SRA OSS K.K.
    English: http://www.sraoss.co.jp/index_en/
    Japanese:http://www.sraoss.co.jp