--- /dev/null
+pg_controldata
+==============
+
+Pl/perlU function to show settings from pg_controldata
+
+Usage
+---------
+
+```sql
+TEST=# SELECT * FROM public.pg_controldata WHERE setting = 'Database system identifier';
+ name | setting
+----------------------------+---------------------
+ Database system identifier | 5667443312440565226
+(1 row)
+```
+
--- /dev/null
+--
+-- Glyn Astill 08/02/2014
+-- Pl/perlU function/view to show settings from pg_controldata
+--
+-- For an extension in written in C by Joe Conway see:
+-- https://github.com/jconway/pg_controldata
+--
+
+SET search_path = public;
+
+--
+
+DROP FUNCTION IF EXISTS pg_controldata();
+CREATE OR REPLACE FUNCTION pg_controldata()
+RETURNS TABLE (name text, setting text) AS
+$BODY$
+ my $rv;
+ my $data_dir;
+ my $pg_controldata_bin = 'pg_controldata';
+ my @fields;
+
+ $rv = spi_exec_query('SHOW data_directory', 1);
+ $data_dir = $rv->{rows}[0]->{data_directory};
+
+ open(FD,"$pg_controldata_bin $data_dir | ");
+
+ while(<FD>) {
+ @fields = split(':', $_, 2);
+ $fields[0] =~ s/^\s+|\s+$//g;
+ $fields[1] =~ s/^\s+|\s+$//g;
+ return_next { name => $fields[0], setting => $fields[1]};
+ }
+ close (FD);
+
+ return;
+
+$BODY$
+LANGUAGE plperlu;
+
+--
+
+CREATE VIEW pg_controldata AS
+SELECT * FROM pg_controldata();
+
+GRANT SELECT ON pg_controldata TO PUBLIC;