Postgresql 中文操作指南

42.1. Installing Procedural Languages #

过程语言必须“安装”到要使用它的每个数据库中。但是 template1 数据库中安装的过程语言在所有后续创建的数据库中都会自动可用,因为 template1 中各自的条目将被 CREATE DATABASE 复制。因此,数据库管理员可以决定哪些语言可在哪些数据库中使用,并且可以在需要时使某些语言默认可用。

对于标准发行版中提供的语言,只需要执行 CREATE EXTENSION language_name 将语言安装到当前数据库中。仅建议对未打包为扩展的语言使用下面描述的手动程序进行安装。

Manual Procedural Language Installation

数据库中的过程语言通过五步来安装,该过程必须由数据库超级用户执行。在大多数情况下,必需的 SQL 命令应打包为“扩展”的安装脚本,以便 CREATE EXTENSION 可以用来执行它们。

Example 42.1显示了手动安装过程如何与 PL/Perl 语言一起使用。

Example 42.1. Manual Installation of PL/Perl

以下命令告诉数据库服务器在何处找到 PL/Perl 语言的调用处理程序函数的共享对象:

CREATE FUNCTION plperl_call_handler() RETURNS language_handler AS
    '$libdir/plperl' LANGUAGE C;

PL/Perl 具有一个内联处理程序功能和一个验证程序,因此我们也声明了这些内容:

CREATE FUNCTION plperl_inline_handler(internal) RETURNS void AS
    '$libdir/plperl' LANGUAGE C STRICT;

CREATE FUNCTION plperl_validator(oid) RETURNS void AS
    '$libdir/plperl' LANGUAGE C STRICT;

该命令:

CREATE TRUSTED LANGUAGE plperl
    HANDLER plperl_call_handler
    INLINE plperl_inline_handler
    VALIDATOR plperl_validator;

然后定义之前声明的函数应对将语言属性设为 plperl 的函数和过程进行调用。

在默认的 PostgreSQL 安装中,PL/pgSQL 语言的处理程序被构建并安装到“library”目录中;此外,PL/pgSQL 语言本身也被安装在所有数据库中。如果配置了 Tcl 支持,PL/Tcl 和 PL/TclU 的处理程序将被构建并安装在 library 目录中,但语言本身在任何数据库中默认情况下并不会安装。同样,如果配置了 Perl 支持,PL/Perl 和 PL/PerlU 的处理程序将被构建并安装,并且如果配置了 Python 支持,PL/PythonU 的处理程序也将被安装,但默认情况下不会安装这些语言。