Re: BUG #16177: pg_event_trigger_ddl_commands() returns empty setfor ddl_command_start and "drop table"

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема Re: BUG #16177: pg_event_trigger_ddl_commands() returns empty setfor ddl_command_start and "drop table"
Дата
Msg-id 20191224161828.GA14840@alvherre.pgsql
обсуждение исходный текст
Ответ на Re: BUG #16177: pg_event_trigger_ddl_commands() returns empty set forddl_command_start and "drop table"  (Andrei Pozolotin <andrei.pozolotin@gmail.com>)
Ответы Re: BUG #16177: pg_event_trigger_ddl_commands() returns empty set forddl_command_start and "drop table"  (Andrei Pozolotin <andrei.pozolotin@gmail.com>)
Список pgsql-bugs
Hello,

On 2019-Dec-23, Andrei Pozolotin wrote:

> 1. thank you for the idea, I have just tried that
> 
> 2. I could not make it work, since "sql_drop" event
> happens **after** the "drop table" has already being attempted
> and failed due to table oid dependencies

Well, that's really disappointing, but now that you say it, I remember
that yes we had to save all table info prior to firing the trigger
because it (the trigger) would run after the drop.  I think there was a
restriction that forced us to do things that way, but TBH I don't
remember clearly.

> 3. you may find it curious that I was in fact trying to improve on the
> following trigger function:
> https://github.com/2ndQuadrant/pglogical#automatic-assignment-of-replication-sets-for-new-tables
> to make it work for "drop table" as well

That makes sense.

> 4. my current workaround is to move trigger logic for "create table"/"drop
> table"
> outside of postgre into the app layer, essentially doing via execute()
> intercept:
> * replicate_ddl_command("create table;  replication_set_add_table();")
> * replicate_ddl_command("replication_set_remove_table(); drop table;")

That seems a decent workaround, if suboptimal.

> 5. nonetheless, can you suggest any other way to make "event_trigger" work
> for this scenario:
> https://github.com/2ndQuadrant/pglogical#automatic-assignment-of-replication-sets-for-new-tables
> ?

I wonder if it's possible for pglogical to register pg_depend entries to
the replication set, so that the repset membership is dropped alongside
the table.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



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

Предыдущее
От: Mahendra Singh
Дата:
Сообщение: Assert failure due to "drop schema pg_temp_3 cascade" for temporarytables and \d+ is not showing any info after drooping temp table schema
Следующее
От: Andrei Pozolotin
Дата:
Сообщение: Re: BUG #16177: pg_event_trigger_ddl_commands() returns empty set forddl_command_start and "drop table"