0

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

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

但是,我担心同一台服务器上的不同数据库会出现问题,无论哪种方式我都在考虑这样做:

1)use lib然后use-- 如果不止一条路径卡在@INC 上,它可能不是正确的被使用的路径

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

4

1 回答 1

1

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

有关更多信息,请参阅手册中的PL/Perl Under the Hood

于 2013-01-22T12:19:54.100 回答