Re: SELECTs inside of VIEWs (WAS: INSTEAD OF trigger on VIEWs) - Mailing list pgsql-hackers

From Jeff Eckermann
Subject Re: SELECTs inside of VIEWs (WAS: INSTEAD OF trigger on VIEWs)
Date
Msg-id d6vbt1$tn4$1@news.hub.org
Whole thread Raw
In response to Re: INSTEAD OF trigger on VIEWs  (--= Tono =-- <tonodarmodjo@yahoo.com>)
List pgsql-hackers
""Jan B."" <jan@monso.de> wrote in message news:4293055C.6050409@monso.de...
>I tried using SELECTs inside of RULEs, but as I already explained in this 
>mail thread, the problem is, that a SELECT creates a result set, which can 
>not be discarded in SQL. This makes trouble when using asynchronous command 
>processing.

FWIW, I believe that the current development version has code which fixes 
this problem (i.e. allows for no return at all), along with some other 
enhancements.  Check the archives of the pgsql-hackers list for more 
information.

Last I heard, feature freeze for version 8.1 is expected in July, so this 
feature may be available in a stable version before very long.

>
> I have tried to modify my application in order to get a workaround, and 
> noticed the following behaviour:
>
> If there is one SELECT invoked by an INSERT, UPDATE or DELETE RULE, the 
> result table of the select will be passed to the application. The command 
> status (cmdStatus, i.e. "INSERT 141314 1") will be carried by this result 
> set. If there are multiple SELECTs invoked by RULEs, there are multiple 
> result sets passed to the application. I tested the behaviour and found 
> out that all result sets carry an empty "" string as a cmdStatus, but the 
> last one carries the actual cmdStatus of the INSERT, UPDATE or DELETE.
>
> The documentation at 
> http://www.postgresql.org/docs/8.0/interactive/rules-status.html does not 
> give a hint, whether this is the indended behaviour or not.
>
> Does anyone know, if it is intended that one query can create multiple 
> result tables with some of them carrying an empty string as cmdStatus? 
> Perhaps this is a bug?
>
> Note: Using psql to test this behaviour will not give the same results, as 
> the command status is not displayed by psql if there is a result table. If 
> there are multiple result tables, only the last result table is printed 
> out. PQexec of libpq also discards all, but the last result.
>
>
> Jan Behrens
>
>
>
> Russell Smith wrote:
>> On Tue, 24 May 2005 01:26 am, --= Tono =-- wrote:
>>  Would it be possible to add an INSTEAD OF rule that calls
>> a function.  You could then use that function as the trigger
>> you wanted.  I'm not even sure if this is possible.
>>
>> DO INSTEAD SELECT * FROM function(rowtype);
>>
>> Regards
>>
>> Russell Smith.
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
>      subscribe-nomail command to majordomo@postgresql.org so that your
>      message can get through to the mailing list cleanly
> 




pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Speeding up the Postgres lexer
Next
From: Tom Lane
Date:
Subject: Re: SELECTs inside of VIEWs (WAS: INSTEAD OF trigger on VIEWs)