plpython-fenced模式

    在启动数据库之前配置GUC参数unix_socket_directory,指定unix_socket进程间通讯的文件地址。用户需要提前在user-set-dir-path路径下创建文件夹,并将该文件夹权限修改为可读可写可执行。

    配置完成,启动数据库。

    将plpython加入数据库编译,并设置好GUC参数unix_socket_directory后,在启动数据库的过程中,自动创建fenced-Master进程。在数据库不进行python编译的情况下,fenced模式需要手动拉起master进程,在GUC参数设置完成后,输入创建master进程命令。

    启动fenced-Master进程,命令为:

    • 创建extension

      • 当编译的plpython为Python2时:

      • 当编译的plpython为Python3时:

        1. openGauss=# create extension plpython3u;
        2. CREATE EXTENSION

        下面示例是以Python2为例。

    • 查看UDF信息

      1. openGauss=# select * from pg_proc where proname='pymax';
      2. -[ RECORD 1 ]----+--------------
      3. proname | pymax
      4. pronamespace | 2200
      5. proowner | 10
      6. prolang | 16388
      7. procost | 100
      8. prorows | 0
      9. provariadic | 0
      10. protransform | -
      11. proisagg | f
      12. prosecdef | f
      13. proleakproof | f
      14. proretset | f
      15. provolatile | v
      16. pronargs | 2
      17. pronargdefaults | 0
      18. prorettype | 23
      19. proargtypes | 23 23
      20. proallargtypes |
      21. proargmodes |
      22. proargnames | {a,b}
      23. proargdefaults |
      24. prosrc |
      25. | import numpy
      26. | if a > b:
      27. | return a;
      28. | else:
      29. | return b;
      30. proconfig |
      31. proacl |
      32. prodefaultargpos |
      33. fencedmode | t
      34. proshippable | f
      35. propackage | f
      36. prokind | f
      37. proargsrc |
    • 运行UDF

      • 创建一个数据表:

      • 运行UDF:

        1. openGauss=# select pymax(a,b) from temp;
        2. pymax
        3. -------
        4. 2
        5. 3
        6. 4
        7. 5
        8. (5 rows)