Paul Tilles <Paul.Tilles@noaa.gov> writes:
> I am wondering if one of the previous executions of psql is doing some
> "back room" work in the database while allowing the script to continue.
It takes finite time for the backend to quit, and psql doesn't wait
around for that to happen. I've noticed that on many systems it seems
that the kernel scheduler actively discriminates against an exiting
backend --- maybe it thinks it's a low-priority background process?
The amount of work needed to start a new psql and a new backend
vastly exceeds what it takes to quit (unless you've got lots of temp
tables to drop, or some such), and yet people report cases like this
pretty often.
We could fix it by making PQfinish() wait for the connection to drop,
but that cure could be worse than the disease; most apps would just
see this as useless delay.
In the meantime, a sleep(1) or some such before trying to drop a
recently-used database ought to be a usable workaround.
regards, tom lane