!2039 移植pgfincore系列函数

Merge pull request !2039 from shenjunkun/master
This commit is contained in:
opengauss-bot
2022-08-25 09:23:45 +00:00
committed by Gitee
11 changed files with 1979 additions and 2 deletions

View File

@ -7527,6 +7527,53 @@
"percentile_of_value", 1,
AddBuiltinFunc(_0(9990), _1("percentile_of_value"), _2(3), _3(false), _4(false), _5(aggregate_dummy), _6(701), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(INTERNALlanguageId), _10(1), _11(0), _12(0), _13(0), _14(true), _15(false), _16(false), _17(false), _18('i'), _19(0), _20(3, 701, 701, 701), _21(NULL), _22(NULL), _23(NULL), _24(NULL), _25("aggregate_dummy"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33(NULL), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
),
AddFuncGroup(
"pgfadvise", 1,
AddBuiltinFunc(_0(2372), _1("pgfadvise"), _2(3), _3(false), _4(true), _5(pgfadvise), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(INTERNALlanguageId), _10(1), _11(1), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('v'), _19(0), _20(3,2205,25,23), _21(7,2205,25,23,25,20,20,20), _22(7,'i','i','i','o','o','o','o'), _23(7,"relname","fork","action","relpath","os_page_size","rel_os_pages","os_pages_free"), _24(NULL), _25("pgfadvise"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33("Predeclare an access pattern for file data"), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
),
AddFuncGroup(
"pgfadvise_dontneed", 1,
AddBuiltinFunc(_0(2536), _1("pgfadvise_dontneed"), _2(1), _3(false), _4(true), _5(NULL), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(SQLlanguageId), _10(1), _11(1), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('v'), _19(0), _20(1,2205), _21(5,2205,25,20,20,20), _22(5,'i','o','o','o','o'), _23(5,"relname","relpath","os_page_size","rel_os_pages","os_pages_free"), _24(NULL), _25("SELECT pg_catalog.pgfadvise($1, 'main', 20)"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33(NULL), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
),
AddFuncGroup(
"pgfadvise_normal", 1,
AddBuiltinFunc(_0(2537), _1("pgfadvise_normal"), _2(1), _3(false), _4(true), _5(NULL), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(SQLlanguageId), _10(1), _11(1), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('v'), _19(0), _20(1,2205), _21(5,2205,25,20,20,20), _22(5,'i','o','o','o','o'), _23(5,"relname","relpath","os_page_size","rel_os_pages","os_pages_free"), _24(NULL), _25("SELECT pg_catalog.pgfadvise($1, 'main', 30)"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33(NULL), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
),
AddFuncGroup(
"pgfadvise_random", 1,
AddBuiltinFunc(_0(2542), _1("pgfadvise_random"), _2(1), _3(false), _4(true), _5(NULL), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(SQLlanguageId), _10(1), _11(1), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('v'), _19(0), _20(1,2205), _21(5,2205,25,20,20,20), _22(5,'i','o','o','o','o'), _23(5,"relname","relpath","os_page_size","rel_os_pages","os_pages_free"), _24(NULL), _25("SELECT pg_catalog.pgfadvise($1, 'main', 50)"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33(NULL), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
),
AddFuncGroup(
"pgfadvise_sequential", 1,
AddBuiltinFunc(_0(2538), _1("pgfadvise_sequential"), _2(1), _3(false), _4(true), _5(NULL), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(SQLlanguageId), _10(1), _11(1), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('v'), _19(0), _20(1,2205), _21(5,2205,25,20,20,20), _22(5,'i','o','o','o','o'), _23(5,"relname","relpath","os_page_size","rel_os_pages","os_pages_free"), _24(NULL), _25("SELECT pg_catalog.pgfadvise($1, 'main', 40)"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33(NULL), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
),
AddFuncGroup(
"pgfadvise_willneed", 1,
AddBuiltinFunc(_0(2535), _1("pgfadvise_willneed"), _2(1), _3(false), _4(true), _5(NULL), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(SQLlanguageId), _10(1), _11(1), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('v'), _19(0), _20(1,2205), _21(5,2205,25,20,20,20), _22(5,'i','o','o','o','o'), _23(5,"relname","relpath","os_page_size","rel_os_pages","os_pages_free"), _24(NULL), _25("SELECT pg_catalog.pgfadvise($1, 'main', 10)"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33(NULL), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
),
AddFuncGroup(
"pgfadvise_loader", 2,
AddBuiltinFunc(_0(2373), _1("pgfadvise_loader"), _2(6), _3(false), _4(true), _5(pgfadvise_loader), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(INTERNALlanguageId), _10(1), _11(1), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('v'), _19(0), _20(6,2205,25,23,16,16,1562), _21(11,2205,25,23,16,16,1562,25,20,20,20,20), _22(11,'i','i','i','i','i','i','o','o','o','o','o'), _23(11,"relname","fork","segment","load","unload","databit","relpath","os_page_size","os_pages_free","pages_loaded","pages_unloaded"), _24(NULL), _25("pgfadvise_loader"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33("Restore cache from the snapshot, options to load/unload each block to/from cache"), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0)),
AddBuiltinFunc(_0(2539), _1("pgfadvise_loader"), _2(5), _3(false), _4(true), _5(NULL), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(SQLlanguageId), _10(1), _11(1), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('v'), _19(0), _20(5,2205,23,16,16,1562), _21(10,2205,23,16,16,1562,25,20,20,20,20), _22(10,'i','i','i','i','i','o','o','o','o','o'), _23(10,"relname","segment","load","unload","databit","relpath","os_page_size","os_pages_free","pages_loaded","pages_unloaded"), _24(NULL), _25("SELECT pg_catalog.pgfadvise_loader($1, 'main', $2, $3, $4, $5)"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33(NULL), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
),
AddFuncGroup(
"pgfincore", 3,
AddBuiltinFunc(_0(2374), _1("pgfincore"), _2(3), _3(false), _4(true), _5(pgfincore), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(INTERNALlanguageId), _10(1), _11(1), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('v'), _19(0), _20(3,2205,25,16), _21(13,2205,25,16,25,23,20,20,20,20,20,1562,20,20), _22(13,'i','i','i','o','o','o','o','o','o','o','o','o','o'), _23(13,"relname","fork","getdatabit","relpath","segment","os_page_size","rel_os_pages","pages_mem","group_mem","os_pages_free","databit","pages_dirty","group_dirty"), _24(NULL), _25("pgfincore"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33("Utility to inspect and get a snapshot of the system cache"), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0)),
AddBuiltinFunc(_0(2540), _1("pgfincore"), _2(2), _3(false), _4(true), _5(NULL), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(SQLlanguageId), _10(1), _11(1), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('v'), _19(0), _20(2,2205,16), _21(12,2205,16,25,23,20,20,20,20,20,1562,20,20), _22(12,'i','i','o','o','o','o','o','o','o','o','o','o'), _23(12,"relname","getdatabit","relpath","segment","os_page_size","rel_os_pages","pages_mem","group_mem","os_pages_free","databit","pages_dirty","group_dirty"), _24(NULL), _25("SELECT * from pg_catalog.pgfincore($1, 'main', $2)"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33(NULL), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0)),
AddBuiltinFunc(_0(2541), _1("pgfincore"), _2(1), _3(false), _4(true), _5(NULL), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(SQLlanguageId), _10(1), _11(1), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('v'), _19(0), _20(1,2205), _21(11,2205,25,23,20,20,20,20,20,1562,20,20), _22(11,'i','o','o','o','o','o','o','o','o','o','o'), _23(11,"relname","relpath","segment","os_page_size","rel_os_pages","pages_mem","group_mem","os_pages_free","databit","pages_dirty","group_dirty"), _24(NULL), _25("SELECT * from pg_catalog.pgfincore($1, 'main', false)"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33(NULL), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
),
AddFuncGroup(
"pgfincore_drawer", 1,
AddBuiltinFunc(_0(2543), _1("pgfincore_drawer"), _2(1), _3(false), _4(false), _5(pgfincore_drawer), _6(2275), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(INTERNALlanguageId), _10(0), _11(0), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('i'), _19(0), _20(1,1562), _21(2,1562,2275), _22(2,'i','o'), _23(2,"input","drawer"), _24(NULL), _25("pgfincore_drawer"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33("A naive drawing function to visualize page cache per object"), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
),
AddFuncGroup(
"pgsysconf_pretty", 1,
AddBuiltinFunc(_0(2534), _1("pgsysconf_pretty"), _2(0), _3(false), _4(false), _5(NULL), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(SQLlanguageId), _10(0), _11(0), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('v'), _19(0), _20(0), _21(3,25,25,25), _22(3,'o','o','o'), _23(3,"os_page_size","os_pages_free","os_total_pages"), _24(NULL), _25("select pg_catalog.pg_size_pretty(os_page_size) as os_page_size, pg_catalog.pg_size_pretty(os_pages_free * os_page_size) as os_pages_free, pg_catalog.pg_size_pretty(os_total_pages * os_page_size) as os_total_pages from pg_catalog.pgsysconf()"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33("Pgsysconf() with human readable output"), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
),
AddFuncGroup(
"pgsysconf", 1,
AddBuiltinFunc(_0(2371), _1("pgsysconf"), _2(0), _3(false), _4(false), _5(pgsysconf), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(INTERNALlanguageId), _10(0), _11(0), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('v'), _19(0), _20(0), _21(3,20,20,20), _22(3,'o','o','o'), _23(3,"os_page_size","os_pages_free","os_total_pages"), _24(NULL), _25("pgsysconf"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33("Get system configuration information at run time, man 3 sysconf for details"), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
),
AddFuncGroup(
"pg_advisory_lock", 3,
AddBuiltinFunc(_0(2880), _1("pg_advisory_lock"), _2(1), _3(true), _4(false), _5(pg_advisory_lock_int8), _6(2278), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(INTERNALlanguageId), _10(1), _11(0), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('v'), _19(0), _20(1, 20), _21(NULL), _22(NULL), _23(NULL), _24(NULL), _25("pg_advisory_lock_int8"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33("obtain exclusive advisory lock"), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0)),

View File

@ -59,7 +59,7 @@ bool open_join_children = true;
bool will_shutdown = false;
/* hard-wired binary version number */
const uint32 GRAND_VERSION_NUM = 92612;
const uint32 GRAND_VERSION_NUM = 92613;
const uint32 PREDPUSH_SAME_LEVEL_VERSION_NUM = 92522;
const uint32 UPSERT_WHERE_VERSION_NUM = 92514;

View File

@ -21,7 +21,7 @@ ifneq "$(MAKECMDGOALS)" "clean"
endif
endif
endif
OBJS = guc.o help_config.o pg_rusage.o ps_status.o superuser.o tzparser.o \
OBJS = guc.o help_config.o pg_rusage.o pgfincore.o ps_status.o superuser.o tzparser.o \
rbtree.o anls_opt.o sec_rls_utils.o elf_parser.o pg_controldata.o oidrbtree.o
# This location might depend on the installation directories. Therefore

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,16 @@
DROP FUNCTION IF EXISTS pg_catalog.pgsysconf_pretty() CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgsysconf() CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_willneed(regclass) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_dontneed(regclass) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_normal(regclass) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_sequential(regclass) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_random(regclass) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise(regclass, text, int) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_loader(regclass, text, int, bool, bool, varbit) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_loader(regclass, int, bool, bool, varbit) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfincore(regclass) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfincore(regclass, bool) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfincore(regclass, text, bool) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfincore_drawer(varbit) CASCADE;

View File

@ -0,0 +1,16 @@
DROP FUNCTION IF EXISTS pg_catalog.pgsysconf_pretty() CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgsysconf() CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_willneed(regclass) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_dontneed(regclass) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_normal(regclass) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_sequential(regclass) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_random(regclass) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise(regclass, text, int) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_loader(regclass, text, int, bool, bool, varbit) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_loader(regclass, int, bool, bool, varbit) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfincore(regclass) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfincore(regclass, bool) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfincore(regclass, text, bool) CASCADE;
DROP FUNCTION IF EXISTS pg_catalog.pgfincore_drawer(varbit) CASCADE;

View File

@ -0,0 +1,206 @@
DROP FUNCTION IF EXISTS pg_catalog.pgsysconf() CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2371;
CREATE FUNCTION
pg_catalog.pgsysconf(OUT os_page_size bigint,
OUT os_pages_free bigint,
OUT os_total_pages bigint)
RETURNS record LANGUAGE INTERNAL VOLATILE
AS 'pgfincore';
COMMENT ON FUNCTION pg_catalog.pgsysconf()
IS 'Get system configuration information at run time, man 3 sysconf for details';
DROP FUNCTION IF EXISTS pg_catalog.pgsysconf_pretty() CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2534;
CREATE FUNCTION
pg_catalog.pgsysconf_pretty(OUT os_page_size text,
OUT os_pages_free text,
OUT os_total_pages text)
RETURNS record LANGUAGE SQL VOLATILE
AS '
select pg_catalog.pg_size_pretty(os_page_size) as os_page_size,
pg_catalog.pg_size_pretty(os_pages_free * os_page_size) as os_pages_free,
pg_catalog.pg_size_pretty(os_total_pages * os_page_size) as os_total_pages
from pgsysconf()'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise(regclass, text, int) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2372;
CREATE OR REPLACE FUNCTION
pg_catalog.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 LANGUAGE INTERNAL VOLATILE
AS 'pgfadvise'
;
COMMENT ON FUNCTION pg_catalog.pgfadvise(regclass, text, int)
IS 'Predeclare an access pattern for file data';
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_willneed(regclass) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2535;
CREATE FUNCTION
pg_catalog.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 LANGUAGE SQL VOLATILE
AS 'SELECT pg_catalog.pgfadvise($1, ''main'', 10)'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_dontneed(regclass) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2536;
CREATE FUNCTION
pg_catalog.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 LANGUAGE SQL VOLATILE
AS 'SELECT pg_catalog.pgfadvise($1, ''main'', 20)'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_normal(regclass) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2537;
CREATE FUNCTION
pg_catalog.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 LANGUAGE SQL VOLATILE
AS 'SELECT pg_catalog.pgfadvise($1, ''main'', 30)'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_sequential(regclass) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2538;
CREATE FUNCTION
pg_catalog.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 LANGUAGE SQL VOLATILE
AS 'SELECT pg_catalog.pgfadvise($1, ''main'', 40)'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_random(regclass) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2542;
CREATE FUNCTION
pg_catalog.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 LANGUAGE SQL VOLATILE
AS 'SELECT pg_catalog.pgfadvise($1, ''main'', 50)'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_loader(regclass, text, int, bool, bool, varbit) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2373;
CREATE FUNCTION
pg_catalog.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 LANGUAGE INTERNAL VOLATILE
AS 'pgfadvise_loader'
;
COMMENT ON FUNCTION pg_catalog.pgfadvise_loader(regclass, text, int, bool, bool, varbit)
IS 'Restore cache from the snapshot, options to load/unload each block to/from cache';
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_loader(regclass, int, bool, bool, varbit) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2539;
CREATE FUNCTION
pg_catalog.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 LANGUAGE SQL VOLATILE
AS 'SELECT pg_catalog.pgfadvise_loader($1, ''main'', $2, $3, $4, $5)'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfincore(regclass, text, bool) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2374;
CREATE FUNCTION
pg_catalog.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 LANGUAGE INTERNAL VOLATILE
AS 'pgfincore'
;
COMMENT ON FUNCTION pg_catalog.pgfincore(regclass, text, bool)
IS 'Utility to inspect and get a snapshot of the system cache';
DROP FUNCTION IF EXISTS pg_catalog.pgfincore(regclass) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2541;
CREATE FUNCTION
pg_catalog.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 LANGUAGE SQL VOLATILE
AS 'SELECT * from pg_catalog.pgfincore($1, ''main'', false)'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfincore(regclass, bool) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2540;
CREATE FUNCTION
pg_catalog.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 LANGUAGE SQL VOLATILE
AS 'SELECT * from pg_catalog.pgfincore($1, ''main'', $2)'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfincore_drawer(varbit) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2543;
CREATE FUNCTION
pg_catalog.pgfincore_drawer(IN varbit,
OUT drawer cstring)
RETURNS cstring LANGUAGE INTERNAL IMMUTABLE
AS 'pgfincore_drawer'
;
COMMENT ON FUNCTION pg_catalog.pgfincore_drawer(varbit)
IS 'A naive drawing function to visualize page cache per object';

View File

@ -0,0 +1,206 @@
DROP FUNCTION IF EXISTS pg_catalog.pgsysconf() CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2371;
CREATE FUNCTION
pg_catalog.pgsysconf(OUT os_page_size bigint,
OUT os_pages_free bigint,
OUT os_total_pages bigint)
RETURNS record LANGUAGE INTERNAL VOLATILE
AS 'pgfincore';
COMMENT ON FUNCTION pg_catalog.pgsysconf()
IS 'Get system configuration information at run time, man 3 sysconf for details';
DROP FUNCTION IF EXISTS pg_catalog.pgsysconf_pretty() CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2534;
CREATE FUNCTION
pg_catalog.pgsysconf_pretty(OUT os_page_size text,
OUT os_pages_free text,
OUT os_total_pages text)
RETURNS record LANGUAGE SQL VOLATILE
AS '
select pg_catalog.pg_size_pretty(os_page_size) as os_page_size,
pg_catalog.pg_size_pretty(os_pages_free * os_page_size) as os_pages_free,
pg_catalog.pg_size_pretty(os_total_pages * os_page_size) as os_total_pages
from pgsysconf()'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise(regclass, text, int) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2372;
CREATE OR REPLACE FUNCTION
pg_catalog.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 LANGUAGE INTERNAL VOLATILE
AS 'pgfadvise'
;
COMMENT ON FUNCTION pg_catalog.pgfadvise(regclass, text, int)
IS 'Predeclare an access pattern for file data';
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_willneed(regclass) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2535;
CREATE FUNCTION
pg_catalog.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 LANGUAGE SQL VOLATILE
AS 'SELECT pg_catalog.pgfadvise($1, ''main'', 10)'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_dontneed(regclass) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2536;
CREATE FUNCTION
pg_catalog.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 LANGUAGE SQL VOLATILE
AS 'SELECT pg_catalog.pgfadvise($1, ''main'', 20)'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_normal(regclass) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2537;
CREATE FUNCTION
pg_catalog.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 LANGUAGE SQL VOLATILE
AS 'SELECT pg_catalog.pgfadvise($1, ''main'', 30)'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_sequential(regclass) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2538;
CREATE FUNCTION
pg_catalog.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 LANGUAGE SQL VOLATILE
AS 'SELECT pg_catalog.pgfadvise($1, ''main'', 40)'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_random(regclass) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2542;
CREATE FUNCTION
pg_catalog.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 LANGUAGE SQL VOLATILE
AS 'SELECT pg_catalog.pgfadvise($1, ''main'', 50)'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_loader(regclass, text, int, bool, bool, varbit) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2373;
CREATE FUNCTION
pg_catalog.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 LANGUAGE INTERNAL VOLATILE
AS 'pgfadvise_loader'
;
COMMENT ON FUNCTION pg_catalog.pgfadvise_loader(regclass, text, int, bool, bool, varbit)
IS 'Restore cache from the snapshot, options to load/unload each block to/from cache';
DROP FUNCTION IF EXISTS pg_catalog.pgfadvise_loader(regclass, int, bool, bool, varbit) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2539;
CREATE FUNCTION
pg_catalog.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 LANGUAGE SQL VOLATILE
AS 'SELECT pg_catalog.pgfadvise_loader($1, ''main'', $2, $3, $4, $5)'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfincore(regclass, text, bool) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2374;
CREATE FUNCTION
pg_catalog.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 LANGUAGE INTERNAL VOLATILE
AS 'pgfincore'
;
COMMENT ON FUNCTION pg_catalog.pgfincore(regclass, text, bool)
IS 'Utility to inspect and get a snapshot of the system cache';
DROP FUNCTION IF EXISTS pg_catalog.pgfincore(regclass) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2541;
CREATE FUNCTION
pg_catalog.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 LANGUAGE SQL VOLATILE
AS 'SELECT * from pg_catalog.pgfincore($1, ''main'', false)'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfincore(regclass, bool) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2540;
CREATE FUNCTION
pg_catalog.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 LANGUAGE SQL VOLATILE
AS 'SELECT * from pg_catalog.pgfincore($1, ''main'', $2)'
;
DROP FUNCTION IF EXISTS pg_catalog.pgfincore_drawer(varbit) CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 2543;
CREATE FUNCTION
pg_catalog.pgfincore_drawer(IN varbit,
OUT drawer cstring)
RETURNS cstring LANGUAGE INTERNAL IMMUTABLE
AS 'pgfincore_drawer'
;
COMMENT ON FUNCTION pg_catalog.pgfincore_drawer(varbit)
IS 'A naive drawing function to visualize page cache per object';

View File

@ -0,0 +1,122 @@
--
-- test SYSCONF
--
select true from pgsysconf();
bool
------
t
(1 row)
select true from pgsysconf_pretty();
bool
------
t
(1 row)
--
-- make a temp table to use below
--
CREATE TEMP TABLE test AS SELECT generate_series(1,256) as a;
--
-- this is not perfect testing but it is hard to predict what the OS will do
-- for *sure*
--
--
-- test fadvise_loader
--
select true from pgfadvise_loader('test', 0, true, true, B'1010');
bool
------
t
(1 row)
select true from pgfadvise_loader('test', 0, true, false, B'1010');
bool
------
t
(1 row)
select true from pgfadvise_loader('test', 0, false, true, B'1010');
bool
------
t
(1 row)
select true from pgfadvise_loader('test', 0, false, false, B'1010');
bool
------
t
(1 row)
-- must not fail on empty databit input
select true from pgfadvise_loader('test', 0, false, false, B'');
bool
------
t
(1 row)
-- ERROR on NULL databit input
select true from pgfadvise_loader('test', 0, false, false, NULL);
ERROR: pgfadvise_loader: databit argument shouldn't be NULL
CONTEXT: referenced column: pgfadvise_loader
SQL function "pgfadvise_loader" statement 1
--
-- test pgfincore
--
select true from pgfincore('test', true);
bool
------
t
(1 row)
select true from pgfincore('test');
bool
------
t
(1 row)
--
-- test DONTNEED, WILLNEED
--
select true from pgfadvise_willneed('test');
bool
------
t
(1 row)
select true from pgfadvise_dontneed('test');
bool
------
t
(1 row)
--
-- test PGFADVISE flags
--
select true from pgfadvise_sequential('test');
bool
------
t
(1 row)
select true from pgfadvise_random('test');
bool
------
t
(1 row)
select true from pgfadvise_normal('test');
bool
------
t
(1 row)
--
-- tests drawers
--
select true from pgfincore('test','main',true);
bool
------
t
(1 row)

View File

@ -929,3 +929,4 @@ test: composite_datum_record mysql_function b_comments
test: join_test_alias alter_ctable_compress
test: ignore/ignore_type_transform ignore/ignore_not_null_constraints ignore/ignore_unique_constraints ignore/ignore_no_matched_partition
test: pgfincore

View File

@ -0,0 +1,51 @@
--
-- test SYSCONF
--
select true from pgsysconf();
select true from pgsysconf_pretty();
--
-- make a temp table to use below
--
CREATE TEMP TABLE test AS SELECT generate_series(1,256) as a;
--
-- this is not perfect testing but it is hard to predict what the OS will do
-- for *sure*
--
--
-- test fadvise_loader
--
select true from pgfadvise_loader('test', 0, true, true, B'1010');
select true from pgfadvise_loader('test', 0, true, false, B'1010');
select true from pgfadvise_loader('test', 0, false, true, B'1010');
select true from pgfadvise_loader('test', 0, false, false, B'1010');
-- must not fail on empty databit input
select true from pgfadvise_loader('test', 0, false, false, B'');
-- ERROR on NULL databit input
select true from pgfadvise_loader('test', 0, false, false, NULL);
--
-- test pgfincore
--
select true from pgfincore('test', true);
select true from pgfincore('test');
--
-- test DONTNEED, WILLNEED
--
select true from pgfadvise_willneed('test');
select true from pgfadvise_dontneed('test');
--
-- test PGFADVISE flags
--
select true from pgfadvise_sequential('test');
select true from pgfadvise_random('test');
select true from pgfadvise_normal('test');
--
-- tests drawers
--
select true from pgfincore('test','main',true);