Hello, This is a feature I have wanted for a long time, thank you for your work on this. The latest patch [1] applied cleanly for me. In dbcommands.c the comment references a 5 second delay, I don't see where that happens, am I missing something?
I tested both the dropdb program and the in database commands. Without FORCE I get the expected error message about active connections. postgres=# DROP DATABASE testdb; ERROR: source database "testdb" is being accessed by other users DETAIL: There is 1 other session using the database. With FORCE the database drops cleanly. postgres=# DROP DATABASE testdb FORCE; DROP DATABASE The active connections get terminated as expected. Thanks, [1] https://www.postgresql.org/message-id/attachment/99536/drop-database-force-20190310_01.patch *Ryan Lambert* RustProof Labs On Sun, Mar 10, 2019 at 12:54 PM Filip Rembiałkowski < filip.rembialkow...@gmail.com> wrote: > Thank you. Updated patch attached. > > On Sat, Mar 9, 2019 at 2:53 AM Thomas Munro <thomas.mu...@gmail.com> > wrote: > > > > On Wed, Mar 6, 2019 at 1:39 PM Filip Rembiałkowski > > <filip.rembialkow...@gmail.com> wrote: > > > Here is Pavel's patch rebased to master branch, added the dropdb > > > --force option, a test case & documentation. > > > > Hello, > > > > cfbot.cputube.org says this fails on Windows, due to a missing > semicolon here: > > > > #ifdef HAVE_SETSID > > kill(-(proc->pid), SIGTERM); > > #else > > kill(proc->pid, SIGTERM) > > #endif > > > > The test case failed on Linux, I didn't check why exactly: > > > > Test Summary Report > > ------------------- > > t/050_dropdb.pl (Wstat: 65280 Tests: 13 Failed: 2) > > Failed tests: 12-13 > > Non-zero exit status: 255 > > Parse errors: Bad plan. You planned 11 tests but ran 13. > > > > +/* Time to sleep after isuing SIGTERM to backends */ > > +#define TERMINATE_SLEEP_TIME 1 > > > > s/isuing/issuing/ > > > > But, hmm, this macro doesn't actually seem to be used in the patch. > > Wait, is that because the retry loop forgot to actually include the > > sleep? > > > > + /* without "force" flag raise exception immediately, or after > > 5 minutes */ > > > > Normally we call it an "error", not an "exception". > > > > -- > > Thomas Munro > > https://enterprisedb.com >