重新格式化(PL /)SQL代码的语义等价

时间:2012-12-20 17:05:56

标签: sql plsql code-formatting verification

背景

系统中的数百个数据库对象(视图,包,存储过程等)没有格式化,也没有源代码注释。我们想:

  1. 自动重新格式化代码(使用General SQL Parser)。
  2. 自动将标准注释标题复制到每个对象的源文件中。
  3. 问题

    我们无法在未经测试的情况下将这些彻底的变化推向生产。

    问题

    您如何验证重新格式化的源代码在功能上与未格式化的代码完全相同?

    谢谢!

3 个答案:

答案 0 :(得分:2)

易:

  1. 针对新的新数据库运行未格式化的代码
  2. 针对全新的数据库运行格式化代码
  3. 完全导出两者并比较两个文件
  4. 它们应该完全相同。

    它们应该完全相同的原因是postgres将SQL解析为其标准的规范形式,因此即使添加不必要的括号,也应该产生相同的代码内部版本。

答案 1 :(得分:0)

我认为只有那些需要修改的对象需要格式化,如果是这样,我只建议格式化你正在处理的对象,结果应该投入生产。我使用Oracle SQL Developer,我可以安全地使用程序单元并进行格式化。

答案 2 :(得分:0)

对于您的问题:要将格式化的源代码与未格式化的源代码进行比较,您必须对每个源代码进行标记并比较结果。这实际上打败了你的原始目标。 ; - )