DECLARE CURSOR must not contain data-modifying statements in WITH

From: Andres Freund <andres(at)anarazel(dot)de>
To: PG Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: DECLARE CURSOR must not contain data-modifying statements in WITH
Date: 2011-09-21 16:19:43
Message-ID: 201109211819.44027.andres@anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi all,

Whats the reason for disallowing cursors on wCTEs? I am not sure I can follow
the comment:

/*
* We also disallow data-modifying WITH in a cursor. (This could be
* allowed, but the semantics of when the updates occur might be
* surprising.)
*/
if (result->hasModifyingCTE)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("DECLARE CURSOR must not contain data-modifying
statements in WITH")));

Given that cursors are about the only sensible way to return larger amounts of
data, that behaviour reduces the usefulness of wCTEs a bit.

Whats the exact cause of concern here? I personally don't think there is a
problem documenting that you should fetch the cursor fully before relying on
the updated tables to be in a sensible state. But that may be just me.

Thanks,

Andres

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Euler Taveira de Oliveira 2011-09-21 16:22:22 Re: Hot Backup with rsync fails at pg_clog if under load
Previous Message Heikki Linnakangas 2011-09-21 16:13:20 Re: Inlining comparators as a performance optimisation