patch.diff
text/plain
Filename: patch.diff
Type: text/plain
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| contrib/pg_stat_statements/pg_stat_statements.c | 15 | 5 |
diff --git a/contrib/pg_stat_statements/pg_stat_statements.c b/contrib/pg_stat_statements/pg_stat_statements.c
index 59b8a2e..06a0912 100644
--- a/contrib/pg_stat_statements/pg_stat_statements.c
+++ b/contrib/pg_stat_statements/pg_stat_statements.c
@@ -1893,14 +1893,24 @@ qtext_load_file(Size *buffer_size)
/* Allocate buffer; beware that off_t might be wider than size_t */
if (stat.st_size <= MaxAllocSize)
- buf = (char *) malloc(stat.st_size);
- else
- buf = NULL;
- if (buf == NULL)
{
+ buf = (char *) malloc(stat.st_size);
+
+ if (buf == NULL)
+ {
+ ereport(LOG,
+ (errcode(ERRCODE_OUT_OF_MEMORY),
+ errmsg("out of memory attempting to pg_stat_statement file"),
+ errdetail("file \"%s\": size %lld", PGSS_TEXT_FILE, stat.st_size)));
+ CloseTransientFile(fd);
+ return NULL;
+ }
+ } else {
ereport(LOG,
+ /* Is there a better code to use? IE: SQLSTATE 53000, 53400 or 54000 */
(errcode(ERRCODE_OUT_OF_MEMORY),
- errmsg("out of memory")));
+ errmsg("pg_stat_statement file is too large to process"),
+ errdetail("file \"%s\": size %lld", PGSS_TEXT_FILE, stat.st_size)));
CloseTransientFile(fd);
return NULL;
}