Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit841df96

Browse files
committed
Insert CHECK_FOR_INTERRUPTS calls into loops in dbsize.c, to ensure that
the various disk-size-reporting functions will respond to query cancelreasonably promptly even in very large databases. Per report fromKevin Grittner.
1 parenta06ea6f commit841df96

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

‎src/backend/utils/adt/dbsize.c

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* Copyright (c) 2002-2010, PostgreSQL Global Development Group
66
*
77
* IDENTIFICATION
8-
* $PostgreSQL: pgsql/src/backend/utils/adt/dbsize.c,v 1.27 2010/01/19 05:50:18 tgl Exp $
8+
* $PostgreSQL: pgsql/src/backend/utils/adt/dbsize.c,v 1.28 2010/01/23 21:29:00 tgl Exp $
99
*
1010
*/
1111

@@ -46,6 +46,8 @@ db_dir_size(const char *path)
4646
{
4747
structstatfst;
4848

49+
CHECK_FOR_INTERRUPTS();
50+
4951
if (strcmp(direntry->d_name,".")==0||
5052
strcmp(direntry->d_name,"..")==0)
5153
continue;
@@ -104,6 +106,8 @@ calculate_database_size(Oid dbOid)
104106

105107
while ((direntry=ReadDir(dirdesc,dirpath))!=NULL)
106108
{
109+
CHECK_FOR_INTERRUPTS();
110+
107111
if (strcmp(direntry->d_name,".")==0||
108112
strcmp(direntry->d_name,"..")==0)
109113
continue;
@@ -194,6 +198,8 @@ calculate_tablespace_size(Oid tblspcOid)
194198
{
195199
structstatfst;
196200

201+
CHECK_FOR_INTERRUPTS();
202+
197203
if (strcmp(direntry->d_name,".")==0||
198204
strcmp(direntry->d_name,"..")==0)
199205
continue;
@@ -262,6 +268,8 @@ calculate_relation_size(RelFileNode *rfn, ForkNumber forknum)
262268
{
263269
structstatfst;
264270

271+
CHECK_FOR_INTERRUPTS();
272+
265273
if (segcount==0)
266274
snprintf(pathname,MAXPGPATH,"%s",
267275
relationpath);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp