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