python 函数是如何编译和存储在 PostgreSQL 中的?
How are python functions compiled and stored in PostgreSQL?
场景:
- 我在磁盘某处有一个 python 函数。
- 我在 pg 服务器中编译了一个 plpythonu 函数,它引用了磁盘上步骤 1 中的 python 函数。
- 我更改了 python 函数中的一些内容(从第 1 步开始)。
- 如果我编译 plpythonu 函数(从第 2 步开始),从 pg 服务器调用时,第 3 步中所做的更改不会生效。
此类函数的示例可以在我的另一个问题中看到:
Python function hangs when called from within sql function
我的假设(这对我来说是什么):
- PG 服务器在第一次编译时将 python 函数(步骤 1)代码和 plpythonu 代码存储在某处,其中 ?
- 在重新编译(第 4 步)plpythonu 函数时,不会再次检查链接函数(第 1 步)。可以以某种方式改变或影响此行为吗?
如果这些假设有误,还请指正并说明。或者甚至指出可以找到它的文档,我还没有成功找到它。
PG server stores both the python function (step 1) code and plpythonu code somewhere at first compilation, where ?
pl/python 函数自身的 Python 代码(但不是任何模块、库等)存储在数据库的 pg_proc
table 中。
编译的 Python 字节码在给定后端首次 运行 时存储在内存中的系统缓存中。如果磁盘上的文件发生变化,它不会在之后更新。新连接将看到新代码,旧连接将看到现有代码。
场景:
- 我在磁盘某处有一个 python 函数。
- 我在 pg 服务器中编译了一个 plpythonu 函数,它引用了磁盘上步骤 1 中的 python 函数。
- 我更改了 python 函数中的一些内容(从第 1 步开始)。
- 如果我编译 plpythonu 函数(从第 2 步开始),从 pg 服务器调用时,第 3 步中所做的更改不会生效。
此类函数的示例可以在我的另一个问题中看到: Python function hangs when called from within sql function
我的假设(这对我来说是什么):
- PG 服务器在第一次编译时将 python 函数(步骤 1)代码和 plpythonu 代码存储在某处,其中 ?
- 在重新编译(第 4 步)plpythonu 函数时,不会再次检查链接函数(第 1 步)。可以以某种方式改变或影响此行为吗?
如果这些假设有误,还请指正并说明。或者甚至指出可以找到它的文档,我还没有成功找到它。
PG server stores both the python function (step 1) code and plpythonu code somewhere at first compilation, where ?
pl/python 函数自身的 Python 代码(但不是任何模块、库等)存储在数据库的 pg_proc
table 中。
编译的 Python 字节码在给定后端首次 运行 时存储在内存中的系统缓存中。如果磁盘上的文件发生变化,它不会在之后更新。新连接将看到新代码,旧连接将看到现有代码。