这个特性用来允许那些由附加模块添加(比如过程语言)的选项,通常 PostgreSQL 并不知道它们。这样,附加的模块就可以用标准的方式配置。
在 postgresql.conf 里设置自定义变量的困难在于这个文件必须在附加模块被装载之前读取,因此自定义变量通常会被认为是未知而拒绝。在设置了 custom_variable_classes 之后,服务器将接受每个声明的类别里的任意变量。这些变量将被当作占位符,并且在定义它们的模块装载之前没有任何用处。在一个特定类别的模块加载后,它将为这个类别名增加合适的变量定义,根据它们的定义把那些占位符数值进行转换,并且为该类别剩下的任何占位符发出警告(这些很有可能是拼写错的配置变量)。
下面是一个在使用自定义变量时 postgresql.conf 可能包含的东西的例子。
custom_variable_classes = 'plr,plperl' plr.path = '/usr/lib/R' plperl.use_strict = true plruby.use_strict = true # 生成一个错误:未知的类名(unknown class name)