summaryrefslogtreecommitdiffstats
path: root/contrib/pg_freespacemap/sql/pg_freespacemap.sql
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-16 19:46:48 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-16 19:46:48 +0000
commit311bcfc6b3acdd6fd152798c7f287ddf74fa2a98 (patch)
tree0ec307299b1dada3701e42f4ca6eda57d708261e /contrib/pg_freespacemap/sql/pg_freespacemap.sql
parentInitial commit. (diff)
downloadpostgresql-15-upstream.tar.xz
postgresql-15-upstream.zip
Adding upstream version 15.4.upstream/15.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'contrib/pg_freespacemap/sql/pg_freespacemap.sql')
-rw-r--r--contrib/pg_freespacemap/sql/pg_freespacemap.sql32
1 files changed, 32 insertions, 0 deletions
diff --git a/contrib/pg_freespacemap/sql/pg_freespacemap.sql b/contrib/pg_freespacemap/sql/pg_freespacemap.sql
new file mode 100644
index 0000000..06275d8
--- /dev/null
+++ b/contrib/pg_freespacemap/sql/pg_freespacemap.sql
@@ -0,0 +1,32 @@
+CREATE EXTENSION pg_freespacemap;
+
+CREATE TABLE freespace_tab (c1 int) WITH (autovacuum_enabled = off);
+CREATE INDEX freespace_brin ON freespace_tab USING brin (c1);
+CREATE INDEX freespace_btree ON freespace_tab USING btree (c1);
+CREATE INDEX freespace_hash ON freespace_tab USING hash (c1);
+
+-- report all the sizes of the FSMs for all the relation blocks.
+WITH rel AS (SELECT oid::regclass AS id FROM pg_class WHERE relname ~ 'freespace')
+ SELECT rel.id, fsm.blkno, (fsm.avail > 0) AS is_avail
+ FROM rel, LATERAL pg_freespace(rel.id) AS fsm
+ ORDER BY 1, 2;
+
+INSERT INTO freespace_tab VALUES (1);
+VACUUM freespace_tab;
+WITH rel AS (SELECT oid::regclass AS id FROM pg_class WHERE relname ~ 'freespace')
+ SELECT rel.id, fsm.blkno, (fsm.avail > 0) AS is_avail
+ FROM rel, LATERAL pg_freespace(rel.id) AS fsm
+ ORDER BY 1, 2;
+
+DELETE FROM freespace_tab;
+VACUUM freespace_tab;
+WITH rel AS (SELECT oid::regclass AS id FROM pg_class WHERE relname ~ 'freespace')
+ SELECT rel.id, fsm.blkno, (fsm.avail > 0) AS is_avail
+ FROM rel, LATERAL pg_freespace(rel.id) AS fsm
+ ORDER BY 1, 2;
+
+-- failures with incorrect block number
+SELECT * FROM pg_freespace('freespace_tab', -1);
+SELECT * FROM pg_freespace('freespace_tab', 4294967295);
+
+DROP TABLE freespace_tab;