From 7d6c1517f342528cffde356277d0f3efb380b9d0 Mon Sep 17 00:00:00 2001 From: glyn Date: Wed, 7 Jan 2015 13:33:21 +0000 Subject: [PATCH] Initial commit --- .gitignore | 2 ++ README.md | 16 +++++++++++++++ pg_controldata.plperlu | 45 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 .gitignore create mode 100755 README.md create mode 100755 pg_controldata.plperlu diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ff37810 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +Thumb.db diff --git a/README.md b/README.md new file mode 100755 index 0000000..1b5e9fc --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +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) +``` + diff --git a/pg_controldata.plperlu b/pg_controldata.plperlu new file mode 100755 index 0000000..844e74c --- /dev/null +++ b/pg_controldata.plperlu @@ -0,0 +1,45 @@ +-- +-- 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() { + @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; -- 2.39.2