From 157923fb3d55095d8d45fb1e7fe56a992d667b32 Mon Sep 17 00:00:00 2001 From: Tomas Vondra Date: Sun, 23 Apr 2023 22:19:05 +0200 Subject: [PATCH 2/2] pageinspect tweak --- contrib/pageinspect/brinfuncs.c | 10 ++++++---- contrib/pageinspect/pageinspect--1.7--1.8.sql | 20 +++++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/contrib/pageinspect/brinfuncs.c b/contrib/pageinspect/brinfuncs.c index 04a90c4782d..8db6f1bcc7d 100644 --- a/contrib/pageinspect/brinfuncs.c +++ b/contrib/pageinspect/brinfuncs.c @@ -227,8 +227,8 @@ brin_page_items(PG_FUNCTION_ARGS) dtup = NULL; for (;;) { - Datum values[7]; - bool nulls[7]; + Datum values[8]; + bool nulls[8]; /* * This loop is called once for every attribute of every tuple in the @@ -267,6 +267,7 @@ brin_page_items(PG_FUNCTION_ARGS) nulls[4] = true; nulls[5] = true; nulls[6] = true; + nulls[7] = true; } else { @@ -278,6 +279,7 @@ brin_page_items(PG_FUNCTION_ARGS) values[3] = BoolGetDatum(dtup->bt_columns[att].bv_allnulls); values[4] = BoolGetDatum(dtup->bt_columns[att].bv_hasnulls); values[5] = BoolGetDatum(dtup->bt_placeholder); + values[6] = BoolGetDatum(dtup->bt_empty_range); if (!dtup->bt_columns[att].bv_allnulls) { BrinValues *bvalues = &dtup->bt_columns[att]; @@ -303,12 +305,12 @@ brin_page_items(PG_FUNCTION_ARGS) } appendStringInfoChar(&s, '}'); - values[6] = CStringGetTextDatum(s.data); + values[7] = CStringGetTextDatum(s.data); pfree(s.data); } else { - nulls[6] = true; + nulls[7] = true; } } diff --git a/contrib/pageinspect/pageinspect--1.7--1.8.sql b/contrib/pageinspect/pageinspect--1.7--1.8.sql index 45031a026a6..edfb580a4ec 100644 --- a/contrib/pageinspect/pageinspect--1.7--1.8.sql +++ b/contrib/pageinspect/pageinspect--1.7--1.8.sql @@ -67,3 +67,23 @@ CREATE FUNCTION bt_page_items(IN page bytea, RETURNS SETOF record AS 'MODULE_PATHNAME', 'bt_page_items_bytea' LANGUAGE C STRICT PARALLEL SAFE; + +-- +-- add information about BRIN empty ranges +-- +DROP FUNCTION brin_page_items(IN page bytea, IN index_oid regclass); +-- +-- brin_page_items() +-- +CREATE FUNCTION brin_page_items(IN page bytea, IN index_oid regclass, + OUT itemoffset int, + OUT blknum int, + OUT attnum int, + OUT allnulls bool, + OUT hasnulls bool, + OUT placeholder bool, + OUT empty bool, + OUT value text) +RETURNS SETOF record +AS 'MODULE_PATHNAME', 'brin_page_items' +LANGUAGE C STRICT PARALLEL SAFE; -- 2.40.0