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

Commit52a262b

Browse files
committed
Merge branch 'REL9_5_STABLE' into PGPRO9_5
2 parentsda304a5 +7516cdb commit52a262b

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

‎src/backend/postmaster/autovacuum.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ typedef struct autovac_table
190190
intat_vacuum_cost_delay;
191191
intat_vacuum_cost_limit;
192192
boolat_dobalance;
193+
boolat_sharedrel;
193194
char*at_relname;
194195
char*at_nspname;
195196
char*at_datname;
@@ -203,6 +204,7 @@ typedef struct autovac_table
203204
* wi_linksentry into free list or running list
204205
* wi_dboidOID of the database this worker is supposed to work on
205206
* wi_tableoidOID of the table currently being vacuumed, if any
207+
* wi_sharedrelflag indicating whether table is marked relisshared
206208
* wi_procpointer to PGPROC of the running worker, NULL if not started
207209
* wi_launchtime Time at which this worker was launched
208210
* wi_cost_*Vacuum cost-based delay parameters current in this worker
@@ -220,6 +222,7 @@ typedef struct WorkerInfoData
220222
PGPROC*wi_proc;
221223
TimestampTzwi_launchtime;
222224
boolwi_dobalance;
225+
boolwi_sharedrel;
223226
intwi_cost_delay;
224227
intwi_cost_limit;
225228
intwi_cost_limit_base;
@@ -717,6 +720,7 @@ AutoVacLauncherMain(int argc, char *argv[])
717720
worker=AutoVacuumShmem->av_startingWorker;
718721
worker->wi_dboid=InvalidOid;
719722
worker->wi_tableoid=InvalidOid;
723+
worker->wi_sharedrel= false;
720724
worker->wi_proc=NULL;
721725
worker->wi_launchtime=0;
722726
dlist_push_head(&AutoVacuumShmem->av_freeWorkers,
@@ -1683,6 +1687,7 @@ FreeWorkerInfo(int code, Datum arg)
16831687
dlist_delete(&MyWorkerInfo->wi_links);
16841688
MyWorkerInfo->wi_dboid=InvalidOid;
16851689
MyWorkerInfo->wi_tableoid=InvalidOid;
1690+
MyWorkerInfo->wi_sharedrel= false;
16861691
MyWorkerInfo->wi_proc=NULL;
16871692
MyWorkerInfo->wi_launchtime=0;
16881693
MyWorkerInfo->wi_dobalance= false;
@@ -2229,8 +2234,8 @@ do_autovacuum(void)
22292234
if (worker==MyWorkerInfo)
22302235
continue;
22312236

2232-
/* ignore workers in other databases */
2233-
if (worker->wi_dboid!=MyDatabaseId)
2237+
/* ignore workers in other databases(unless table is shared)*/
2238+
if (!worker->wi_sharedrel&&worker->wi_dboid!=MyDatabaseId)
22342239
continue;
22352240

22362241
if (worker->wi_tableoid==relid)
@@ -2271,6 +2276,7 @@ do_autovacuum(void)
22712276
* the lock so that other workers don't vacuum it concurrently.
22722277
*/
22732278
MyWorkerInfo->wi_tableoid=relid;
2279+
MyWorkerInfo->wi_sharedrel=tab->at_sharedrel;
22742280
LWLockRelease(AutovacuumScheduleLock);
22752281

22762282
/*
@@ -2382,6 +2388,7 @@ do_autovacuum(void)
23822388
*/
23832389
LWLockAcquire(AutovacuumLock,LW_EXCLUSIVE);
23842390
MyWorkerInfo->wi_tableoid=InvalidOid;
2391+
MyWorkerInfo->wi_sharedrel= false;
23852392
LWLockRelease(AutovacuumLock);
23862393

23872394
/* restore vacuum cost GUCs for the next iteration */
@@ -2577,6 +2584,7 @@ table_recheck_autovac(Oid relid, HTAB *table_toast_map,
25772584

25782585
tab=palloc(sizeof(autovac_table));
25792586
tab->at_relid=relid;
2587+
tab->at_sharedrel=classForm->relisshared;
25802588
tab->at_vacoptions=VACOPT_SKIPTOAST |
25812589
(dovacuum ?VACOPT_VACUUM :0) |
25822590
(doanalyze ?VACOPT_ANALYZE :0) |

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp