17.14. 客户化的选项

这个特性是用来允许那些通常 PostgreSQL 不知道的选项可以被附加模块添加(比如过程语言)。 这样,就允许附加的模块可以以一种标准的方式配置。

custom_variable_classes (string)

这个变量以逗号分隔的列表的形式声明一个或者多个用于客户变量的类名称。 一个客户变量通常是一个 PostgreSQL 并不太知道的变量, 但是被一些附加的模块使用。这样的变量的名字必须由一个类别名,一个点,以及一个变量名组成。 custom_variable_classes 声明在一次安装里的所有类别名。 这个选项只能在服务器启动的时候或者在 postgresql.conf 配置文件里设置。

postgresql.conf 里设置客户变量的困难在于这个文件必须在附加模块装载之前读取, 因此客户化变量通常会被认为是未知而拒绝。在设置了 custom_variable_classes 之后, 服务器将接受每个声明的类别里的任意变量。这些变量将被当作占位符,并且在定义它们的模块装载之前没有任何用处。 在一个特定类别的模块装在后,它将为这个类别名增加合适的变量定义,根据它们的定义把那些占位符数值进行转换, 并且为该类别剩下的任何占位符发出警告(这些很有可能是拼写错的配置变量)。

下面是一个在使用客户化变量时,postgresql.conf 可能包含的东西的例子。

custom_variable_classes = 'plr,plperl'
plr.path = '/usr/lib/R'
standard_conforming_strings = true
plruby.use_strict = true        # 生成一个错误,未知的类别名