Thread

  1. Recursive queries?

    Michael Meskes <meskes@topsystem.de> — 1998-02-20T09:14:35Z

    I know that postgres originally was able to do recursive queries like
    
    retrieve* into a from a ...
    
    Is this still possible with PostgreSQL? If so, is it just for one statement
    or even as a block?
    
    This happens to be the area I worked on for several years.
    
    Michael
    -- 
    Dr. Michael Meskes, Project-Manager    | topsystem Systemhaus GmbH
    meskes@topsystem.de                    | Europark A2, Adenauerstr. 20
    meskes@debian.org                      | 52146 Wuerselen
    Go SF49ers! Go Rhein Fire!             | Tel: (+49) 2405/4670-44
    Use Debian GNU/Linux!                  | Fax: (+49) 2405/4670-10
    
    
  2. Re: [HACKERS] Recursive queries?

    Vadim Mikheev <vadim@sable.krasnoyarsk.su> — 1998-02-20T09:59:17Z

    Michael Meskes wrote:
    > 
    > I know that postgres originally was able to do recursive queries like
    > 
    > retrieve* into a from a ...
    > 
    > Is this still possible with PostgreSQL? If so, is it just for one statement
    > or even as a block?
    
    Yes, it's possible. This is from spi.txt:
    ---
                             Data changes visibility
    
       PostgreSQL data changes visibility rule: during a query execution, data
    changes made by the query itself (via SQL-function, SPI-function, triggers)
    are invisible to the query scan.  For example, in query
    
       INSERT INTO a SELECT * FROM a
    
       tuples inserted are invisible for SELECT' scan.  In effect, this
    duplicates the database table within itself (subject to unique index
    rules, of course) without recursing.
    
       Changes made by query Q are visible by queries which are started after
    query Q, no matter whether they are started inside Q (during the execution
    of Q) or after Q is done.
    ---
    
    Second query 'INSERT INTO a SELECT * FROM a' inside BEGIN/END
    will see tuples inserted by first one. Pg uses special CommandCounter
    to distinguish changes made in the same transaction.
    
    > This happens to be the area I worked on for several years.
    
    I also like such areas :)
    
    Vadim