PostgreSQL 的 plperlu 解释器的@INC和/或缓存库:针对不同的数据库分开?



我正在开发的一些库有不同的版本,并希望从我编写的各种 plperl 函数中,基于 current_database() 加载某个版本。

(IIRC 最好使用 use 而不是require,我认为因为它可能会缓存库?

但是,我

担心同一台服务器上的不同数据库会出现问题,无论我正在考虑这样做:

1)use lib然后use - 如果多个路径卡在@INC上,则可能不是正确的路径

2) require --即使这意味着当前脚本中始终使用正确的脚本,是否意味着每次都会重新加载库? 无论哪种方式,如果库在使用后保持加载,来自不同版本的命名空间污染是否可能导致错误? (例如,如果我有一个基于是否定义变量的分支,并且在一个版本中它是默认的,而在另一个版本中它不是 - 所有版本现在都表现得好像是,除非我明确取消定义它而不仅仅是不定义它?

如果未通过 shared_preload_libraries 加载 plperl,则每个数据库会话都将在首次使用时重新初始化自己的解释器,因此一个会话包含的库不可能干扰另一个会话。

参见手册中的PL/Perl Under the Hood了解更多信息。

相关内容

  • 没有找到相关文章

最新更新