Hi,

Background
==========
If the background workers connect to databases, some database-related commands
like ALTER DATABASE RENAME and ALTER DATABASE SET TABLESPACE cannot be done.
Users must do DROP EXTENSION related with workers, or terminate them by 
themselves
if they want to drop or alter the database.

Proposal
========
Based on above, I would like to propose to terminate background workers 
automatically
when such SQLs are executed.

This feature allows the DBMS daemon to send a termination signal to background 
workers
created by users currently operating on the database when executing commands 
that make
significant changes to the database.

To receive the termination signal, the background worker must call the
AcceptBackgroundWorkerCancel() function, using the database's OID and a flag
indicating whether to terminate. This means existing background worker processes
will not abruptly terminate.

This termination occurs when executing the DROP DATABASE, ALTER DATABASE RENAME 
TO,
or ALTER DATABASE SET TABLE SPACE commands, which check the existence of 
processes.

When a user creates a background worker to perform some data processing or 
monitoring,
and wants to terminate it along with the database deletion, this feature enables
achieving that goal.

The test set for this feature will be shared later.

How do you feel? Your feedback is very welcome.

Regards,
Aya Iwata
Fujitsu Limited

Attachment: v0001-0001-Allow-background-workers-to-be-terminated.patch
Description: v0001-0001-Allow-background-workers-to-be-terminated.patch

Reply via email to