|
|
|
@ -397,7 +397,6 @@ GetNewRelFileNode(Oid reltablespace, Relation pg_class, char relpersistence) |
|
|
|
|
{ |
|
|
|
|
RelFileNodeBackend rnode; |
|
|
|
|
char *rpath; |
|
|
|
|
int fd; |
|
|
|
|
bool collides; |
|
|
|
|
BackendId backend; |
|
|
|
|
|
|
|
|
@ -445,12 +444,10 @@ GetNewRelFileNode(Oid reltablespace, Relation pg_class, char relpersistence) |
|
|
|
|
|
|
|
|
|
/* Check for existing file of same name */ |
|
|
|
|
rpath = relpath(rnode, MAIN_FORKNUM); |
|
|
|
|
fd = BasicOpenFile(rpath, O_RDONLY | PG_BINARY); |
|
|
|
|
|
|
|
|
|
if (fd >= 0) |
|
|
|
|
if (access(rpath, F_OK) == 0) |
|
|
|
|
{ |
|
|
|
|
/* definite collision */ |
|
|
|
|
close(fd); |
|
|
|
|
collides = true; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
@ -458,13 +455,9 @@ GetNewRelFileNode(Oid reltablespace, Relation pg_class, char relpersistence) |
|
|
|
|
/*
|
|
|
|
|
* Here we have a little bit of a dilemma: if errno is something |
|
|
|
|
* other than ENOENT, should we declare a collision and loop? In |
|
|
|
|
* particular one might think this advisable for, say, EPERM. |
|
|
|
|
* However there really shouldn't be any unreadable files in a |
|
|
|
|
* tablespace directory, and if the EPERM is actually complaining |
|
|
|
|
* that we can't read the directory itself, we'd be in an infinite |
|
|
|
|
* loop. In practice it seems best to go ahead regardless of the |
|
|
|
|
* errno. If there is a colliding file we will get an smgr |
|
|
|
|
* failure when we attempt to create the new relation file. |
|
|
|
|
* practice it seems best to go ahead regardless of the errno. If |
|
|
|
|
* there is a colliding file we will get an smgr failure when we |
|
|
|
|
* attempt to create the new relation file. |
|
|
|
|
*/ |
|
|
|
|
collides = false; |
|
|
|
|
} |
|
|
|
|