Re: `pg_restore --if-exists` clarification

Поиск
Список
Период
Сортировка
От Gulyás Attila
Тема Re: `pg_restore --if-exists` clarification
Дата
Msg-id CADnELphErTfH0_R-7g-4TM2v6fnPaLnbPoCYLag1ATGSxb9ivA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: `pg_restore --if-exists` clarification  (Kirk Parker <khp@equatoria.us>)
Ответы Re: `pg_restore --if-exists` clarification  ("David G. Johnston" <david.g.johnston@gmail.com>)
Список pgsql-docs
So `--if-exists` simply suppresses any notice / warning that would occur?

I'm sorry if I come off as obtuse, but I have literally no idea what `--clean` and `--if-exists` do when used together. I took the quote from the Stackoverflow answer on face value, because it sounded plausible and I can't understand `--if-exists` current description yet. Any clarification there would be an improvement in my opinion for people in similar situations (i.e., having little to no SQL knowledge, but still having to do basic DB admin tasks).

Appreciatively,
Attila

On Thu, Sep 28, 2023 at 12:01 PM Kirk Parker <khp@equatoria.us> wrote:


On Thu, Sep 28, 2023, 05:52 PG Doc comments form <noreply@postgresql.org> wrote:
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/16/app-pgrestore.html
Description:

Good Morning,

In the `pg_restore` docs
(https://www.postgresql.org/docs/current/app-pgrestore.html), `--if-exists`
states that it is to

> Use conditional commands (i.e., add an IF EXISTS clause)
> to drop database objects. This option is not valid unless
> --clean is also specified.", but not being a SQL expert,
> I'm having a hard time deciphering this.

Suggestion: Would you consider adding the sentence (or something similar)?

> "--clean makes pg_restore drop all objects first,
> and --if-exists prevents that non-existent objects
> cause a failure."
Source: https://stackoverflow.com/a/75136163/1498178

This is succinct, and tells exactly what one needs to know. Thank you and
have a great day!

Appreciatively,
Attila

But "failure" is not what happens.  If you read the part regarding --clean, you will see that it says:

(Unless --if-exists is used, this might generate some harmless error messages, if any objects were not present in the destination database.) [emphasis added]

with extra emphasis on the word "harmless" --  no failure is caused; the restore proceeds just fine.  

If anything were to change in this regard, it might be better to reconsider what we call the message (i.e.what language pg_restore emits in this scenario.)  It's true, I suppose, in a literal sense that it's an error in that pg_restore couldn't drop a table when instructed to, where no such table exists.  But pragmatically it doesn't matter, so why not reclassify this as a "warning" or a "notice"?

--Kirk

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

Предыдущее
От: Kirk Parker
Дата:
Сообщение: Re: `pg_restore --if-exists` clarification
Следующее
От: "David G. Johnston"
Дата:
Сообщение: Re: `pg_restore --if-exists` clarification