pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Kong Man <kong_mansatiansin@hotmail.com>
To: tgl@sss.pgh.pa.us
Cc: vyegorov@gmail.com
Cc: pgsql-sql@postgresql.org
Subject: Re: Writeable CTE Not Working?
Date: Tue, 29 Jan 2013 18:45:56 -0800
Message-ID: <DUB116-W353526CD12D2106765BAE08B1E0@phx.gbl> (raw)
In-Reply-To: <18861.1359508600@sss.pgh.pa.us>
References: <DUB116-W6555FD44F7B4D966C07B48B1F0@phx.gbl>
	<CAGnEbohaO2r8Zg=PXNsAOEG+c+8oUwO_2z7X6QKj+3QE=wtDbA@mail.gmail.com>
	<DUB116-W10DDC6C15D2D368AD772C08B1F0@phx.gbl>
	<18861.1359508600@sss.pgh.pa.us>
List-Unsubscribe: <mailto:majordomo@postgresql.org?body=unsub%20pgsql-sql>


> I think this explanation is wrong --- if you run the query with EXPLAIN
> ANALYZE, you can see from the rowcounts that the writable CTE *does* get
> run to completion, as indeed is stated to be the behavior in the fine
> manual.
> 
> However, for a case like this where the main query isn't reading from
> the CTE, the CTE will get cycled to completion after the main query is
> done.  I think what is happening is that the main query is updating all
> the rows in the table, and then when the CTE comes along it thinks the
> rows are already updated in the current command, so it doesn't replace
> 'em a second time.  This is a consequence of the fact that the same
> command-counter ID is used throughout the query.  My recollection is
> that that choice was intentional and that doing it differently would
> break use-cases that are less outlandish than this one.  I don't recall
> specific examples though.

Cool.  Now I understand it much better.  

> Why are you trying to update the same table in two different parts of
> this query, anyway?  The best you can really hope for with that is
> unspecified behavior --- we will surely not promise that one of them
> completes before the other starts, so in general there's no way to be
> sure which one would process a particular row first.

It was just my misuse of writable CTE thinking it would be more efficient than separate statements.

Best regards,
-Kong
 		 	   		  =

view thread (5+ messages)

Message-ID: <DUB116-W353526CD12D2106765BAE08B1E0@phx.gbl>
Permalink:  ../DUB116-W353526CD12D2106765BAE08B1E0@phx.gbl/
Also on:    postgresql.org/message-id/DUB116-W353526CD12D2106765BAE08B1E0@phx.gbl

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: kong_mansatiansin@hotmail.com, tgl@sss.pgh.pa.us, vyegorov@gmail.com
  Subject: Re: Writeable CTE Not Working?
  In-Reply-To: <DUB116-W353526CD12D2106765BAE08B1E0@phx.gbl>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox