Commit be8a4318 authored by Bruce Momjian's avatar Bruce Momjian

Add GUC log_temp_files to log the use of temporary files.

Bill Moran
parent 1e0bf904
<!-- $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"> <chapter Id="runtime-config">
<title>Server Configuration</title> <title>Server Configuration</title>
...@@ -2920,6 +2920,23 @@ SELECT * FROM parent WHERE key = 2400; ...@@ -2920,6 +2920,23 @@ SELECT * FROM parent WHERE key = 2400;
</listitem> </listitem>
</varlistentry> </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> </variablelist>
</sect2> </sect2>
</sect1> </sect1>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* IDENTIFICATION * 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: * NOTES:
* *
...@@ -50,6 +50,7 @@ ...@@ -50,6 +50,7 @@
#include "access/xact.h" #include "access/xact.h"
#include "storage/fd.h" #include "storage/fd.h"
#include "storage/ipc.h" #include "storage/ipc.h"
#include "utils/guc.h"
/* /*
...@@ -938,7 +939,8 @@ OpenTemporaryFile(bool interXact) ...@@ -938,7 +939,8 @@ OpenTemporaryFile(bool interXact)
void void
FileClose(File file) FileClose(File file)
{ {
Vfd *vfdP; Vfd *vfdP;
struct stat filestats;
Assert(FileIsValid(file)); Assert(FileIsValid(file));
...@@ -968,6 +970,19 @@ FileClose(File file) ...@@ -968,6 +970,19 @@ FileClose(File file)
{ {
/* reset flag so that die() interrupt won't cause problems */ /* reset flag so that die() interrupt won't cause problems */
vfdP->fdstate &= ~FD_TEMPORARY; 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)) if (unlink(vfdP->fileName))
elog(LOG, "failed to unlink \"%s\": %m", elog(LOG, "failed to unlink \"%s\": %m",
vfdP->fileName); vfdP->fileName);
......
...@@ -10,7 +10,7 @@ ...@@ -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.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; ...@@ -182,6 +182,7 @@ int log_min_error_statement = ERROR;
int log_min_messages = NOTICE; int log_min_messages = NOTICE;
int client_min_messages = NOTICE; int client_min_messages = NOTICE;
int log_min_duration_statement = -1; int log_min_duration_statement = -1;
int log_temp_files = -1;
int num_temp_buffers = 1000; int num_temp_buffers = 1000;
...@@ -1660,6 +1661,16 @@ static struct config_int ConfigureNamesInt[] = ...@@ -1660,6 +1661,16 @@ static struct config_int ConfigureNamesInt[] =
&server_version_num, &server_version_num,
PG_VERSION_NUM, PG_VERSION_NUM, PG_VERSION_NUM, NULL, NULL 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 */ /* End-of-list marker */
{ {
......
...@@ -333,6 +333,9 @@ ...@@ -333,6 +333,9 @@
#log_statement = 'none' # none, ddl, mod, all #log_statement = 'none' # none, ddl, mod, all
#log_hostname = off #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 # RUNTIME STATISTICS
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* Copyright (c) 2000-2007, PostgreSQL Global Development Group * Copyright (c) 2000-2007, PostgreSQL Global Development Group
* Written by Peter Eisentraut <peter_e@gmx.net>. * 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 #ifndef GUC_H
...@@ -123,6 +123,7 @@ extern int log_min_error_statement; ...@@ -123,6 +123,7 @@ extern int log_min_error_statement;
extern int log_min_messages; extern int log_min_messages;
extern int client_min_messages; extern int client_min_messages;
extern int log_min_duration_statement; extern int log_min_duration_statement;
extern int log_temp_files;
extern int num_temp_buffers; extern int num_temp_buffers;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment