💡 原文英文,约2200词,阅读约需8分钟。
📝

内容提要

本教程介绍如何创建PostgreSQL扩展ban_sus_query,以检查DML查询中的谓词。首先设置PostgreSQL和VS Code开发环境,然后解析查询计划,检查DELETE/UPDATE操作是否包含谓词,若无则抛出错误。最后,通过示例查询进行功能验证。

🎯

关键要点

  • 本教程介绍如何创建PostgreSQL扩展ban_sus_query,以检查DML查询中的谓词。
  • 设置开发环境包括PostgreSQL和VS Code。
  • PostgreSQL的构建依赖于源代码编译生成的文件。
  • VS Code需要配置必要的扩展和任务,以便于PostgreSQL开发。
  • 使用PGHH: Bootstrap extension命令创建初始文件。
  • 查询执行管道分为解析、计划和执行三个阶段,逻辑将添加到计划阶段。
  • 需要检查DELETE/UPDATE操作的ModifyTable节点是否包含谓词。
  • 使用递归函数遍历查询树,查找ModifyTable并检查其子节点的谓词列表。
  • 实现is_sus_query函数以检查ModifyTable节点的谓词。
  • 实现contains_predicates函数以检查给定计划中是否存在谓词。
  • 测试示例查询以验证扩展功能是否正常。
  • 扩展可以处理更复杂的查询情况。
  • 未来可以改进扩展以处理更多边界情况。
  • 扩展提高了开发和调试的效率,提供了更方便的变量表示和类型检查。
➡️

继续阅读