这个特性是用来允许那些通常 PostgreSQL 不知道的选项可以被附加模块添加(比如过程语言)。 这样,就允许附加的模块可以以一种标准的方式配置。
在 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 # 生成一个错误,未知的类别名