Re: Allow DELETE to use ORDER BY and LIMIT/OFFSET

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Allow DELETE to use ORDER BY and LIMIT/OFFSET
Дата
Msg-id 1272732.1639711078@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Allow DELETE to use ORDER BY and LIMIT/OFFSET  (Yugo NAGATA <nagata@sraoss.co.jp>)
Ответы Re: Allow DELETE to use ORDER BY and LIMIT/OFFSET  (Yugo NAGATA <nagata@sraoss.co.jp>)
Re: Allow DELETE to use ORDER BY and LIMIT/OFFSET  (Greg Stark <stark@mit.edu>)
Список pgsql-hackers
Yugo NAGATA <nagata@sraoss.co.jp> writes:
> We cannot use ORDER BY or LIMIT/OFFSET in the current
> DELETE statement syntax, so all the row matching the
> WHERE condition are deleted. However, the tuple retrieving
> process of DELETE is basically same as SELECT statement,
> so I think that we can also allow DELETE to use ORDER BY
> and LIMIT/OFFSET.

Indeed, this is technically possible, but we've rejected the idea
before and I'm not aware of any reason to change our minds.
The problem is that a partial DELETE is not very deterministic
about which rows are deleted, and that does not seem like a
great property for a data-updating command.  (The same applies
to UPDATE, which is why we don't allow these options in that
command either.)  The core issues are:

* If the sort order is underspecified, or you omit ORDER BY
entirely, then it's not clear which rows will be operated on.
The LIMIT might stop after just some of the rows in a peer
group, and you can't predict which ones.

* UPDATE/DELETE necessarily involve the equivalent of SELECT
FOR UPDATE, which may cause the rows to be ordered more
surprisingly than you expected, ie the sort happens *before*
rows are replaced by their latest versions, which might have
different sort keys.

We live with this amount of indeterminism in SELECT, but that
doesn't make it a brilliant idea to allow it in UPDATE/DELETE.

            regards, tom lane



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Greg Stark
Дата:
Сообщение: Re: WIP: WAL prefetch (another approach)
Следующее
От: Dilip Kumar
Дата:
Сообщение: Re: Add sub-transaction overflow status in pg_stat_activity