Re: FOR UPDATE versus WITH --- change 8.4 too?
От | Andres Freund |
---|---|
Тема | Re: FOR UPDATE versus WITH --- change 8.4 too? |
Дата | |
Msg-id | 200910271821.58058.andres@anarazel.de обсуждение исходный текст |
Ответ на | Re: FOR UPDATE versus WITH --- change 8.4 too? (Robert Haas <robertmhaas@gmail.com>) |
Список | pgsql-hackers |
On Tuesday 27 October 2009 18:02:53 Robert Haas wrote: > On Tue, Oct 27, 2009 at 10:50 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > > In yesterday's discussions about FOR UPDATE there was some mention of > > making it not propagate into WITH subqueries: > > http://archives.postgresql.org/pgsql-hackers/2009-10/msg01540.php > > That is, given > > WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE > > should foo be locked FOR UPDATE or not? The current behavior is that > > the code attempts to propagate FOR UPDATE into the WITH, and fails > > (the parser rejects it in some cases, and the planner in others --- > > AFAICT there is no case where it actually works). This is pretty > > useless, and it's also at odds with the philosophy we adopted that WITH > > queries execute independently of the primary query. So I think there > > was consensus to change it to have FOR UPDATE ignore WITH references. > > > > What I'm wondering at the moment is if there's any objection to > > back-patching the change into 8.4. Given the lack of any way to have a > > working query depend on this behavior, it doesn't seem that there could > > be a problem, but can anyone think of an objection I missed? > > If it doesn't have any effect anyway, what's the virtue of back-patching > it? > > It seems like we might want to throw an error rather than silently > ignoring it, but that obviously wouldn't be back-patchable. Because it makes it impossible to use SELECT FOR UPDATE with a CTE atm? Which very well can be considered a bug. Andres
В списке pgsql-hackers по дате отправления: