mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
pg_upgrade: error if run from top of new PGDATA on Windows
Print a clear error message in this case, rather than wait for initdb --sync-only to generate a "Permission denied" error.
This commit is contained in:
parent
ef153ecc55
commit
e4c3c99ac3
@ -229,6 +229,26 @@ parseCommandLine(int argc, char *argv[])
|
|||||||
"PGDATAOLD", "-d", "old cluster data resides");
|
"PGDATAOLD", "-d", "old cluster data resides");
|
||||||
check_required_directory(&new_cluster.pgdata, &new_cluster.pgconfig,
|
check_required_directory(&new_cluster.pgdata, &new_cluster.pgconfig,
|
||||||
"PGDATANEW", "-D", "new cluster data resides");
|
"PGDATANEW", "-D", "new cluster data resides");
|
||||||
|
|
||||||
|
#ifndef WIN32
|
||||||
|
/*
|
||||||
|
* On Windows, initdb --sync-only will fail with a "Permission denied"
|
||||||
|
* error on file pg_upgrade_utility.log if pg_upgrade is run inside
|
||||||
|
* the new cluster directory, so we do a check here.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
char cwd[MAXPGPATH], new_cluster_pgdata[MAXPGPATH];
|
||||||
|
|
||||||
|
strlcpy(new_cluster_pgdata, new_cluster.pgdata, MAXPGPATH);
|
||||||
|
canonicalize_path(new_cluster_pgdata);
|
||||||
|
|
||||||
|
if (!getcwd(cwd, MAXPGPATH))
|
||||||
|
pg_fatal("cannot find current directory\n");
|
||||||
|
canonicalize_path(cwd);
|
||||||
|
if (path_is_prefix_of_path(new_cluster_pgdata, cwd))
|
||||||
|
pg_fatal("cannot run pg_upgrade from inside the new cluster data directory on Windows\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user