假设我们有一个名为 xyz 的假设扩展,版本为 1.0。它有xyz--1.0.sql
和xyz.c
文件。我在文件中声明了名为 fun() 的函数xyz--1.0.sql
及其在xyz.c
文件中的定义。
现在我想在下一次升级中删除这个函数,xyz--1.0--1.1
所以我将DROP FUNCTION fun();
在其中使用它并从文件中删除定义xyz.c
。
在这里我的疑问是不会xyz--1.0
抱怨缺少 fun() 的定义,如果是,我该如何清理xyz.c
文件中的函数定义?
您必须将该函数
xyz.c
永远保留在文件中,否则选择不更新扩展的人将会遇到问题。你可以粗鲁地发布没有该功能的版本 2
xyz--1.0.sql
(这样你就不能再安装版本 1.0,只能从它升级),但你最好向用户明确他们需要否则他们将面临丑陋的错误。