BUG #13658: DELETE with syntax error in subselect deletes ALL

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема BUG #13658: DELETE with syntax error in subselect deletes ALL
Дата
Msg-id CAKFQuwb6YZof2EKWwOUgy5o+kE93eCF-y3hT9wgQCrHsrXUZeA@mail.gmail.com
обсуждение исходный текст
Ответ на BUG #13658: DELETE with syntax error in subselect deletes ALL  (jesper@udby.com)
Ответы Re: BUG #13658: DELETE with syntax error in subselect deletes ALL  ("David G. Johnston" <david.g.johnston@gmail.com>)
Список pgsql-bugs
On Thursday, October 1, 2015, <jesper@udby.com
<javascript:_e(%7B%7D,'cvml','jesper@udby.com');>> wrote:

>
> -- Failure #1
> DELETE FROM uid_child WHERE parent_uid IN (SELECT parent_uid FROM
> uid_parent
> WHERE id=999);
> -- Gives (pgAdmin III): Query returned successfully: 0 rows affected, 21 ms
> execution time.
> -- psql: DELETE 0
> -- Should fail as there is no "parent_uid" in table uid_parent
>
> -- Failure #2
> DELETE FROM uid_child WHERE parent_uid IN (SELECT parent_uid FROM
> uid_parent
> WHERE id=1);
> -- Gives (pgAdmin III): Query returned successfully: 6 rows affected, 11 ms
> execution time.
> -- psql: DELETE 6
> -- Should fail - and this is rather important, as it actually deletes
> everything in uid_child as it is...
>
>
>
Not a bug.  You made the subquery into a correlated subquery by referencing
a value in the containing part of the query.  While I've now come to the
conclusion that this dynamic could be better treated in the documentation
it cannot be changed given the usefulness of such a construct.  The
second best advice I can give is to prefix columns in subqueries with ther
source relation.  The best advice is to make sure to test your destructive
queries before executing them.

David J.

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: BUG #13658: DELETE with syntax error in subselect deletes ALL
Следующее
От: "David G. Johnston"
Дата:
Сообщение: Re: BUG #13658: DELETE with syntax error in subselect deletes ALL