-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Start deprecation of PostgreSQL < 12
11 is EOL since 9/11/2023 and the ereport() functions has changed in PostgreSQL 12. Also it's time to modernize code and SMGRelation was absent in 9.6... so for the new code it'll be easier to manage only current PostgreSQL versions. And prepare for pgfincore 2.0.0 ! As we're to deprecated some C functions, we need an upgrade script from 1.3.1 but also a fresh new one for 2.0.0 else PostgreSQL will fail to apply upgrade path (first try to create pgsysconf will fail for example, as the shared object don't have this function anymore.
- Loading branch information
Showing
7 changed files
with
204 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,16 @@ | ||
04/12/2023 Cédric Villemain <[email protected]> | ||
* 2.0 - drop support for PostgreSQL < 12 | ||
|
||
21/09/2023 Cédric Villemain <[email protected]> | ||
* 1.3.1 - drop support for upgrading from "unpackaged" | ||
|
||
21/09/2023 Cédric Villemain <[email protected]> | ||
* 1.3 - added support for PostgreSQL 16 | ||
- drop support for PostgreSQL < 9.4 | ||
|
||
2019-10-29 Cédric Villemain <[email protected]> | ||
* 1.2.2 - Fix bad errno usage | ||
|
||
22/09/2017 Cédric Villemain <[email protected]> | ||
* 1.2.1 - Fix check on NULL input for drawer function | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,193 @@ | ||
-- | ||
-- SYSCONF | ||
-- | ||
CREATE OR REPLACE FUNCTION | ||
pgsysconf(OUT os_page_size bigint, | ||
OUT os_pages_free bigint, | ||
OUT os_total_pages bigint) | ||
RETURNS record | ||
AS '$libdir/pgfincore' | ||
LANGUAGE C; | ||
|
||
COMMENT ON FUNCTION pgsysconf() | ||
IS 'Get system configuration information at run time: | ||
- os_page_size is _SC_PAGESIZE | ||
- os_pages_free is _SC_AVPHYS_PAGES | ||
- os_total_pages is _SC_PHYS_PAGES | ||
man 3 sysconf for details'; | ||
|
||
|
||
CREATE OR REPLACE FUNCTION | ||
pgsysconf_pretty(OUT os_page_size text, | ||
OUT os_pages_free text, | ||
OUT os_total_pages text) | ||
RETURNS record | ||
AS ' | ||
select pg_size_pretty(os_page_size) as os_page_size, | ||
pg_size_pretty(os_pages_free * os_page_size) as os_pages_free, | ||
pg_size_pretty(os_total_pages * os_page_size) as os_total_pages | ||
from pgsysconf()' | ||
LANGUAGE SQL; | ||
|
||
COMMENT ON FUNCTION pgsysconf_pretty() | ||
IS 'Pgsysconf() with human readable output'; | ||
|
||
-- | ||
-- PGFADVISE | ||
-- | ||
CREATE OR REPLACE FUNCTION | ||
pgfadvise(IN regclass, IN text, IN int, | ||
OUT relpath text, | ||
OUT os_page_size bigint, | ||
OUT rel_os_pages bigint, | ||
OUT os_pages_free bigint) | ||
RETURNS setof record | ||
AS '$libdir/pgfincore' | ||
LANGUAGE C; | ||
|
||
COMMENT ON FUNCTION pgfadvise(regclass, text, int) | ||
IS 'Predeclare an access pattern for file data'; | ||
|
||
CREATE OR REPLACE FUNCTION | ||
pgfadvise_willneed(IN regclass, | ||
OUT relpath text, | ||
OUT os_page_size bigint, | ||
OUT rel_os_pages bigint, | ||
OUT os_pages_free bigint) | ||
RETURNS setof record | ||
AS 'SELECT pgfadvise($1, ''main'', 10)' | ||
LANGUAGE SQL; | ||
|
||
CREATE OR REPLACE FUNCTION | ||
pgfadvise_dontneed(IN regclass, | ||
OUT relpath text, | ||
OUT os_page_size bigint, | ||
OUT rel_os_pages bigint, | ||
OUT os_pages_free bigint) | ||
RETURNS setof record | ||
AS 'SELECT pgfadvise($1, ''main'', 20)' | ||
LANGUAGE SQL; | ||
|
||
CREATE OR REPLACE FUNCTION | ||
pgfadvise_normal(IN regclass, | ||
OUT relpath text, | ||
OUT os_page_size bigint, | ||
OUT rel_os_pages bigint, | ||
OUT os_pages_free bigint) | ||
RETURNS setof record | ||
AS 'SELECT pgfadvise($1, ''main'', 30)' | ||
LANGUAGE SQL; | ||
|
||
CREATE OR REPLACE FUNCTION | ||
pgfadvise_sequential(IN regclass, | ||
OUT relpath text, | ||
OUT os_page_size bigint, | ||
OUT rel_os_pages bigint, | ||
OUT os_pages_free bigint) | ||
RETURNS setof record | ||
AS 'SELECT pgfadvise($1, ''main'', 40)' | ||
LANGUAGE SQL; | ||
|
||
CREATE OR REPLACE FUNCTION | ||
pgfadvise_random(IN regclass, | ||
OUT relpath text, | ||
OUT os_page_size bigint, | ||
OUT rel_os_pages bigint, | ||
OUT os_pages_free bigint) | ||
RETURNS setof record | ||
AS 'SELECT pgfadvise($1, ''main'', 50)' | ||
LANGUAGE SQL; | ||
|
||
-- | ||
-- PGFADVISE_LOADER | ||
-- | ||
CREATE OR REPLACE FUNCTION | ||
pgfadvise_loader(IN regclass, IN text, IN int, IN bool, IN bool, IN varbit, | ||
OUT relpath text, | ||
OUT os_page_size bigint, | ||
OUT os_pages_free bigint, | ||
OUT pages_loaded bigint, | ||
OUT pages_unloaded bigint) | ||
RETURNS setof record | ||
AS '$libdir/pgfincore' | ||
LANGUAGE C; | ||
|
||
COMMENT ON FUNCTION pgfadvise_loader(regclass, text, int, bool, bool, varbit) | ||
IS 'Restore cache from the snapshot, options to load/unload each block to/from cache'; | ||
|
||
|
||
CREATE OR REPLACE FUNCTION | ||
pgfadvise_loader(IN regclass, IN int, IN bool, IN bool, IN varbit, | ||
OUT relpath text, | ||
OUT os_page_size bigint, | ||
OUT os_pages_free bigint, | ||
OUT pages_loaded bigint, | ||
OUT pages_unloaded bigint) | ||
RETURNS setof record | ||
AS 'SELECT pgfadvise_loader($1, ''main'', $2, $3, $4, $5)' | ||
LANGUAGE SQL; | ||
|
||
-- | ||
-- PGFINCORE | ||
-- | ||
CREATE OR REPLACE FUNCTION | ||
pgfincore(IN regclass, IN text, IN bool, | ||
OUT relpath text, | ||
OUT segment int, | ||
OUT os_page_size bigint, | ||
OUT rel_os_pages bigint, | ||
OUT pages_mem bigint, | ||
OUT group_mem bigint, | ||
OUT os_pages_free bigint, | ||
OUT databit varbit, | ||
OUT pages_dirty bigint, | ||
OUT group_dirty bigint) | ||
RETURNS setof record | ||
AS '$libdir/pgfincore' | ||
LANGUAGE C; | ||
|
||
COMMENT ON FUNCTION pgfincore(regclass, text, bool) | ||
IS 'Utility to inspect and get a snapshot of the system cache'; | ||
|
||
CREATE OR REPLACE FUNCTION | ||
pgfincore(IN regclass, IN bool, | ||
OUT relpath text, | ||
OUT segment int, | ||
OUT os_page_size bigint, | ||
OUT rel_os_pages bigint, | ||
OUT pages_mem bigint, | ||
OUT group_mem bigint, | ||
OUT os_pages_free bigint, | ||
OUT databit varbit, | ||
OUT pages_dirty bigint, | ||
OUT group_dirty bigint) | ||
RETURNS setof record | ||
AS 'SELECT * from pgfincore($1, ''main'', $2)' | ||
LANGUAGE SQL; | ||
|
||
CREATE OR REPLACE FUNCTION | ||
pgfincore(IN regclass, | ||
OUT relpath text, | ||
OUT segment int, | ||
OUT os_page_size bigint, | ||
OUT rel_os_pages bigint, | ||
OUT pages_mem bigint, | ||
OUT group_mem bigint, | ||
OUT os_pages_free bigint, | ||
OUT databit varbit, | ||
OUT pages_dirty bigint, | ||
OUT group_dirty bigint) | ||
RETURNS setof record | ||
AS 'SELECT * from pgfincore($1, ''main'', false)' | ||
LANGUAGE SQL; | ||
|
||
CREATE OR REPLACE FUNCTION | ||
pgfincore_drawer(IN varbit, | ||
OUT drawer cstring) | ||
RETURNS cstring | ||
AS '$libdir/pgfincore' | ||
LANGUAGE C; | ||
|
||
COMMENT ON FUNCTION pgfincore_drawer(varbit) | ||
IS 'A naive drawing function to visualize page cache per object'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
# pgfincore extension | ||
comment = 'examine and manage the os buffer cache' | ||
default_version = '1.3.1' | ||
default_version = '2.0.0' | ||
module_pathname = '$libdir/pgfincore' | ||
directory = pgfincore | ||
relocatable = true |