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
>
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 |