Re: Writeable CTEs and empty relations
От | Marko Tiikkaja |
---|---|
Тема | Re: Writeable CTEs and empty relations |
Дата | |
Msg-id | 4B734062.2020109@cs.helsinki.fi обсуждение исходный текст |
Ответ на | Re: Writeable CTEs and empty relations (Marko Tiikkaja <marko.tiikkaja@cs.helsinki.fi>) |
Ответы |
Re: Writeable CTEs and empty relations
|
Список | pgsql-hackers |
On 2010-02-11 00:50 +0200, Marko Tiikkaja wrote: > On 2010-02-10 23:57 +0200, Tom Lane wrote: >> Robert Haas <robertmhaas@gmail.com> writes: >>> If the executor has buried in it the assumption that the snapshot >>> can't change after startup, then does that mean that we need to start >>> up and shut down the executor for each subquery? >> >> Yes, I think so. That's the way it's always worked in the past; >> see for example PortalRunMulti() and ProcessQuery(). I think trying >> to change that is a high-risk, low-reward activity. >> >> This probably means that the planner output for queries involving >> writeable CTEs has to be a separate PlannedStmt per such CTE. > > I'm looking at this, but I can't think of any good way of associating > the tuplestores from PortalRunMulti() with the correct CTEs. Any ideas? Ok, what about the following: - after planning the original query, standard_planner() goes through the list of top-levelCTEs and assigns a running number for each of the DML WITHs, in the order they will be executed and returns a list of PlannedStmts. all necessary statements wi have a flag signaling that the result should be stored in a tuplestore.- the portal keeps the list of tuplestores around and passes that list to every query through PlannedStmt. it keeps on executing the statements until it finds a PlannedStmt that doesn't want its results stored anywhere and thenfrees the list of tuplestores Does this sound reasonable? And more importantly, am I going to be wasting my time implementing this? The 15th isn't that far away.. Regards, Marko Tiikkaja
В списке pgsql-hackers по дате отправления: