PL 特性矩阵

来自 PostgreSQL Wiki
跳转到导航跳转到搜索

此页面的目标是记录过程语言的主要功能,并总结每个实现的语言提供的功能。

功能列表

  • 接受命名参数
  • 返回数组
  • 返回表
  • 具有验证器函数
  • 支持触发器
  • 可变参数
    • 在 TRUNCATE 上
    • 对于每个语句
  • 受信任模式(安全)
    • 需要受信任语言的测试人员
    • 我们可能不会接受核心中的其他语言,但我们可能会达到停止允许非核心受信任语言的程度
    • PL/Ruby - 可以打开/关闭的东西?
  • 支持 DO 块(也称为内联处理程序)
  • 复合类型支持
  • 原生类型
    • 枚举 - 在支持或不支持枚举的语言之间传递
    • 类型映射通常是如何工作的?
  • SPI 接口文档
    • 游标支持
  • 子事务
  • 支持 OUT 参数,如何将其绑定到原生语言
  • 共享数据 / 全局哈希以允许函数共享数据 :) (在相同的 PL 中)
  • 引用函数(字符串转义)
  • 自动加载支持(TCL、Perl 有它)
    • 标准化每个 PL 在哪里执行此操作(一个表?)

愿望清单 / 架构讨论

  • 让函数具有自省功能
  • 能够处理内部类型:文本搜索解析器、窗口函数、PL 中的聚合函数 :),-- 如何公开?扩展后端中的 API 以允许这样做
  • 外部数据包装器
  • 流式 SRF(元组存储讨论)
  • 如何合并 PL/PSM 而无需复制 70% 的 PL/pgsql 代码
  • 顶级内存上下文与在其他地方缓存 XYZ
    • JIT 输出存储在内存中
    • 待办事项:用于 DROP FUNCTION 的钩子以清理缓存
    • PL 代码中的样板代码? -->
      • PL 处理程序:传递指向一块内存的指针,以便您可以存储任何您想要的内容
      • PL 处理程序:还跟踪生命周期
      • 哈希表支持,用于存储函数的编译版本
      • Tim 写了一个 NULL 语言:验证器、执行器的外壳

待办事项

  • 发布 PL/NULL 代码 - Tim
  • 列出所有样板代码 :) - Tim,Selena 将向 -hackers 发送电子邮件
  • 在下一个 pgcon 中安排半天会议 - Josh Berkus (?)
  • 在几个月后安排一次 Skype 会话以检查进度 - Selena(Tim、Alvaro 同意参加)
  • 进一步讨论 DDL 触发器 - Jan
  • 进一步讨论权限系统 - Steve
  • 进一步讨论针对时区等内容的每个语句配置参数 - Jan

PL 接口改进

  • 无法用除 C 之外的语言编写输入/输出函数
    • PL 处理程序需要知道它现在是一个 i/o 函数,并且我刚刚传递了一个 DATUM(通常获取指向这些数据的指针)
    • 大多数 PL 将所有参数包装在文本中(但 Python 不会针对 bytea)
    • Peter -- SQL CREATE *something* 标准 - PL 与 SQL 之间的类型转换(?);例如 PL/Python 中的 hstores - 为 [类型名称] 创建转换
    • Tim 用函数转换来做到这一点
    • 2011 年 12 月 15 日的电子邮件 pl/python 中的 hstores
    • http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.db2.luw.sql.ref.doc/doc/r0003292.html
    • 以其原生格式传递参数,而无需通过 i/o 函数
    • 分析:大量时间花在 pg i/o 函数上

矩阵

参见 PL_Matrix