Re: BUG #18892: When the view already exists, CREATE OR REPLACE VIEW does not check whether the table exists.

From: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
To: gchen(at)s2now(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18892: When the view already exists, CREATE OR REPLACE VIEW does not check whether the table exists.
Date: 2025-04-12 19:32:37
Message-ID: CAKFQuwaczG7zLiutpk7WzZc-8v2avugcbNq0OcLZbk+0EutWSA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Sat, Apr 12, 2025 at 11:59 AM PG Bug reporting form <
noreply(at)postgresql(dot)org> wrote:

> The following bug has been logged on the website:
>
> Bug reference: 18892
> Logged by: Gavin
> Email address: gchen(at)s2now(dot)com
> PostgreSQL version: 16.8
> Operating system: Red Hat Enterprise Linux release 9.5
> Description:
>
>

> However, as demonstrated in my test demo, when
> the view already exists, running CREATE OR REPLACE VIEW does not check
> whether the table exists.

Because of the whole shared namespace setup it would be impossible for a
table of that name to exist when executing the "or replace" branch since
the view being replaced occupies that name within the namespace. Any check
for an actual table would return false. And "or replace" only happens if a
view of that name exists.

Kirill's answer is correct; though it is a bit annoying that "create view"
cannot detect the infinite recursion inherent in its body.

David J.

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Robins Tharakan 2025-04-13 12:11:00 Re: BUG #18893: Segfault during analyze pg_database
Previous Message Kirill Reshke 2025-04-12 19:19:19 Re: BUG #18892: When the view already exists, CREATE OR REPLACE VIEW does not check whether the table exists.