4

バックグラウンド

システム内の何百ものデータベース オブジェクト (ビュー、パッケージ、ストアド プロシージャなど) には、書式設定もソース コード コメントもありません。したいこと:

  1. コードを自動的に再フォーマットします ( General SQL Parserを使用)。
  2. 標準コメント ヘッダーを各オブジェクトのソース ファイルに自動的にコピーします。

問題

このような抜本的な変更をテストなしで本番環境にプッシュすることはできません。

質問

再フォーマットされたソース コードがフォーマットされていないコードと機能的に同一であることをどのように確認しますか?

ありがとうございました!

4

3 に答える 3

2

簡単:

  1. 新しいデータベースに対してフォーマットされていないコードを実行する
  2. 新しいデータベースに対してフォーマットされたコードを実行する
  3. 両方を完全にエクスポートして、2 つのファイルを比較します。

それらは同一である必要があります。

それらが同一であるべき理由は、postgres が SQL を標準の標準形式に解析するためです。たとえば、不要な括弧を追加しても、コードの内部バージョンは同じになるはずです。

于 2012-12-24T09:15:37.233 に答える
0

あなたの質問に対して: フォーマットされたソース コードとフォーマットされていないコードを比較するには、それぞれをトークン化し、結果を比較する必要があります。実際には、元の目的を打ち負かします。;-)

于 2012-12-24T09:07:22.483 に答える
0

変更が必要なオブジェクトにのみフォーマットが必要であると仮定します。そうであれば、最終的に結果を本番環境に置く必要がある、作業中のオブジェクトのみをフォーマットすることをお勧めします。私はOracle SQL Developerを使用しており、プログラム単位で作業してフォーマットを行うのに安全です。

于 2012-12-20T17:55:20.783 に答える