contrib/pageinspect: Use SQL-standard function bodies.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 29 Dec 2024 19:58:05 +0000 (14:58 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 29 Dec 2024 19:58:05 +0000 (14:58 -0500)
In the same spirit as 969bbd0fa13e3796c93f323eba8.

Tom Lane and Ronan Dunklau

Discussion: https://postgr.es/m/3316564.aeNJFYEL58@aivenlaptop

contrib/pageinspect/Makefile
contrib/pageinspect/meson.build
contrib/pageinspect/pageinspect--1.12--1.13.sql [new file with mode: 0644]
contrib/pageinspect/pageinspect.control

index 95e030b396929ffd6139664fbba1720e1c7c1b67..9dee765331069c5cf66865a31a2606ec5c46c602 100644 (file)
@@ -13,7 +13,8 @@ OBJS = \
    rawpage.o
 
 EXTENSION = pageinspect
-DATA =  pageinspect--1.11--1.12.sql pageinspect--1.10--1.11.sql \
+DATA =  pageinspect--1.12--1.13.sql \
+   pageinspect--1.11--1.12.sql pageinspect--1.10--1.11.sql \
    pageinspect--1.9--1.10.sql pageinspect--1.8--1.9.sql \
    pageinspect--1.7--1.8.sql pageinspect--1.6--1.7.sql \
    pageinspect--1.5.sql pageinspect--1.5--1.6.sql \
index 27a007c1df3a68b5eb71d05ff71cd0e943e666fa..689b9d1dba22d53ffc90a4bc677d5c2f81e505c8 100644 (file)
@@ -37,6 +37,7 @@ install_data(
   'pageinspect--1.9--1.10.sql',
   'pageinspect--1.10--1.11.sql',
   'pageinspect--1.11--1.12.sql',
+  'pageinspect--1.12--1.13.sql',
   'pageinspect.control',
   kwargs: contrib_data_args,
 )
diff --git a/contrib/pageinspect/pageinspect--1.12--1.13.sql b/contrib/pageinspect/pageinspect--1.12--1.13.sql
new file mode 100644 (file)
index 0000000..07ec70a
--- /dev/null
@@ -0,0 +1,74 @@
+/* contrib/pageinspect/pageinspect--1.12--1.13.sql */
+
+-- complain if script is sourced in psql, rather than via ALTER EXTENSION
+\echo Use "ALTER EXTENSION pageinspect UPDATE TO '1.13'" to load this file. \quit
+
+-- Convert SQL functions to new style
+
+CREATE OR REPLACE FUNCTION heap_page_item_attrs(
+    IN page bytea,
+    IN rel_oid regclass,
+    IN do_detoast bool,
+    OUT lp smallint,
+    OUT lp_off smallint,
+    OUT lp_flags smallint,
+    OUT lp_len smallint,
+    OUT t_xmin xid,
+    OUT t_xmax xid,
+    OUT t_field3 int4,
+    OUT t_ctid tid,
+    OUT t_infomask2 integer,
+    OUT t_infomask integer,
+    OUT t_hoff smallint,
+    OUT t_bits text,
+    OUT t_oid oid,
+    OUT t_attrs bytea[]
+    )
+RETURNS SETOF record
+LANGUAGE SQL PARALLEL RESTRICTED
+BEGIN ATOMIC
+SELECT lp,
+       lp_off,
+       lp_flags,
+       lp_len,
+       t_xmin,
+       t_xmax,
+       t_field3,
+       t_ctid,
+       t_infomask2,
+       t_infomask,
+       t_hoff,
+       t_bits,
+       t_oid,
+       tuple_data_split(
+         rel_oid::oid,
+         t_data,
+         t_infomask,
+         t_infomask2,
+         t_bits,
+         do_detoast)
+         AS t_attrs
+  FROM heap_page_items(page);
+END;
+
+CREATE OR REPLACE FUNCTION heap_page_item_attrs(IN page bytea, IN rel_oid regclass,
+    OUT lp smallint,
+    OUT lp_off smallint,
+    OUT lp_flags smallint,
+    OUT lp_len smallint,
+    OUT t_xmin xid,
+    OUT t_xmax xid,
+    OUT t_field3 int4,
+    OUT t_ctid tid,
+    OUT t_infomask2 integer,
+    OUT t_infomask integer,
+    OUT t_hoff smallint,
+    OUT t_bits text,
+    OUT t_oid oid,
+    OUT t_attrs bytea[]
+    )
+RETURNS SETOF record
+LANGUAGE SQL PARALLEL RESTRICTED
+BEGIN ATOMIC
+SELECT * FROM heap_page_item_attrs(page, rel_oid, false);
+END;
index b2804e9b1284bfb6fd76ac025ca9cc57d47b82be..cfc87feac034a1f08cbede7c3803b7c387b15629 100644 (file)
@@ -1,5 +1,5 @@
 # pageinspect extension
 comment = 'inspect the contents of database pages at a low level'
-default_version = '1.12'
+default_version = '1.13'
 module_pathname = '$libdir/pageinspect'
 relocatable = true