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

Commit707f38e

Browse files
committed
Fix failure with lock mode used for custom relation options
In-core relation options can use a custom lock mode since47167b7, thathas lowered the lock available for some autovacuum parameters. Howeverit forgot to consider custom relation options. This causes failureswith ALTER TABLE SET when changing a custom relation option, as its lockis not defined. The existing APIs to define a custom reloption does notallow to define a custom lock mode, so enforce its initialization toAccessExclusiveMode which should be safe enough in all cases. Anupcoming patch will extend the existing APIs to allow a custom lock modeto be defined.The problem can be reproduced with bloom indexes, so add a test there.Reported-by: Nikolay SharplovAnalyzed-by: Thomas Munro, Michael PaquierAuthor: Michael PaquierReviewed-by: Kuntal GhoshDiscussion:https://postgr.es/m/20190920013831.GD1844@paquier.xyzBackpatch-through: 9.6
1 parent8728552 commit707f38e

File tree

3 files changed

+9
-0
lines changed

3 files changed

+9
-0
lines changed

‎contrib/bloom/expected/bloom.out

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ CREATE TABLE tst (
55
);
66
INSERT INTO tst SELECT i%10, substr(md5(i::text), 1, 1) FROM generate_series(1,2000) i;
77
CREATE INDEX bloomidx ON tst USING bloom (i, t) WITH (col1 = 3);
8+
ALTER INDEX bloomidx SET (length=80);
89
SET enable_seqscan=on;
910
SET enable_bitmapscan=off;
1011
SET enable_indexscan=off;

‎contrib/bloom/sql/bloom.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ CREATE TABLE tst (
77

88
INSERT INTO tstSELECT i%10, substr(md5(i::text),1,1)FROM generate_series(1,2000) i;
99
CREATEINDEXbloomidxON tst USING bloom (i, t) WITH (col1=3);
10+
ALTERINDEX bloomidxSET (length=80);
1011

1112
SET enable_seqscan=on;
1213
SET enable_bitmapscan=off;

‎src/backend/access/common/reloptions.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,13 @@ allocate_reloption(bits32 kinds, int type, const char *name, const char *desc)
659659
newoption->namelen=strlen(name);
660660
newoption->type=type;
661661

662+
/*
663+
* Set the default lock mode for this option. There is no actual way
664+
* for a module to enforce it when declaring a custom relation option,
665+
* so just use the highest level, which is safe for all cases.
666+
*/
667+
newoption->lockmode=AccessExclusiveLock;
668+
662669
MemoryContextSwitchTo(oldcxt);
663670

664671
returnnewoption;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp