]> git.8kb.co.uk Git - postgresql/pg_controldata/commitdiff
Initial commit
authorglyn <glyn@8kb.co.uk>
Wed, 7 Jan 2015 13:33:21 +0000 (13:33 +0000)
committerglyn <glyn@8kb.co.uk>
Wed, 7 Jan 2015 13:33:21 +0000 (13:33 +0000)
.gitignore [new file with mode: 0644]
README.md [new file with mode: 0755]
pg_controldata.plperlu [new file with mode: 0755]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..ff37810
--- /dev/null
@@ -0,0 +1,2 @@
+.DS_Store
+Thumb.db
diff --git a/README.md b/README.md
new file mode 100755 (executable)
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 (executable)
index 0000000..844e74c
--- /dev/null
@@ -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(<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;