BUG #13853: initdb to UNC path

Started by Nuri Boardmanover 10 years ago4 messagesbugs
Jump to latest
#1Nuri Boardman
NBoardman@idtus.com

The following bug has been logged on the website:

Bug reference: 13853
Logged by: Nuri Boardman
Email address: NBoardman@idtus.com
PostgreSQL version: 9.4.2
Operating system: Windows 7
Description:

when i run this command (initdb with UNC path)
pg_ctl initdb -D \\localhost\Users\nboardman\test

i get the following (error) output

The files belonging to this database system will be owned by user
"NBoardman".
This user must also own the server process.

The database cluster will be initialized with locale "English_United
States.1252
".
The default database encoding has accordingly been set to "WIN1252".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory //localhost/Users/nboardman/test
... ok

creating subdirectories ... initdb: could not create directory
"//localhost/User
s": File exists
initdb: removing contents of data directory
"//localhost/Users/nboardman/test"
pg_ctl: database system initialization failed

finally, if this is illegal, the documentation does not indicate the path
has to be a windows path
from http://www.postgresql.org/docs/9.4/static/app-initdb.html

-D directory
--pgdata=directory
This option specifies the directory where the database cluster should be
stored. This is the only information required by initdb, but you can avoid
writing it by setting the PGDATA environment variable, which can be
convenient since the database server (postgres) can find the database
directory later by the same variable.

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#2John R Pierce
pierce@hogranch.com
In reply to: Nuri Boardman (#1)
Re: BUG #13853: initdb to UNC path

On 1/7/2016 8:14 AM, NBoardman@idtus.com wrote:

The following bug has been logged on the website:

Bug reference: 13853
Logged by: Nuri Boardman
Email address:NBoardman@idtus.com
PostgreSQL version: 9.4.2
Operating system: Windows 7
Description:

when i run this command (initdb with UNC path)
pg_ctl initdb -D \\localhost\Users\nboardman\test

i get the following (error) output

The files belonging to this database system will be owned by user
"NBoardman".
This user must also own the server process.

The database cluster will be initialized with locale "English_United
States.1252
".
The default database encoding has accordingly been set to "WIN1252".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory //localhost/Users/nboardman/test
... ok

creating subdirectories ... initdb: could not create directory
"//localhost/Users": File exists
initdb: removing contents of data directory
"//localhost/Users/nboardman/test"
pg_ctl: database system initialization failed

finally, if this is illegal, the documentation does not indicate the path
has to be a windows path
fromhttp://www.postgresql.org/docs/9.4/static/app-initdb.html

does it work if you leave out the \\localhost part? using network
paths for database storage is NOT recommended.

the documentation is OS independent, things like 'paths' are OS specific

--
john r pierce, recycling bits in santa cruz

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: John R Pierce (#2)
Re: BUG #13853: initdb to UNC path

John R Pierce <pierce@hogranch.com> writes:

On 1/7/2016 8:14 AM, NBoardman@idtus.com wrote:

fixing permissions on existing directory //localhost/Users/nboardman/test
... ok

creating subdirectories ... initdb: could not create directory
"//localhost/Users": File exists

Hm. AFAICS, this failure must have occurred inside pg_mkdir_p, and what
it implies is that stat(2) either failed entirely for "//localhost/Users",
or claimed it isn't a directory. Either one seems more like a system
problem than our problem.

does it work if you leave out the \\localhost part? using network
paths for database storage is NOT recommended.

This is true, and it's not an unreasonable bet that stat() is misbehaving
because it's a network path.

Having said that, I wonder why initdb is coded to use pg_mkdir_p rather
than plain mkdir for creating subdirectories after the datadir has been
created. There is basically no advantage there, and there's certainly
scope for things to go wrong, as this example shows.

regards, tom lane

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

#4Nuri Boardman
NBoardman@idtus.com
In reply to: Tom Lane (#3)
Re: BUG #13853: initdb to UNC path

This command

pg_ctl.exe initdb -D localhost\Users\nboardman\test
just creates the whole DB locally starting at the current directory, and then going .\localhost\Users\... etc

-----Original Message-----
From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
Sent: Thursday, January 07, 2016 2:21 PM
To: John R Pierce
Cc: Nuri Boardman; pgsql-bugs@postgresql.org
Subject: Re: [BUGS] BUG #13853: initdb to UNC path

John R Pierce <pierce@hogranch.com> writes:

On 1/7/2016 8:14 AM, NBoardman@idtus.com wrote:

fixing permissions on existing directory
//localhost/Users/nboardman/test ... ok

creating subdirectories ... initdb: could not create directory
"//localhost/Users": File exists

Hm. AFAICS, this failure must have occurred inside pg_mkdir_p, and what it implies is that stat(2) either failed entirely for "//localhost/Users", or claimed it isn't a directory. Either one seems more like a system problem than our problem.

does it work if you leave out the \\localhost part? using network
paths for database storage is NOT recommended.

This is true, and it's not an unreasonable bet that stat() is misbehaving because it's a network path.

Having said that, I wonder why initdb is coded to use pg_mkdir_p rather than plain mkdir for creating subdirectories after the datadir has been created. There is basically no advantage there, and there's certainly scope for things to go wrong, as this example shows.

regards, tom lane

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs