By Mouhamadou Diaw
I was looking for a build-in function to get the hostname of the server hosting my PostgreSQL cluster.
But seems that there is no build-in function. Looking in the extensions, I find the extension hostname which can allow to get the database server host name.
In this this blog I am explaining how to install and how to use it. The installation is very easy. The first step is to download it here .
After let’s go to the directory where the archive was decompressed and let’s run the command make
1
2
3
4
5
6
7
8
9
10
11
|
master /pg-hostname-master/ [PG1] ls Changes doc hostname .control Makefile META.json README.md sql src test 14:46:26 postgres@dbi-pg-essentials: /home/postgres/pg-hostname-master/pg-hostname-master/ [PG1] ls Changes doc hostname .control Makefile META.json README.md sql src test 14:46:48 postgres@dbi-pg-essentials: /home/postgres/pg-hostname- master /pg-hostname-master/ [PG1] make gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing- format -attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -fpic -I. -I./ -I /u01/app/postgres/product/95/db_0/include/server -I /u01/app/postgres/product/95/db_0/include/internal -D_GNU_SOURCE -I /usr/include/libxml2 -c -o src /hostname .o src /hostname .c gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing- format -attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2 -fpic -L /u01/app/postgres/product/95/db_0/lib -Wl,--as-needed -Wl,-rpath, '/u01/app/postgres/product/95/db_0/lib' ,-- enable -new-dtags -shared -o src /hostname .so src /hostname .o cp sql /hostname .sql sql /hostname--1 .0.0.sql 14:46:55 postgres@dbi-pg-essentials: /home/postgres/pg-hostname- |
Once done let’s run the command make install
1
2
3
4
5
6
7
8
9
10
|
pg- hostname -master/ [PG1] make install /bin/mkdir -p '/u01/app/postgres/product/95/db_0/share/extension' /bin/mkdir -p '/u01/app/postgres/product/95/db_0/share/extension' /bin/mkdir -p '/u01/app/postgres/product/95/db_0/lib' /bin/mkdir -p '/u01/app/postgres/product/95/db_0/share/doc/extension' /bin/install -c -m 644 . //hostname .control '/u01/app/postgres/product/95/db_0/share/extension/' /bin/install -c -m 644 . //sql/hostname--1 .0.0.sql . //sql/hostname--unpackaged--1 .0.0.sql '/u01/app/postgres/product/95/db_0/share/extension/' /bin/install -c -m 755 src /hostname .so '/u01/app/postgres/product/95/db_0/lib/' /bin/install -c -m 644 . //doc/hostname .mmd '/u01/app/postgres/product/95/db_0/share/doc/extension/' 14:47:29 postgres@dbi-pg-essentials: /home/postgres/pg-hostname-master/pg-hostname-master/ [PG1] |
If everything is ok we should now have the extension in our $PGHOME/share/extension
1
2
3
4
|
15:02:39 postgres@dbi-pg-essentials:[PG1] ls -ltra * hostname * -rw-r--r--. 1 postgres postgres 140 Dec 5 14:47 hostname .control -rw-r--r--. 1 postgres postgres 96 Dec 5 14:47 hostname --1.0.0.sql -rw-r--r--. 1 postgres |
And that’s all. We just have now have to install the extension in the database
1
2
|
postgres= # CREATE EXTENSION hostname; CREATE EXTENSION |
And then now we can have the hostname of our the server
1
2
3
4
5
6
7
|
postgres= # SELECT hostname(); hostname ------------------- dbi-pg-essentials (1 row) postgres= # |