| From: | Wolfgang Walther <walther(at)technowledgy(dot)de> |
|---|---|
| To: | PostgreSQL Bugs <pgsql-bugs(at)lists(dot)postgresql(dot)org> |
| Subject: | Don't do that: Changing the working directory in a plpython function |
| Date: | 2020-11-20 15:11:29 |
| Message-ID: | 3930213a-5d04-7f38-fe94-fbd2bdbdfa4c@technowledgy.de |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
Hi,
this is on PG 12.5:
create extension plpython3u;
create function cwd() returns void
language plpython3u as $$
import os
os.chdir('/tmp')
$$;
select cwd();
create table t();
ERROR: could not open file "base/13457/2663": No such file or directory
LINE 1: create table t();
The server is now unusable, almost everything will throw.
Somebody did something similar on a server with a bit more stuff going
on and this gave:
PANIC: could not create file "pg_wal/xlogtemp.xxxxx": No such file or
directory
And then the whole PG server restarted.
It's not really that surprising - after the fact. Before, I wouldn't
have guessed that this has such an impact.
As a side-note: plperlu is obviously the same, but plperl blocks chdir.
I am not sure whether this is considered a bug or just in the category
"don't do that, stupid..."?
As a naive (super)user I wonder: Why can't PG just remember where the
data folder was when it started? It's not like I'm going to ever move
this folder while the server is running...
Best
Wolfgang
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Magnus Hagander | 2020-11-20 15:16:29 | Re: Don't do that: Changing the working directory in a plpython function |
| Previous Message | Heikki Linnakangas | 2020-11-20 13:44:19 | Re: BUG #16733: insert into on conflict(pk) do nothing error violates not-null constraint |