Update pageinspect extension for parallel query.

All functions provided by this extension are PARALLEL SAFE.

Andreas Karlsson
This commit is contained in:
Robert Haas 2016-06-09 17:18:09 -04:00
parent 749a787c5b
commit e3b607cd7a
4 changed files with 49 additions and 24 deletions

View File

@ -5,9 +5,10 @@ OBJS = rawpage.o heapfuncs.o btreefuncs.o fsmfuncs.o \
brinfuncs.o ginfuncs.o $(WIN32RES) brinfuncs.o ginfuncs.o $(WIN32RES)
EXTENSION = pageinspect EXTENSION = pageinspect
DATA = pageinspect--1.4.sql pageinspect--1.3--1.4.sql \ DATA = pageinspect--1.5.sql pageinspect--1.4--1.5.sql \
pageinspect--1.2--1.3.sql pageinspect--1.1--1.2.sql \ pageinspect--1.3--1.4.sql pageinspect--1.2--1.3.sql \
pageinspect--1.0--1.1.sql pageinspect--unpackaged--1.0.sql pageinspect--1.1--1.2.sql pageinspect--1.0--1.1.sql \
pageinspect--unpackaged--1.0.sql
PGFILEDESC = "pageinspect - functions to inspect contents of database pages" PGFILEDESC = "pageinspect - functions to inspect contents of database pages"
ifdef USE_PGXS ifdef USE_PGXS

View File

@ -0,0 +1,24 @@
/* contrib/pageinspect/pageinspect--1.4--1.5.sql */
-- complain if script is sourced in psql, rather than via ALTER EXTENSION
\echo Use "ALTER EXTENSION pageinspect UPDATE TO '1.5'" to load this file. \quit
ALTER FUNCTION get_raw_page(text, int4) PARALLEL SAFE;
ALTER FUNCTION get_raw_page(text, text, int4) PARALLEL SAFE;
ALTER FUNCTION page_header(bytea) PARALLEL SAFE;
ALTER FUNCTION heap_page_items(bytea) PARALLEL SAFE;
ALTER FUNCTION tuple_data_split(oid, bytea, integer, integer, text) PARALLEL SAFE;
ALTER FUNCTION tuple_data_split(oid, bytea, integer, integer, text, bool) PARALLEL SAFE;
ALTER FUNCTION heap_page_item_attrs(bytea, regclass, bool) PARALLEL SAFE;
ALTER FUNCTION heap_page_item_attrs(bytea, regclass) PARALLEL SAFE;
ALTER FUNCTION bt_metap(text) PARALLEL SAFE;
ALTER FUNCTION bt_page_stats(text, int4) PARALLEL SAFE;
ALTER FUNCTION bt_page_items(text, int4) PARALLEL SAFE;
ALTER FUNCTION brin_page_type(bytea) PARALLEL SAFE;
ALTER FUNCTION brin_metapage_info(bytea) PARALLEL SAFE;
ALTER FUNCTION brin_revmap_data(bytea) PARALLEL SAFE;
ALTER FUNCTION brin_page_items(bytea, regclass) PARALLEL SAFE;
ALTER FUNCTION fsm_page_contents(bytea) PARALLEL SAFE;
ALTER FUNCTION gin_metapage_info(bytea) PARALLEL SAFE;
ALTER FUNCTION gin_page_opaque_info(bytea) PARALLEL SAFE;
ALTER FUNCTION gin_leafpage_items(bytea) PARALLEL SAFE;

View File

@ -1,4 +1,4 @@
/* contrib/pageinspect/pageinspect--1.4.sql */ /* contrib/pageinspect/pageinspect--1.5.sql */
-- complain if script is sourced in psql, rather than via CREATE EXTENSION -- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION pageinspect" to load this file. \quit \echo Use "CREATE EXTENSION pageinspect" to load this file. \quit
@ -9,12 +9,12 @@
CREATE FUNCTION get_raw_page(text, int4) CREATE FUNCTION get_raw_page(text, int4)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'get_raw_page' AS 'MODULE_PATHNAME', 'get_raw_page'
LANGUAGE C STRICT; LANGUAGE C STRICT PARALLEL SAFE;
CREATE FUNCTION get_raw_page(text, text, int4) CREATE FUNCTION get_raw_page(text, text, int4)
RETURNS bytea RETURNS bytea
AS 'MODULE_PATHNAME', 'get_raw_page_fork' AS 'MODULE_PATHNAME', 'get_raw_page_fork'
LANGUAGE C STRICT; LANGUAGE C STRICT PARALLEL SAFE;
-- --
-- page_header() -- page_header()
@ -30,7 +30,7 @@ CREATE FUNCTION page_header(IN page bytea,
OUT version smallint, OUT version smallint,
OUT prune_xid xid) OUT prune_xid xid)
AS 'MODULE_PATHNAME', 'page_header' AS 'MODULE_PATHNAME', 'page_header'
LANGUAGE C STRICT; LANGUAGE C STRICT PARALLEL SAFE;
-- --
-- heap_page_items() -- heap_page_items()
@ -52,7 +52,7 @@ CREATE FUNCTION heap_page_items(IN page bytea,
OUT t_data bytea) OUT t_data bytea)
RETURNS SETOF record RETURNS SETOF record
AS 'MODULE_PATHNAME', 'heap_page_items' AS 'MODULE_PATHNAME', 'heap_page_items'
LANGUAGE C STRICT; LANGUAGE C STRICT PARALLEL SAFE;
-- --
-- tuple_data_split() -- tuple_data_split()
@ -64,7 +64,7 @@ CREATE FUNCTION tuple_data_split(rel_oid oid,
t_bits text) t_bits text)
RETURNS bytea[] RETURNS bytea[]
AS 'MODULE_PATHNAME','tuple_data_split' AS 'MODULE_PATHNAME','tuple_data_split'
LANGUAGE C; LANGUAGE C PARALLEL SAFE;
CREATE FUNCTION tuple_data_split(rel_oid oid, CREATE FUNCTION tuple_data_split(rel_oid oid,
t_data bytea, t_data bytea,
@ -74,7 +74,7 @@ CREATE FUNCTION tuple_data_split(rel_oid oid,
do_detoast bool) do_detoast bool)
RETURNS bytea[] RETURNS bytea[]
AS 'MODULE_PATHNAME','tuple_data_split' AS 'MODULE_PATHNAME','tuple_data_split'
LANGUAGE C; LANGUAGE C PARALLEL SAFE;
-- --
-- heap_page_item_attrs() -- heap_page_item_attrs()
@ -121,7 +121,7 @@ SELECT lp,
do_detoast) do_detoast)
AS t_attrs AS t_attrs
FROM heap_page_items(page); FROM heap_page_items(page);
$$ LANGUAGE SQL; $$ LANGUAGE SQL PARALLEL SAFE;
CREATE FUNCTION heap_page_item_attrs(IN page bytea, IN rel_oid regclass, CREATE FUNCTION heap_page_item_attrs(IN page bytea, IN rel_oid regclass,
OUT lp smallint, OUT lp smallint,
@ -141,7 +141,7 @@ CREATE FUNCTION heap_page_item_attrs(IN page bytea, IN rel_oid regclass,
) )
RETURNS SETOF record AS $$ RETURNS SETOF record AS $$
SELECT * from heap_page_item_attrs(page, rel_oid, false); SELECT * from heap_page_item_attrs(page, rel_oid, false);
$$ LANGUAGE SQL; $$ LANGUAGE SQL PARALLEL SAFE;
-- --
-- bt_metap() -- bt_metap()
@ -154,7 +154,7 @@ CREATE FUNCTION bt_metap(IN relname text,
OUT fastroot int4, OUT fastroot int4,
OUT fastlevel int4) OUT fastlevel int4)
AS 'MODULE_PATHNAME', 'bt_metap' AS 'MODULE_PATHNAME', 'bt_metap'
LANGUAGE C STRICT; LANGUAGE C STRICT PARALLEL SAFE;
-- --
-- bt_page_stats() -- bt_page_stats()
@ -172,7 +172,7 @@ CREATE FUNCTION bt_page_stats(IN relname text, IN blkno int4,
OUT btpo int4, OUT btpo int4,
OUT btpo_flags int4) OUT btpo_flags int4)
AS 'MODULE_PATHNAME', 'bt_page_stats' AS 'MODULE_PATHNAME', 'bt_page_stats'
LANGUAGE C STRICT; LANGUAGE C STRICT PARALLEL SAFE;
-- --
-- bt_page_items() -- bt_page_items()
@ -186,7 +186,7 @@ CREATE FUNCTION bt_page_items(IN relname text, IN blkno int4,
OUT data text) OUT data text)
RETURNS SETOF record RETURNS SETOF record
AS 'MODULE_PATHNAME', 'bt_page_items' AS 'MODULE_PATHNAME', 'bt_page_items'
LANGUAGE C STRICT; LANGUAGE C STRICT PARALLEL SAFE;
-- --
-- brin_page_type() -- brin_page_type()
@ -194,7 +194,7 @@ LANGUAGE C STRICT;
CREATE FUNCTION brin_page_type(IN page bytea) CREATE FUNCTION brin_page_type(IN page bytea)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME', 'brin_page_type' AS 'MODULE_PATHNAME', 'brin_page_type'
LANGUAGE C STRICT; LANGUAGE C STRICT PARALLEL SAFE;
-- --
-- brin_metapage_info() -- brin_metapage_info()
@ -202,7 +202,7 @@ LANGUAGE C STRICT;
CREATE FUNCTION brin_metapage_info(IN page bytea, OUT magic text, CREATE FUNCTION brin_metapage_info(IN page bytea, OUT magic text,
OUT version integer, OUT pagesperrange integer, OUT lastrevmappage bigint) OUT version integer, OUT pagesperrange integer, OUT lastrevmappage bigint)
AS 'MODULE_PATHNAME', 'brin_metapage_info' AS 'MODULE_PATHNAME', 'brin_metapage_info'
LANGUAGE C STRICT; LANGUAGE C STRICT PARALLEL SAFE;
-- --
-- brin_revmap_data() -- brin_revmap_data()
@ -211,7 +211,7 @@ CREATE FUNCTION brin_revmap_data(IN page bytea,
OUT pages tid) OUT pages tid)
RETURNS SETOF tid RETURNS SETOF tid
AS 'MODULE_PATHNAME', 'brin_revmap_data' AS 'MODULE_PATHNAME', 'brin_revmap_data'
LANGUAGE C STRICT; LANGUAGE C STRICT PARALLEL SAFE;
-- --
-- brin_page_items() -- brin_page_items()
@ -226,7 +226,7 @@ CREATE FUNCTION brin_page_items(IN page bytea, IN index_oid regclass,
OUT value text) OUT value text)
RETURNS SETOF record RETURNS SETOF record
AS 'MODULE_PATHNAME', 'brin_page_items' AS 'MODULE_PATHNAME', 'brin_page_items'
LANGUAGE C STRICT; LANGUAGE C STRICT PARALLEL SAFE;
-- --
-- fsm_page_contents() -- fsm_page_contents()
@ -234,7 +234,7 @@ LANGUAGE C STRICT;
CREATE FUNCTION fsm_page_contents(IN page bytea) CREATE FUNCTION fsm_page_contents(IN page bytea)
RETURNS text RETURNS text
AS 'MODULE_PATHNAME', 'fsm_page_contents' AS 'MODULE_PATHNAME', 'fsm_page_contents'
LANGUAGE C STRICT; LANGUAGE C STRICT PARALLEL SAFE;
-- --
-- GIN functions -- GIN functions
@ -255,7 +255,7 @@ CREATE FUNCTION gin_metapage_info(IN page bytea,
OUT n_entries bigint, OUT n_entries bigint,
OUT version int4) OUT version int4)
AS 'MODULE_PATHNAME', 'gin_metapage_info' AS 'MODULE_PATHNAME', 'gin_metapage_info'
LANGUAGE C STRICT; LANGUAGE C STRICT PARALLEL SAFE;
-- --
-- gin_page_opaque_info() -- gin_page_opaque_info()
@ -265,7 +265,7 @@ CREATE FUNCTION gin_page_opaque_info(IN page bytea,
OUT maxoff int4, OUT maxoff int4,
OUT flags text[]) OUT flags text[])
AS 'MODULE_PATHNAME', 'gin_page_opaque_info' AS 'MODULE_PATHNAME', 'gin_page_opaque_info'
LANGUAGE C STRICT; LANGUAGE C STRICT PARALLEL SAFE;
-- --
-- gin_leafpage_items() -- gin_leafpage_items()
@ -276,4 +276,4 @@ CREATE FUNCTION gin_leafpage_items(IN page bytea,
OUT tids tid[]) OUT tids tid[])
RETURNS SETOF record RETURNS SETOF record
AS 'MODULE_PATHNAME', 'gin_leafpage_items' AS 'MODULE_PATHNAME', 'gin_leafpage_items'
LANGUAGE C STRICT; LANGUAGE C STRICT PARALLEL SAFE;

View File

@ -1,5 +1,5 @@
# pageinspect extension # pageinspect extension
comment = 'inspect the contents of database pages at a low level' comment = 'inspect the contents of database pages at a low level'
default_version = '1.4' default_version = '1.5'
module_pathname = '$libdir/pageinspect' module_pathname = '$libdir/pageinspect'
relocatable = true relocatable = true