Hi MauMau, Ah. Sorry, I missed that part. As NTFS junctions and symbolic links are different (although they behave similarly), there seems only a minor inconvenience related to misleading error message i.e.
+ #ifdef WIN32 > + if (rmdir(linkloc) < 0 && errno != ENOENT) > + #else > if (unlink(linkloc) < 0 && errno != ENOENT) > + #endif > ereport(ERROR, > (errcode_for_file_access(), > errmsg("could not remove symbolic link \"%s\": %m", What is your opinion about it, Is it not worth changing ? . Thanks. On Wed, Jan 15, 2014 at 7:42 PM, MauMau <maumau...@gmail.com> wrote: > From: "Asif Naeem" <anaeem...@gmail.com> > > As you have >> > followed destroy_tablespace_directories() function, Is there any specific > reason not to use same logic to detect type of the file/link i.e. > “(lstat(linkloc, &st) == 0 && S_ISDIR(st.st_mode))”, It also seems have > more appropriate error message i.e. > > Thanks for reviewing and testing the patch. Yes, at first I did what you > mentioned, but modified the patch according to some advice in the mail > thread. During redo, create_tablespace_directories() needs to handle the > case where the $PGDATA/pg_tblspc/xxx is not a symlink but a directory even > on UNIX/Linux. Please see TablespaceCreateDbspace is(). > destroy_tablespace_directories() > doesn't have to handle such situation. > > Regards > MauMau > >