On Mon, Oct 14, 2013 at 11:00 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: > Robert Haas <robertmh...@gmail.com> writes: >> On Thu, Oct 10, 2013 at 9:34 AM, Amit Kapila <amit.kapil...@gmail.com> wrote: >>> On further analysis, I found that hang occurs in some of Windows >>> API(FindFirstFile, RemoveDirectroy) when symlink path >>> (pg_tblspc/spcoid/TABLESPACE_VERSION_DIRECTORY) is used in these >>> API's. For above testcase, it will hang in path >>> destroy_tablespace_directories->ReadDir->readdir->FindFirstFile > >> Well, that sucks. So it's a Windows bug. > > It's not clear to me that we should do anything about this at all, > except perhaps document that people should avoid long tablespace > path names on an unknown set of Windows versions.
There are few more relatively minor issues with long paths in Windows. For Example: In function CreateTableSpace(), below check protects to create tablespace on longer paths. if (strlen(location) + 1 + strlen(TABLESPACE_VERSION_DIRECTORY) + 1 + OIDCHARS + 1 + OIDCHARS + 1 + OIDCHARS > MAXPGPATH) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), errmsg("tablespace location \"%s\" is too long", location))); MAXPGPATH is defined to be 1024, whereas the windows API's used in PG have limit of 260 due to which error comes directly from API's use rather than from above check. So, one of the change I am thinking is to define MAXPGPATH for windows separately. > We should not > be in the business of working around any and every bug coming out > of Redmond. This bug leads to an uninterruptible hang (I am not able to kill process by task manager or any other way) and the corresponding backend started consuming ~100% of CPU, so user doesn't have much options but to restart his m/c. Any form of shutdown of PG is also not successful. I had proposed to fix this issue based on its severity, but if you feel that we should keep the onus of such usage on user, then I think I can try to fix other relatively minor problems on usage of long paths. With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers