Thread: CREATE EXTENSION to load the language into the database

CREATE EXTENSION to load the language into the database

From
Daulat Ram
Date:

Hello team,

 

We are getting below issue while creating a function in Potsgres 11.2

 

 

nagios=# create or replace function diskf (filesystem text, warn int, err int) returns text as $BODY$

nagios$# use warnings;

nagios$# use strict;

nagios$# my $fs = $_[0];

nagios$# my $w = $_[1];

nagios$# my $e = $_[2];

nagios$# my $r = "WARNING";

nagios$# my $output = `df -kP $fs`;

nagios$# $output =~ /.*\s+(\d+)%.*/;

nagios$# $output = $1;

nagios$# if ($output > $w)

nagios$# { $r = "ERROR" if $output > $e;}

nagios$# else { $r = "OK";}

nagios$# return  "$r $output";

nagios$# $BODY$ language plperlu;

 

ERROR:  language "plperlu" does not exist

HINT:  Use CREATE EXTENSION to load the language into the database.

 

 

nagios=# SELECT * FROM pg_language;

lanname  | lanowner | lanispl | lanpltrusted | lanplcallfoid | laninline | lanvalidator | lanacl

----------+----------+---------+--------------+---------------+-----------+--------------+--------

internal |       10 | f       | f            |             0 |         0 |         2246 |

c        |       10 | f       | f            |             0 |         0 |         2247 |

sql      |       10 | f       | t            |             0 |         0 |         2248 |

plpgsql  |       10 | t       | t            |         13075 |     13076 |        13077 |

(4 rows)

 

To solve this issue , I am getting the below warnings if creating extensions.

 

nagios=# CREATE EXTENSION plperl;

ERROR:  could not open extension control file "/usr/local/share/postgresql/extension/plperl.control": No such file or directory

nagios=# CREATE LANGUAGE plperlu;

ERROR:  could not load library "/usr/local/lib/postgresql/plperl.so": Error loading shared library libperl.so.5.20: No such file or directory (needed by /usr/local/lib/postgresql/plperl.so)

nagios=# CREATE LANGUAGE plperlu;

ERROR:  could not load library "/usr/local/lib/postgresql/plperl.so": Error loading shared library libperl.so.5.20: No such file or directory (needed by /usr/local/lib/postgresql/plperl.so)

nagios=#

 

 

Regards,

Dault

Re: CREATE EXTENSION to load the language into the database

From
Adrian Klaver
Date:
On 5/3/19 8:56 AM, Daulat Ram wrote:
> Hello team,
> 
> We are getting below issue while creating a function in Potsgres 11.2
> 
> nagios=# create or replace function diskf (filesystem text, warn int, 
> err int) returns text as $BODY$
> 
> nagios$# use warnings;
> 
> nagios$# use strict;
> 
> nagios$# my $fs = $_[0];
> 
> nagios$# my $w = $_[1];
> 
> nagios$# my $e = $_[2];
> 
> nagios$# my $r = "WARNING";
> 
> nagios$# my $output = `df -kP $fs`;
> 
> nagios$# $output =~ /.*\s+(\d+)%.*/;
> 
> nagios$# $output = $1;
> 
> nagios$# if ($output > $w)
> 
> nagios$# { $r = "ERROR" if $output > $e;}
> 
> nagios$# else { $r = "OK";}
> 
> nagios$# return  "$r $output";
> 
> nagios$# $BODY$ language plperlu;
> 
> ERROR:  language "plperlu" does not exist
> 
> HINT:  Use CREATE EXTENSION to load the language into the database.
> 
> nagios=# SELECT * FROM pg_language;
> 
> lanname  | lanowner | lanispl | lanpltrusted | lanplcallfoid | laninline 
> | lanvalidator | lanacl
> 
> ----------+----------+---------+--------------+---------------+-----------+--------------+--------
> 
> internal |       10 | f       | f            |             0 |         0 
> |         2246 |
> 
> c        |       10 | f       | f            |             0 |         0 
> |         2247 |
> 
> sql      |       10 | f       | t            |             0 |         0 
> |         2248 |
> 
> plpgsql  |       10 | t       | t            |         13075 |     13076 
> |        13077 |
> 
> (4 rows)
> 
> To solve this issue , I am getting the below warnings if creating 
> extensions.
> 
> nagios=# CREATE EXTENSION plperl;
> 
> ERROR:  could not open extension control file 
> "/usr/local/share/postgresql/extension/plperl.control": No such file or 
> directory
> 
> nagios=# CREATE LANGUAGE plperlu;
> 
> ERROR:  could not load library "/usr/local/lib/postgresql/plperl.so": 
> Error loading shared library libperl.so.5.20: No such file or directory 
> (needed by /usr/local/lib/postgresql/plperl.so)
> 
> nagios=# CREATE LANGUAGE plperlu;
> 
> ERROR:  could not load library "/usr/local/lib/postgresql/plperl.so": 
> Error loading shared library libperl.so.5.20: No such file or directory 
> (needed by /usr/local/lib/postgresql/plperl.so)

The plperl(u) extension has not been added to the Postgres installation. 
You need to do that. To help you with that we need to know:

What OS(and version) are you using?

How did you install Postgres?

> 
> nagios=#
> 
> Regards,
> 
> Dault
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com



RE: CREATE EXTENSION to load the language into the database

From
Daulat Ram
Date:
Hi Adrian,

Please find the requested details.

What OS(and version) are you using?
Ans:
bash-4.4$ cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.9.2
PRETTY_NAME="Alpine Linux v3.9"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://bugs.alpinelinux.org/"
bash-4.4$


bash-4.4$ uname -a
Linux psql_primary_kbcn 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64 Linux
bash-4.4$


How did you install Postgres?

Ans:

We did installation via customized docker image provided by our dev ops team.

Regards,
Daulat


-----Original Message-----
From: Adrian Klaver <adrian.klaver@aklaver.com>
Sent: Friday, May 3, 2019 10:21 PM
To: Daulat Ram <Daulat.Ram@exponential.com>; pgsql-general@lists.postgresql.org
Subject: Re: CREATE EXTENSION to load the language into the database

On 5/3/19 8:56 AM, Daulat Ram wrote:
> Hello team,
>
> We are getting below issue while creating a function in Potsgres 11.2
>
> nagios=# create or replace function diskf (filesystem text, warn int,
> err int) returns text as $BODY$
>
> nagios$# use warnings;
>
> nagios$# use strict;
>
> nagios$# my $fs = $_[0];
>
> nagios$# my $w = $_[1];
>
> nagios$# my $e = $_[2];
>
> nagios$# my $r = "WARNING";
>
> nagios$# my $output = `df -kP $fs`;
>
> nagios$# $output =~ /.*\s+(\d+)%.*/;
>
> nagios$# $output = $1;
>
> nagios$# if ($output > $w)
>
> nagios$# { $r = "ERROR" if $output > $e;}
>
> nagios$# else { $r = "OK";}
>
> nagios$# return  "$r $output";
>
> nagios$# $BODY$ language plperlu;
>
> ERROR:  language "plperlu" does not exist
>
> HINT:  Use CREATE EXTENSION to load the language into the database.
>
> nagios=# SELECT * FROM pg_language;
>
> lanname  | lanowner | lanispl | lanpltrusted | lanplcallfoid |
> laninline
> | lanvalidator | lanacl
>
> ----------+----------+---------+--------------+---------------+-----------+--------------+--------
>
> internal |       10 | f       | f            |             0 |        
> 0
> |         2246 |
>
> c        |       10 | f       | f            |             0 |        
> 0
> |         2247 |
>
> sql      |       10 | f       | t            |             0 |        
> 0
> |         2248 |
>
> plpgsql  |       10 | t       | t            |         13075 |    
> 13076
> |        13077 |
>
> (4 rows)
>
> To solve this issue , I am getting the below warnings if creating
> extensions.
>
> nagios=# CREATE EXTENSION plperl;
>
> ERROR:  could not open extension control file
> "/usr/local/share/postgresql/extension/plperl.control": No such file
> or directory
>
> nagios=# CREATE LANGUAGE plperlu;
>
> ERROR:  could not load library "/usr/local/lib/postgresql/plperl.so":
> Error loading shared library libperl.so.5.20: No such file or
> directory (needed by /usr/local/lib/postgresql/plperl.so)
>
> nagios=# CREATE LANGUAGE plperlu;
>
> ERROR:  could not load library "/usr/local/lib/postgresql/plperl.so":
> Error loading shared library libperl.so.5.20: No such file or
> directory (needed by /usr/local/lib/postgresql/plperl.so)

The plperl(u) extension has not been added to the Postgres installation.
You need to do that. To help you with that we need to know:

What OS(and version) are you using?

How did you install Postgres?

>
> nagios=#
>
> Regards,
>
> Dault
>


--
Adrian Klaver
adrian.klaver@aklaver.com



Re: CREATE EXTENSION to load the language into the database

From
Adrian Klaver
Date:
On 5/3/19 10:24 AM, Daulat Ram wrote:
> Hi Adrian,
> 
> Please find the requested details.
> 
> What OS(and version) are you using?
> Ans:
> bash-4.4$ cat /etc/os-release
> NAME="Alpine Linux"
> ID=alpine
> VERSION_ID=3.9.2
> PRETTY_NAME="Alpine Linux v3.9"
> HOME_URL="https://alpinelinux.org/"
> BUG_REPORT_URL="https://bugs.alpinelinux.org/"
> bash-4.4$
> 
> 
> bash-4.4$ uname -a
> Linux psql_primary_kbcn 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64 Linux
> bash-4.4$
> 
> 
> How did you install Postgres?
> 
> Ans:
> 
> We did installation via customized docker image provided by our dev ops team.

Well in the image they need to make the plperl language available. If 
they are building from source then it needs to be compiled with:

https://www.postgresql.org/docs/11/install-procedure.html
--with-perl

     Build the PL/Perl server-side language.

If they are using packages then they will need to include the 
appropriate package.

> 
> Regards,
> Daulat
> 
> 
> -----Original Message-----
> From: Adrian Klaver <adrian.klaver@aklaver.com>
> Sent: Friday, May 3, 2019 10:21 PM
> To: Daulat Ram <Daulat.Ram@exponential.com>; pgsql-general@lists.postgresql.org
> Subject: Re: CREATE EXTENSION to load the language into the database
> 
> On 5/3/19 8:56 AM, Daulat Ram wrote:
>> Hello team,
>>
>> We are getting below issue while creating a function in Potsgres 11.2
>>
>> nagios=# create or replace function diskf (filesystem text, warn int,
>> err int) returns text as $BODY$
>>
>> nagios$# use warnings;
>>
>> nagios$# use strict;
>>
>> nagios$# my $fs = $_[0];
>>
>> nagios$# my $w = $_[1];
>>
>> nagios$# my $e = $_[2];
>>
>> nagios$# my $r = "WARNING";
>>
>> nagios$# my $output = `df -kP $fs`;
>>
>> nagios$# $output =~ /.*\s+(\d+)%.*/;
>>
>> nagios$# $output = $1;
>>
>> nagios$# if ($output > $w)
>>
>> nagios$# { $r = "ERROR" if $output > $e;}
>>
>> nagios$# else { $r = "OK";}
>>
>> nagios$# return  "$r $output";
>>
>> nagios$# $BODY$ language plperlu;
>>
>> ERROR:  language "plperlu" does not exist
>>
>> HINT:  Use CREATE EXTENSION to load the language into the database.
>>
>> nagios=# SELECT * FROM pg_language;
>>
>> lanname  | lanowner | lanispl | lanpltrusted | lanplcallfoid |
>> laninline
>> | lanvalidator | lanacl
>>
>> ----------+----------+---------+--------------+---------------+-----------+--------------+--------
>>
>> internal |       10 | f       | f            |             0 |
>> 0
>> |         2246 |
>>
>> c        |       10 | f       | f            |             0 |
>> 0
>> |         2247 |
>>
>> sql      |       10 | f       | t            |             0 |
>> 0
>> |         2248 |
>>
>> plpgsql  |       10 | t       | t            |         13075 |
>> 13076
>> |        13077 |
>>
>> (4 rows)
>>
>> To solve this issue , I am getting the below warnings if creating
>> extensions.
>>
>> nagios=# CREATE EXTENSION plperl;
>>
>> ERROR:  could not open extension control file
>> "/usr/local/share/postgresql/extension/plperl.control": No such file
>> or directory
>>
>> nagios=# CREATE LANGUAGE plperlu;
>>
>> ERROR:  could not load library "/usr/local/lib/postgresql/plperl.so":
>> Error loading shared library libperl.so.5.20: No such file or
>> directory (needed by /usr/local/lib/postgresql/plperl.so)
>>
>> nagios=# CREATE LANGUAGE plperlu;
>>
>> ERROR:  could not load library "/usr/local/lib/postgresql/plperl.so":
>> Error loading shared library libperl.so.5.20: No such file or
>> directory (needed by /usr/local/lib/postgresql/plperl.so)
> 
> The plperl(u) extension has not been added to the Postgres installation.
> You need to do that. To help you with that we need to know:
> 
> What OS(and version) are you using?
> 
> How did you install Postgres?
> 
>>
>> nagios=#
>>
>> Regards,
>>
>> Dault
>>
> 
> 
> --
> Adrian Klaver
> adrian.klaver@aklaver.com
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com