Commit fcb4bfdd authored by Simon Riggs's avatar Simon Riggs

Reduce lock level for altering fillfactor

Fabrízio de Royes Mello and Simon Riggs
parent 090b287f
...@@ -561,7 +561,7 @@ ALTER TABLE ALL IN TABLESPACE <replaceable class="PARAMETER">name</replaceable> ...@@ -561,7 +561,7 @@ ALTER TABLE ALL IN TABLESPACE <replaceable class="PARAMETER">name</replaceable>
</para> </para>
<para> <para>
Changing autovacuum storage parameters acquires a <literal>SHARE UPDATE EXCLUSIVE</literal> lock. Changing fillfactor and autovacuum storage parameters acquires a <literal>SHARE UPDATE EXCLUSIVE</literal> lock.
</para> </para>
<note> <note>
......
...@@ -100,7 +100,7 @@ static relopt_int intRelOpts[] = ...@@ -100,7 +100,7 @@ static relopt_int intRelOpts[] =
"fillfactor", "fillfactor",
"Packs table pages only to this percentage", "Packs table pages only to this percentage",
RELOPT_KIND_HEAP, RELOPT_KIND_HEAP,
AccessExclusiveLock ShareUpdateExclusiveLock /* since it applies only to later inserts */
}, },
HEAP_DEFAULT_FILLFACTOR, HEAP_MIN_FILLFACTOR, 100 HEAP_DEFAULT_FILLFACTOR, HEAP_MIN_FILLFACTOR, 100
}, },
...@@ -109,7 +109,7 @@ static relopt_int intRelOpts[] = ...@@ -109,7 +109,7 @@ static relopt_int intRelOpts[] =
"fillfactor", "fillfactor",
"Packs btree index pages only to this percentage", "Packs btree index pages only to this percentage",
RELOPT_KIND_BTREE, RELOPT_KIND_BTREE,
AccessExclusiveLock ShareUpdateExclusiveLock /* since it applies only to later inserts */
}, },
BTREE_DEFAULT_FILLFACTOR, BTREE_MIN_FILLFACTOR, 100 BTREE_DEFAULT_FILLFACTOR, BTREE_MIN_FILLFACTOR, 100
}, },
...@@ -118,7 +118,7 @@ static relopt_int intRelOpts[] = ...@@ -118,7 +118,7 @@ static relopt_int intRelOpts[] =
"fillfactor", "fillfactor",
"Packs hash index pages only to this percentage", "Packs hash index pages only to this percentage",
RELOPT_KIND_HASH, RELOPT_KIND_HASH,
AccessExclusiveLock ShareUpdateExclusiveLock /* since it applies only to later inserts */
}, },
HASH_DEFAULT_FILLFACTOR, HASH_MIN_FILLFACTOR, 100 HASH_DEFAULT_FILLFACTOR, HASH_MIN_FILLFACTOR, 100
}, },
...@@ -127,7 +127,7 @@ static relopt_int intRelOpts[] = ...@@ -127,7 +127,7 @@ static relopt_int intRelOpts[] =
"fillfactor", "fillfactor",
"Packs gist index pages only to this percentage", "Packs gist index pages only to this percentage",
RELOPT_KIND_GIST, RELOPT_KIND_GIST,
AccessExclusiveLock ShareUpdateExclusiveLock /* since it applies only to later inserts */
}, },
GIST_DEFAULT_FILLFACTOR, GIST_MIN_FILLFACTOR, 100 GIST_DEFAULT_FILLFACTOR, GIST_MIN_FILLFACTOR, 100
}, },
...@@ -136,7 +136,7 @@ static relopt_int intRelOpts[] = ...@@ -136,7 +136,7 @@ static relopt_int intRelOpts[] =
"fillfactor", "fillfactor",
"Packs spgist index pages only to this percentage", "Packs spgist index pages only to this percentage",
RELOPT_KIND_SPGIST, RELOPT_KIND_SPGIST,
AccessExclusiveLock ShareUpdateExclusiveLock /* since it applies only to later inserts */
}, },
SPGIST_DEFAULT_FILLFACTOR, SPGIST_MIN_FILLFACTOR, 100 SPGIST_DEFAULT_FILLFACTOR, SPGIST_MIN_FILLFACTOR, 100
}, },
......
...@@ -2065,19 +2065,19 @@ select * from my_locks order by 1; ...@@ -2065,19 +2065,19 @@ select * from my_locks order by 1;
commit; commit;
begin; alter table alterlock set (fillfactor = 100); begin; alter table alterlock set (fillfactor = 100);
select * from my_locks order by 1; select * from my_locks order by 1;
relname | max_lockmode relname | max_lockmode
-----------+--------------------- -----------+--------------------------
alterlock | AccessExclusiveLock alterlock | ShareUpdateExclusiveLock
pg_toast | AccessExclusiveLock pg_toast | ShareUpdateExclusiveLock
(2 rows) (2 rows)
commit; commit;
begin; alter table alterlock reset (fillfactor); begin; alter table alterlock reset (fillfactor);
select * from my_locks order by 1; select * from my_locks order by 1;
relname | max_lockmode relname | max_lockmode
-----------+--------------------- -----------+--------------------------
alterlock | AccessExclusiveLock alterlock | ShareUpdateExclusiveLock
pg_toast | AccessExclusiveLock pg_toast | ShareUpdateExclusiveLock
(2 rows) (2 rows)
commit; commit;
...@@ -2110,10 +2110,10 @@ rollback; ...@@ -2110,10 +2110,10 @@ rollback;
-- test that mixing options with different lock levels works as expected -- test that mixing options with different lock levels works as expected
begin; alter table alterlock set (autovacuum_enabled = off, fillfactor = 80); begin; alter table alterlock set (autovacuum_enabled = off, fillfactor = 80);
select * from my_locks order by 1; select * from my_locks order by 1;
relname | max_lockmode relname | max_lockmode
-----------+--------------------- -----------+--------------------------
alterlock | AccessExclusiveLock alterlock | ShareUpdateExclusiveLock
pg_toast | AccessExclusiveLock pg_toast | ShareUpdateExclusiveLock
(2 rows) (2 rows)
commit; commit;
......
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