Unexpected behavior of DROP VIEW/TABLE IF EXISTS

From: Peter Moser <pitiz29a(at)gmail(dot)com>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Unexpected behavior of DROP VIEW/TABLE IF EXISTS
Date: 2018-06-26 15:23:18
Message-ID: c4877222-f329-0b6e-e15a-65a41d177bc7@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,
I want to delete a table X, that may not exist, hence I execute

DROP TABLE IF EXISTS X;

However, if X is a view, I get an error

ERROR: "X" is not a table
HINT: Use DROP VIEW to remove a view.
SQL state: 42809

That is unexpected and also difficult to handle, if I want to be sure
that I can delete all old tables *and* views called X, and create a new
view for instance with

CREATE VIEW X AS ....

I cannot do that safely, because having both DROP commands would for
sure cause an error and therefore a rollback.

What do you think, is it worth to create a patch to solve this issue,
where a DROP TABLE does not fail, if the given name is actually a VIEW
or vice-versa?

Best regards,
Peter

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Charles Cui 2018-06-26 15:25:21 Re: [GSoC] working status
Previous Message Amit Kapila 2018-06-26 15:13:30 Re: Thinko/typo in ExecSimpleRelationInsert