RE: [HACKERS] Recursive queries?

Michael Meskes <meskes@topsystem.de>

From: "Meskes, Michael" <meskes@topsystem.de>
To: "'Vadim B. Mikheev'" <vadim@sable.krasnoyarsk.su>, Michael Meskes <meskes@topsystem.de>
Cc: PostgreSQL Hacker <pgsql-hackers@postgreSQL.org>
Date: 1998-02-20T10:35:18Z
Lists: pgsql-hackers
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