Re: dropdb --force

From: Ryan Lambert <ryan(at)rustprooflabs(dot)com>
To: Filip Rembiałkowski <filip(dot)rembialkowski(at)gmail(dot)com>
Cc: Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, Marti Raudsepp <marti(at)juffo(dot)org>, Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>, Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: dropdb --force
Date: 2019-03-31 02:21:18
Message-ID: CAN-V+g_3YRqjs1jZc1b-0_VhTnzeAHX=Ouk32v18RHqrm6Y3xg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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(dot)rembialkowski(at)gmail(dot)com> wrote:

> Thank you. Updated patch attached.
>
> On Sat, Mar 9, 2019 at 2:53 AM Thomas Munro <thomas(dot)munro(at)gmail(dot)com>
> wrote:
> >
> > On Wed, Mar 6, 2019 at 1:39 PM Filip Rembiałkowski
> > <filip(dot)rembialkowski(at)gmail(dot)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
>

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2019-03-31 02:24:51 Re: dropdb --force
Previous Message Tomas Vondra 2019-03-31 02:14:25 Re: patch to allow disable of WAL recycling