Re: UPDATE crash in HEAD and 8.1 - Mailing list pgsql-hackers

From Alvaro Herrera
Subject Re: UPDATE crash in HEAD and 8.1
Date
Msg-id 20060620180313.GW26882@surnet.cl
Whole thread Raw
In response to Re: UPDATE crash in HEAD and 8.1  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: UPDATE crash in HEAD and 8.1  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: UPDATE crash in HEAD and 8.1  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Tom Lane wrote:
> Alvaro Herrera <alvherre@commandprompt.com> writes:
> > update pk set id = max(id) + 2;
> 
> I'm fairly sure this query is illegal per spec.  There are ancient
> discussions in the archives about whether aggregates in an UPDATE target
> list can have a consistent interpretation or not.  We never found one,
> but never got around to disallowing it either.  Maybe it's time.  If you
> try it with something like sum() you don't get a crash, but you do get
> rather bizarre behavior.

Yeah, I agree we should disallow it.  For the curious, the bizarre behavior
is

alvherre=# update pk set id = count(id) ;
ERROR:  ctid is NULL
alvherre=# update pk set id = sum(id) ;
ERROR:  ctid is NULL

Clearly not a very useful error message.

> Having said that, this may well expose a bug in the MAX-optimization
> code that has consequences for more useful queries.  I'll take a look
> later today if no one beats me to it.

I refrain -- tried following it but I don't know that code at all.

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.


pgsql-hackers by date:

Previous
From: Andrew Dunstan
Date:
Subject: Re: UPDATE crash in HEAD and 8.1
Next
From: Wade Klaver
Date:
Subject: Re: Initdb segfaults during "initializing pg_authid"