Thread

  1. RE: [HACKERS] Recursive queries?

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

    But such a statement is executed only once, isn't it?
    
    Postquel did execute a retrieve* into as long as it was able to generate
    new data.
    
    Michael
    
    P.S.: Glad I'm not the only one interested in this. :-)
    
    --
    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
    
    > -----Original Message-----
    > From:	Vadim B. Mikheev [SMTP:vadim@sable.krasnoyarsk.su]
    > Sent:	Friday, February 20, 1998 10:59 AM
    > To:	Michael Meskes
    > Cc:	PostgreSQL Hacker
    > Subject:	Re: [HACKERS] Recursive queries?
    > 
    > 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
    
    
  2. Re: [HACKERS] Recursive queries?

    Thomas Lockhart <lockhart@alumni.caltech.edu> — 1998-02-20T16:44:15Z

    > But such a statement is executed only once, isn't it?
    >
    > Postquel did execute a retrieve* into as long as it was able to generate
    > new data.
    
    OK, I'll bite :)
    Can you give an example of this? How does new data become available in the
    middle of a transaction? Just curious...