mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-22 04:23:27 +02:00
This requires some core changes as well so that we can properly WAL-log the truncation. Specifically, it changes the format of the XLOG_SMGR_TRUNCATE WAL record, so bump XLOG_PAGE_MAGIC. Patch by me, reviewed but not fully endorsed by Andres Freund.
76 lines
2.8 KiB
SQL
76 lines
2.8 KiB
SQL
/* contrib/pg_visibility/pg_visibility--1.1.sql */
|
|
|
|
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
|
\echo Use "CREATE EXTENSION pg_visibility" to load this file. \quit
|
|
|
|
-- Show visibility map information.
|
|
CREATE FUNCTION pg_visibility_map(regclass, blkno bigint,
|
|
all_visible OUT boolean,
|
|
all_frozen OUT boolean)
|
|
RETURNS record
|
|
AS 'MODULE_PATHNAME', 'pg_visibility_map'
|
|
LANGUAGE C STRICT;
|
|
|
|
-- Show visibility map and page-level visibility information.
|
|
CREATE FUNCTION pg_visibility(regclass, blkno bigint,
|
|
all_visible OUT boolean,
|
|
all_frozen OUT boolean,
|
|
pd_all_visible OUT boolean)
|
|
RETURNS record
|
|
AS 'MODULE_PATHNAME', 'pg_visibility'
|
|
LANGUAGE C STRICT;
|
|
|
|
-- Show visibility map information for each block in a relation.
|
|
CREATE FUNCTION pg_visibility_map(regclass, blkno OUT bigint,
|
|
all_visible OUT boolean,
|
|
all_frozen OUT boolean)
|
|
RETURNS SETOF record
|
|
AS 'MODULE_PATHNAME', 'pg_visibility_map_rel'
|
|
LANGUAGE C STRICT;
|
|
|
|
-- Show visibility map and page-level visibility information for each block.
|
|
CREATE FUNCTION pg_visibility(regclass, blkno OUT bigint,
|
|
all_visible OUT boolean,
|
|
all_frozen OUT boolean,
|
|
pd_all_visible OUT boolean)
|
|
RETURNS SETOF record
|
|
AS 'MODULE_PATHNAME', 'pg_visibility_rel'
|
|
LANGUAGE C STRICT;
|
|
|
|
-- Show summary of visibility map bits for a relation.
|
|
CREATE FUNCTION pg_visibility_map_summary(regclass,
|
|
OUT all_visible bigint, OUT all_frozen bigint)
|
|
RETURNS record
|
|
AS 'MODULE_PATHNAME', 'pg_visibility_map_summary'
|
|
LANGUAGE C STRICT;
|
|
|
|
-- Show tupleids of non-frozen tuples if any in all_frozen pages
|
|
-- for a relation.
|
|
CREATE FUNCTION pg_check_frozen(regclass, t_ctid OUT tid)
|
|
RETURNS SETOF tid
|
|
AS 'MODULE_PATHNAME', 'pg_check_frozen'
|
|
LANGUAGE C STRICT;
|
|
|
|
-- Show tupleids of dead tuples if any in all_visible pages for a relation.
|
|
CREATE FUNCTION pg_check_visible(regclass, t_ctid OUT tid)
|
|
RETURNS SETOF tid
|
|
AS 'MODULE_PATHNAME', 'pg_check_visible'
|
|
LANGUAGE C STRICT;
|
|
|
|
-- Truncate the visibility map fork.
|
|
CREATE FUNCTION pg_truncate_visibility_map(regclass)
|
|
RETURNS void
|
|
AS 'MODULE_PATHNAME', 'pg_truncate_visibility_map'
|
|
LANGUAGE C STRICT
|
|
PARALLEL UNSAFE; -- let's not make this any more dangerous
|
|
|
|
-- Don't want these to be available to public.
|
|
REVOKE ALL ON FUNCTION pg_visibility_map(regclass, bigint) FROM PUBLIC;
|
|
REVOKE ALL ON FUNCTION pg_visibility(regclass, bigint) FROM PUBLIC;
|
|
REVOKE ALL ON FUNCTION pg_visibility_map(regclass) FROM PUBLIC;
|
|
REVOKE ALL ON FUNCTION pg_visibility(regclass) FROM PUBLIC;
|
|
REVOKE ALL ON FUNCTION pg_visibility_map_summary(regclass) FROM PUBLIC;
|
|
REVOKE ALL ON FUNCTION pg_check_frozen(regclass) FROM PUBLIC;
|
|
REVOKE ALL ON FUNCTION pg_check_visible(regclass) FROM PUBLIC;
|
|
REVOKE ALL ON FUNCTION pg_truncate_visibility_map(regclass) FROM PUBLIC;
|