Eric Hallander <ehallander@tellium.com> writes:
> In the following snippet from ./src/backend/commands/dbcommands.c, I
> cannot see anywhere in the configuration where ALLOW_ABSOLUTE_DBPATHS
> gets set, and why this wouldn't be the default anyway. I was creating
> databases fine, but
> it is possible that I exported PGDATA2, and used this, as I see that
> this ifndef definition does not exist in the environment variable
> portion of the code.
The default configuration is that you MUST define an environment
variable in the postmaster's environment for each intended database
location, and then identify the location of a specific database by
environment variable name, not actual filesystem path.
There are fairly obvious security reasons for not letting database
creators tell the backend to scribble on any-random-pathname, so I
think this is a reasonable default. The DBA needs to be able to
restrict the set of allowed database locations.
In the long run we should get rid of this environment-variable-based
mechanism in favor of storing the info in a proper SQL table, but until
someone gets 'round to designing and coding that, I have no desire to
change the current behavior. Certainly "#define ALLOW_ABSOLUTE_DBPATHS"
is *dangerous*.
regards, tom lane