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

Commitaeaaf52

Browse files
committed
Mark pageinspect's disk-accessing functions as parallel restricted.
These functions have been marked parallel safe, but the buildfarm'sresponse to commite2933a6 exposed the flaw in that thinking:if you try to use them on a temporary table, and they run insidea parallel worker, they'll fail with "cannot access temporary tablesduring a parallel operation".Fix that by marking them parallel restricted instead. Maybe somedaywe'll have a better answer and can reverse this decision.Back-patch to v15. To go back further, we'd have to devise variantversions of pre-1.10 pageinspect versions. Given the lack of fieldcomplaints, it doesn't seem worth the trouble. We'll just deemthis case unsupported pre-v15. (If anyone does complain, it mightbe good enough to update the markings manually in their DBs.)Discussion:https://postgr.es/m/E1ox94a-000EHu-VH@gemulon.postgresql.org
1 parent51b5834 commitaeaaf52

File tree

4 files changed

+32
-2
lines changed

4 files changed

+32
-2
lines changed

‎contrib/pageinspect/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ OBJS = \
1313
rawpage.o
1414

1515
EXTENSION = pageinspect
16-
DATA = pageinspect--1.9--1.10.sql pageinspect--1.8--1.9.sql\
16+
DATA = pageinspect--1.10--1.11.sql\
17+
pageinspect--1.9--1.10.sql pageinspect--1.8--1.9.sql\
1718
pageinspect--1.7--1.8.sql pageinspect--1.6--1.7.sql\
1819
pageinspect--1.5.sql pageinspect--1.5--1.6.sql\
1920
pageinspect--1.4--1.5.sql pageinspect--1.3--1.4.sql\

‎contrib/pageinspect/meson.build

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ install_data(
3333
'pageinspect--1.7--1.8.sql',
3434
'pageinspect--1.8--1.9.sql',
3535
'pageinspect--1.9--1.10.sql',
36+
'pageinspect--1.10--1.11.sql',
3637
'pageinspect.control',
3738
kwargs: contrib_data_args,
3839
)
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/* contrib/pageinspect/pageinspect--1.10--1.11.sql*/
2+
3+
-- complain if script is sourced in psql, rather than via ALTER EXTENSION
4+
\echo Use"ALTER EXTENSION pageinspect UPDATE TO '1.11'" to load this file. \quit
5+
6+
--
7+
-- Functions that fetch relation pages must be PARALLEL RESTRICTED,
8+
-- not PARALLEL SAFE, otherwise they will fail when run on a
9+
-- temporary table in a parallel worker process.
10+
--
11+
12+
ALTERFUNCTION get_raw_page(text, int8) PARALLEL RESTRICTED;
13+
ALTERFUNCTION get_raw_page(text,text, int8) PARALLEL RESTRICTED;
14+
-- tuple_data_split must be restricted because it may fetch TOAST data.
15+
ALTERFUNCTION tuple_data_split(oid,bytea,integer,integer,text) PARALLEL RESTRICTED;
16+
ALTERFUNCTION tuple_data_split(oid,bytea,integer,integer,text, bool) PARALLEL RESTRICTED;
17+
-- heap_page_item_attrs must be restricted because it calls tuple_data_split.
18+
ALTERFUNCTION heap_page_item_attrs(bytea, regclass, bool) PARALLEL RESTRICTED;
19+
ALTERFUNCTION heap_page_item_attrs(bytea, regclass) PARALLEL RESTRICTED;
20+
ALTERFUNCTION bt_metap(text) PARALLEL RESTRICTED;
21+
ALTERFUNCTION bt_page_stats(text, int8) PARALLEL RESTRICTED;
22+
ALTERFUNCTION bt_page_items(text, int8) PARALLEL RESTRICTED;
23+
ALTERFUNCTION hash_bitmap_info(regclass, int8) PARALLEL RESTRICTED;
24+
-- brin_page_items might be parallel safe, because it seems to touch
25+
-- only index metadata, but I don't think there's a point in risking it.
26+
-- Likewise for gist_page_items.
27+
ALTERFUNCTION brin_page_items(bytea, regclass) PARALLEL RESTRICTED;
28+
ALTERFUNCTION gist_page_items(bytea, regclass) PARALLEL RESTRICTED;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# pageinspect extension
22
comment = 'inspect the contents of database pages at a low level'
3-
default_version = '1.10'
3+
default_version = '1.11'
44
module_pathname = '$libdir/pageinspect'
55
relocatable = true

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp