mirror of
https://github.com/neondatabase/neon.git
synced 2025-12-22 21:59:59 +00:00
## Problem Postgres is using `access()` function in `GetNewRelFileNumber` to check if assigned relfilenumber is not used for any other relation. This check will not work in Neon, because we do not have all files in local storage. ## Summary of changes Use smgrexists() instead which will check at page server if such relfilenode is used. ## Checklist before requesting a review - [ ] I have performed a self-review of my code. - [ ] If it is a core feature, I have added thorough tests. - [ ] Do we need to implement analytics? if so did you add the relevant metrics to the dashboard? - [ ] If this PR requires public announcement, mark it with /release-notes label and add several sentences in this section. ## Checklist before merging - [ ] Do not forget to reformat commit message to not include the above checklist --------- Co-authored-by: Konstantin Knizhnik <knizhnik@neon.tech>
72 lines
1.9 KiB
PL/PgSQL
72 lines
1.9 KiB
PL/PgSQL
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
|
|
\echo Use "CREATE EXTENSION neon_test_utils" to load this file. \quit
|
|
|
|
CREATE FUNCTION test_consume_xids(nxids int)
|
|
RETURNS VOID
|
|
AS 'MODULE_PATHNAME', 'test_consume_xids'
|
|
LANGUAGE C STRICT
|
|
PARALLEL UNSAFE;
|
|
|
|
CREATE FUNCTION test_consume_oids(oid int)
|
|
RETURNS VOID
|
|
AS 'MODULE_PATHNAME', 'test_consume_oids'
|
|
LANGUAGE C STRICT
|
|
PARALLEL UNSAFE;
|
|
|
|
CREATE FUNCTION test_consume_cpu(seconds int)
|
|
RETURNS VOID
|
|
AS 'MODULE_PATHNAME', 'test_consume_cpu'
|
|
LANGUAGE C STRICT
|
|
PARALLEL UNSAFE;
|
|
|
|
CREATE FUNCTION test_consume_memory(megabytes int)
|
|
RETURNS VOID
|
|
AS 'MODULE_PATHNAME', 'test_consume_memory'
|
|
LANGUAGE C STRICT
|
|
PARALLEL UNSAFE;
|
|
|
|
CREATE FUNCTION test_release_memory(megabytes int DEFAULT NULL)
|
|
RETURNS VOID
|
|
AS 'MODULE_PATHNAME', 'test_release_memory'
|
|
LANGUAGE C
|
|
PARALLEL UNSAFE;
|
|
|
|
CREATE FUNCTION clear_buffer_cache()
|
|
RETURNS VOID
|
|
AS 'MODULE_PATHNAME', 'clear_buffer_cache'
|
|
LANGUAGE C STRICT
|
|
PARALLEL UNSAFE;
|
|
|
|
CREATE FUNCTION get_raw_page_at_lsn(relname text, forkname text, blocknum int8, request_lsn pg_lsn, not_modified_since pg_lsn)
|
|
RETURNS bytea
|
|
AS 'MODULE_PATHNAME', 'get_raw_page_at_lsn'
|
|
LANGUAGE C PARALLEL UNSAFE;
|
|
|
|
CREATE FUNCTION get_raw_page_at_lsn(tbspc oid, db oid, relfilenode oid, forknum int8, blocknum int8, request_lsn pg_lsn, not_modified_since pg_lsn)
|
|
RETURNS bytea
|
|
AS 'MODULE_PATHNAME', 'get_raw_page_at_lsn_ex'
|
|
LANGUAGE C PARALLEL UNSAFE;
|
|
|
|
CREATE FUNCTION neon_xlogflush(lsn pg_lsn DEFAULT NULL)
|
|
RETURNS VOID
|
|
AS 'MODULE_PATHNAME', 'neon_xlogflush'
|
|
LANGUAGE C PARALLEL UNSAFE;
|
|
|
|
CREATE FUNCTION trigger_panic()
|
|
RETURNS VOID
|
|
AS 'MODULE_PATHNAME', 'trigger_panic'
|
|
LANGUAGE C PARALLEL UNSAFE;
|
|
|
|
CREATE FUNCTION trigger_segfault()
|
|
RETURNS VOID
|
|
AS 'MODULE_PATHNAME', 'trigger_segfault'
|
|
LANGUAGE C PARALLEL UNSAFE;
|
|
|
|
-- Alias for `trigger_segfault`, just because `SELECT 💣()` looks fun
|
|
CREATE OR REPLACE FUNCTION 💣() RETURNS void
|
|
LANGUAGE plpgsql AS $$
|
|
BEGIN
|
|
PERFORM trigger_segfault();
|
|
END;
|
|
$$;
|