Fix assign_pgstat_temp_directory() to ensure the directory path is
canonicalized. Avoid the need to elog(FATAL) on out-of-memory.
This commit is contained in:
parent
ac73ced725
commit
04f2403820
@ -10,7 +10,7 @@
|
|||||||
* Written by Peter Eisentraut <peter_e@gmx.net>.
|
* Written by Peter Eisentraut <peter_e@gmx.net>.
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.503 2009/04/23 00:23:45 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.504 2009/05/03 20:09:54 tgl Exp $
|
||||||
*
|
*
|
||||||
*--------------------------------------------------------------------
|
*--------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -7618,18 +7618,27 @@ assign_pgstat_temp_directory(const char *newval, bool doit, GucSource source)
|
|||||||
{
|
{
|
||||||
if (doit)
|
if (doit)
|
||||||
{
|
{
|
||||||
|
char *canon_val = guc_strdup(ERROR, newval);
|
||||||
|
char *tname;
|
||||||
|
char *fname;
|
||||||
|
|
||||||
|
canonicalize_path(canon_val);
|
||||||
|
|
||||||
|
tname = guc_malloc(ERROR, strlen(canon_val) + 12); /* /pgstat.tmp */
|
||||||
|
sprintf(tname, "%s/pgstat.tmp", canon_val);
|
||||||
|
fname = guc_malloc(ERROR, strlen(canon_val) + 13); /* /pgstat.stat */
|
||||||
|
sprintf(fname, "%s/pgstat.stat", canon_val);
|
||||||
|
|
||||||
if (pgstat_stat_tmpname)
|
if (pgstat_stat_tmpname)
|
||||||
free(pgstat_stat_tmpname);
|
free(pgstat_stat_tmpname);
|
||||||
|
pgstat_stat_tmpname = tname;
|
||||||
if (pgstat_stat_filename)
|
if (pgstat_stat_filename)
|
||||||
free(pgstat_stat_filename);
|
free(pgstat_stat_filename);
|
||||||
|
pgstat_stat_filename = fname;
|
||||||
|
|
||||||
pgstat_stat_tmpname = guc_malloc(FATAL, strlen(newval) + 12); /* /pgstat.tmp */
|
return canon_val;
|
||||||
pgstat_stat_filename = guc_malloc(FATAL, strlen(newval) + 13); /* /pgstat.stat */
|
|
||||||
|
|
||||||
sprintf(pgstat_stat_tmpname, "%s/pgstat.tmp", newval);
|
|
||||||
sprintf(pgstat_stat_filename, "%s/pgstat.stat", newval);
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
return newval;
|
return newval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user