pg_freespacemap: Use SQL-standard function bodies
authorMichael Paquier <michael@paquier.xyz>
Tue, 12 Nov 2024 08:28:03 +0000 (17:28 +0900)
committerMichael Paquier <michael@paquier.xyz>
Tue, 12 Nov 2024 08:28:03 +0000 (17:28 +0900)
72a5b1fc8804 was the piece missing for the conversion of this module.
pg_freespace is bumped to 1.3, with its function pg_freespace(regclass)
converted to this new style.

There are other modules in the tree that need a similar treatment; these
will be handled later.

Author: Tom Lane
Reviewed-by: Ronan Dunklau
Discussion: https://postgr.es/m/3395418.1618352794@sss.pgh.pa.us

contrib/pg_freespacemap/Makefile
contrib/pg_freespacemap/meson.build
contrib/pg_freespacemap/pg_freespacemap--1.2--1.3.sql [new file with mode: 0644]
contrib/pg_freespacemap/pg_freespacemap.control

index b48e4b255bcfdde110b5c3c9c069e122bf45eadb..a986ae73d69cc3bd33952fbb1634714290095574 100644 (file)
@@ -6,7 +6,9 @@ OBJS = \
    pg_freespacemap.o
 
 EXTENSION = pg_freespacemap
-DATA = pg_freespacemap--1.1.sql pg_freespacemap--1.1--1.2.sql \
+DATA = pg_freespacemap--1.1.sql \
+   pg_freespacemap--1.2--1.3.sql \
+   pg_freespacemap--1.1--1.2.sql \
    pg_freespacemap--1.0--1.1.sql
 PGFILEDESC = "pg_freespacemap - monitoring of free space map"
 
index af5d2b8c27c88f21dacc08bd30eacf2aa8038b09..42ff1e74cc3e1172e15ee1f8bd5266f6df2790d7 100644 (file)
@@ -20,6 +20,7 @@ install_data(
   'pg_freespacemap--1.0--1.1.sql',
   'pg_freespacemap--1.1--1.2.sql',
   'pg_freespacemap--1.1.sql',
+  'pg_freespacemap--1.2--1.3.sql',
   'pg_freespacemap.control',
   kwargs: contrib_data_args,
 )
diff --git a/contrib/pg_freespacemap/pg_freespacemap--1.2--1.3.sql b/contrib/pg_freespacemap/pg_freespacemap--1.2--1.3.sql
new file mode 100644 (file)
index 0000000..7f92c9e
--- /dev/null
@@ -0,0 +1,13 @@
+/* contrib/pg_freespacemap/pg_freespacemap--1.2--1.3.sql */
+
+-- complain if script is sourced in psql, rather than via ALTER EXTENSION
+\echo Use "ALTER EXTENSION pg_freespacemap UPDATE TO '1.3'" to load this file. \quit
+
+CREATE OR REPLACE FUNCTION
+  pg_freespace(rel regclass, blkno OUT bigint, avail OUT int2)
+RETURNS SETOF RECORD
+LANGUAGE SQL PARALLEL SAFE
+BEGIN ATOMIC
+  SELECT blkno, pg_freespace($1, blkno) AS avail
+  FROM generate_series(0, pg_relation_size($1) / current_setting('block_size')::bigint - 1) AS blkno;
+END;
index ac8fc5050a91702a188f31ca9ddd34efed316b11..1992320691b27956a2d2202f7d3ce1d53f2d07e5 100644 (file)
@@ -1,5 +1,5 @@
 # pg_freespacemap extension
 comment = 'examine the free space map (FSM)'
-default_version = '1.2'
+default_version = '1.3'
 module_pathname = '$libdir/pg_freespacemap'
 relocatable = true