如何在PostgreSQL中编译和存储python函数?

时间:2015-12-01 16:59:58

标签: postgresql plpython

情景:

  1. 我在某处的磁盘上有一个python函数。
  2. 我在pg服务器中编译了一个plpythonu函数,该函数引用了磁盘上第1步的python函数。
  3. 我在python函数中更改了某些内容(从步骤1开始)。
  4. 如果我编译plpythonu函数(从步骤2开始),则从pg服务器调用时,步骤3中的更改完成不会生效。
  5. 这些功能的例子可以在我的另一个问题中看到: Python function hangs when called from within sql function

    我的假设(这对我来说似乎如此):

    • PG服务器在第一次编译时将python函数(第1步)代码和plpythonu代码存储在哪里?
    • 重新编译(步骤4)plpythonu函数时,不再检查链接函数(步骤1)。这种行为可以以某种方式改变或影响吗?

    如果这些假设有误,请同意我并解释。或者甚至指向我可以找到的文档,我还没有成功找到它。

1 个答案:

答案 0 :(得分:0)

  

PG服务器在第一次编译时将python函数(第1步)代码和plpythonu代码存储在哪里?

pl / python函数的Python代码(不是任何模块,库等)存储在数据库的pg_proc表中。

当编译的Python字节码首先由给定的后端运行时,它会存储在内存中的syscache中。如果磁盘上的文件发生更改,则不会更新。新连接将看到新代码,旧连接将是现有代码。