暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何向 PostgreSQL 社区提交功能 patch

原创 内核开发者 2025-02-26
132

PostgreSQL 是一款卓越的开源数据库。积极参与社区讨论并提供功能或问题的解决方案,不仅能丰富 PostgreSQL 的能力,还能提升个人的技术水平和视野。

在提交patch之前,首先需要了解以下内容:

  • 如何下载和编译源码
  • 如何运行测试
  • 如何构建文档
  • 如何格式化代码
  • 如何构建布丁
  • 如何提交布丁

下载和编译源码

git clone -b master https://git.postgresql.org/git/postgresql.git
cd postgresql/
./configure --prefix=/home/postgres/pgdb --enable-tap-tests --enable-cassert --enable-debug
make world
make check-world

注意:在更改头文件后,需要运行 make distclean。

如果是新增功能的话,通常使用master分支。如果是提交错误修复,则需要找到对应的分支。

PostgreSQL现在使用meson和makefile两套编译方法。如果新增文件后,需要在makefile或者meson.build加入新文件。

编写和运行测试脚本

PostgreSQL主要的测试方法有两种:

  • SQL 结果对比测试:执行 SQL 后,对比预期结果和实际结果(可参考 )。
  • Perl 脚本测试:使用 Perl 脚本测试流程是否符合预期(需启用 ,可参考 )。

建议:在提交前,构建较为丰富的测试脚本,这不仅可以为社区提供测试方案,还能保证代码的健壮性。可以考虑启用 --enable-coverage 来查看测试脚本对代码的覆盖率,确保测试的全面性。此外,可以启用 --enable-injection-points,通过故障注入来覆盖通常无法到达的系统调用部分。

构建文档

在 doc/src/sgml/ 的相应位置添加功能的使用文档,包括功能介绍、使用方法和效果等。

格式化代码

通过运行 make stylecheck 对代码进行格式化。需要注意的细节包括:

  • 使用 TAB 来增加缩进;
  • 将新增的类型加入到 typelist 中;
  • 其他;

构建布丁

通过以下命令生成补丁文件,并作为附件提供给社区:

git format-patch -1 -v1 <commit_id>
# 1 = patch depth,表示要包含的最顶端补丁数量。
# v1 = patch version,每次向同一主题发送更新的补丁时,需要更新版本号。

注意:社区面向所有平台,如果功能存在平台限制,建议使用 #ifdef 或以插件形式控制代码在特定平台上的生效。

提交布丁

建议参与社区建设的同学首先要在PostgreSQL社区官网建立账号,并订阅邮件列表,比较重要的邮件里表有pgsql-bugspgsql-hackers具体可参见https://www.postgresql.org/list/

一般新功能都会向pgsql-hackers发送邮件。

提交补丁后,打开https://commitfest.postgresql.org/,点击Create a new commitfest entry构建你的提交信息,并且更改状态,例如Needs review。当建立好提交信息后,可以在http://cfbot.cputube.org/查看你的patch是否正常通过了测试。

提高社区接受补丁的几率

  • 从简单的事情开始,比如多在社区协助测试,review代码;
  • 补丁越小,被接受的可能性越大;
  • 仔细倾听对你补丁的反馈;
  • 始终保持礼貌(包括:永远不要讽刺、挑衅等……);
  • 并非所有补丁都会被接受,不要往心里去;
  • 不要过多的催促,大多数人是在业余时间参与开源工作;
  • 对于我们这些英语是第二语言的人来说,Grammarly 是一个很大的帮助或者通过AI来优化你的文本;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论