Add GUC log_temp_files to log the use of temporary files.

Bill Moran
This commit is contained in:
Bruce Momjian 2007-01-09 21:31:17 +00:00
parent 1e0bf9041e
commit be8a431881
5 changed files with 52 additions and 5 deletions

View File

@ -1,4 +1,4 @@
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.99 2006/12/12 21:30:33 momjian Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.100 2007/01/09 21:31:14 momjian Exp $ -->
<chapter Id="runtime-config">
<title>Server Configuration</title>
@ -2920,6 +2920,23 @@ SELECT * FROM parent WHERE key = 2400;
</listitem>
</varlistentry>
<varlistentry id="guc-log-temp-files" xreflabel="log_temp_files">
<term><varname>log_temp_files</varname> (<type>integer</type>)</term>
<indexterm>
<primary><varname>log_temp_files</> configuration parameter</primary>
</indexterm>
<listitem>
<para>
Controls whether temporary files are logged when deleted.
A value of zero logs all temporary files, and positive
values log only files whose size is equal or greater than
the specified number of bytes. Temporary files can be
created for sorts, hashes, and temporary results. The
default is <literal>-1</> (off).
</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/storage/file/fd.c,v 1.132 2007/01/05 22:19:37 momjian Exp $
* $PostgreSQL: pgsql/src/backend/storage/file/fd.c,v 1.133 2007/01/09 21:31:14 momjian Exp $
*
* NOTES:
*
@ -50,6 +50,7 @@
#include "access/xact.h"
#include "storage/fd.h"
#include "storage/ipc.h"
#include "utils/guc.h"
/*
@ -938,7 +939,8 @@ OpenTemporaryFile(bool interXact)
void
FileClose(File file)
{
Vfd *vfdP;
Vfd *vfdP;
struct stat filestats;
Assert(FileIsValid(file));
@ -968,6 +970,19 @@ FileClose(File file)
{
/* reset flag so that die() interrupt won't cause problems */
vfdP->fdstate &= ~FD_TEMPORARY;
PG_TRACE1(temp__file__cleanup, vfdP->fileName);
if (log_temp_files >= 0)
{
if (stat(vfdP->fileName, &filestats) == 0)
{
if (filestats.st_size >= log_temp_files)
ereport(LOG,
(errmsg("temp file: path \"%s\" size %lu",
vfdP->fileName, (unsigned long)filestats.st_size)));
}
else
elog(LOG, "Could not stat \"%s\": %m", vfdP->fileName);
}
if (unlink(vfdP->fileName))
elog(LOG, "failed to unlink \"%s\": %m",
vfdP->fileName);

View File

@ -10,7 +10,7 @@
* Written by Peter Eisentraut <peter_e@gmx.net>.
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.365 2007/01/05 22:19:46 momjian Exp $
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.366 2007/01/09 21:31:14 momjian Exp $
*
*--------------------------------------------------------------------
*/
@ -182,6 +182,7 @@ int log_min_error_statement = ERROR;
int log_min_messages = NOTICE;
int client_min_messages = NOTICE;
int log_min_duration_statement = -1;
int log_temp_files = -1;
int num_temp_buffers = 1000;
@ -1660,6 +1661,16 @@ static struct config_int ConfigureNamesInt[] =
&server_version_num,
PG_VERSION_NUM, PG_VERSION_NUM, PG_VERSION_NUM, NULL, NULL
},
{
{"log_temp_files", PGC_USERSET, LOGGING_WHAT,
gettext_noop("Log the use of temporary files larger than this size."),
gettext_noop("Zero logs all files. The default is -1 (turning this feature off)."),
NULL
},
&log_temp_files,
-1, -1, INT_MAX, NULL, NULL
},
/* End-of-list marker */
{

View File

@ -333,6 +333,9 @@
#log_statement = 'none' # none, ddl, mod, all
#log_hostname = off
#log_temp_files = -1 # Log temporary files equal or larger
# than the specified number of bytes.
# -1 disables; 0 logs all temp files
#---------------------------------------------------------------------------
# RUNTIME STATISTICS

View File

@ -7,7 +7,7 @@
* Copyright (c) 2000-2007, PostgreSQL Global Development Group
* Written by Peter Eisentraut <peter_e@gmx.net>.
*
* $PostgreSQL: pgsql/src/include/utils/guc.h,v 1.77 2007/01/05 22:19:59 momjian Exp $
* $PostgreSQL: pgsql/src/include/utils/guc.h,v 1.78 2007/01/09 21:31:17 momjian Exp $
*--------------------------------------------------------------------
*/
#ifndef GUC_H
@ -123,6 +123,7 @@ extern int log_min_error_statement;
extern int log_min_messages;
extern int client_min_messages;
extern int log_min_duration_statement;
extern int log_temp_files;
extern int num_temp_buffers;