awaawaさん、こんにちは
SchemaSyncCheckの処理でAdditionalSchemaが紛れちゃってる
のかもですね。SchemaSyncCheckのときはメインスキーマの
オブジェクトだけを対象にするようにしてみます。
(ちょっとまだソース見切れてないので、これからだけど)
> あと、schemaSyncCheckでストアドプロシージャの比較(差異の有無)が出来るようにしていただけないでしょうか。
おお、これはいいね。ありがとう。
ただ、プロシージャのメタ情報の持ち方が悩ましいところですね。
SchemaXMLにプロシージャのメタ情報も持たせられるようにしないとかな...
もしくは、schemaSyncCheckのDocタスクのときだけ、その場でメタ情報を
抽出してメモリ内で保持してって感じかな。
少なくとも、プロシージャの追加、削除、引数の形だけでも出せればと。
8月どんだけ頑張れるか次第というところで。
2012/7/27 awaawa <p1us3i...@gmail.com>:
> --
> このメールは Google グループのグループ「DBFluteユーザの集い」の登録者に送られています。
> このグループに投稿するには、dbf...@googlegroups.com にメールを送信してください。
> このグループから退会するには、dbflute+u...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/dbflute?hl=ja からこのグループにアクセスしてください。
>
awaawaさん、dbflute-0.9.9.7B-RC1で試してみてくれる?
(すぐに試せるかな?土日中希望)
ささっと直しただけで、ほんとにこれでいいのかちょと不安。
SchemaSyncCheckの処理では完全にAdditionalSchemaを
除外するようにしました。
2012/7/27 kubo <dbf...@gmail.com>:
> 対応ありがとうございます。確認しました。同じエラーになりました。
ごめん、もういっかい。ふつうにまちがえた。
RC1を上書きした。
awaawaさん、確認ありがとう!
AdditionalSchemaばりばりの環境じゃないとわからないバグ
だったので助かりました。
> うまく動作したところで、3点要望があります。もし可能であれば、検討いただけますか。
うむ、わかる!という感じで、AlterCheckも似たような話があります。
もっと早く、manage.shを導入していればそうなっていたかもだけど、
その頃はバッチファイルを増やしたくなかったので、
何かのタスクのオプション的な要素になっちゃったんだよね。
本来なら、LoadDataReverseもSchemaSyncCheckもAlterCheckもそれぞれ
別のタスクにして、manage.shで独立して叩ければって感じですね。
申し訳ないけど、ちょっと全体設計に関わる部分なので、
おいそれとすぐにできる問題ではないので、時間はかかると思います。
ただ、要望としては、「やっぱそうだよね」ってのがわかったので、
今後の参考にしたいと。
2012/7/30 takeshi awane <p1us3i...@gmail.com>:
まず、Docタスクで自動生成されるSchemaHTMLですが、
中に作成日時を持っていますが、これを廃止しました。
Doc叩くたびに日時だけ更新されてコミット対象になってしまうのが、
同じ構造であればDocを幾ら叩いても何も変わらないようにと。
(いつもRevertするのがめんどう)
以前は、作成日時があったら便利かなと思っていたのですが、
いまやHistoryHTMLもあるし、SVN管理でだいたいわかるしと、
ほとんど役に立った試しがないので判断しました。
(これで気軽にDocを叩いても大丈夫なようになりました)
そして、DocタスクのLoadDataReverseとSchemaSyncCheck、
ReplaceSchemaタスクのAlterCheckにSavePrevious、
これらをManageタスクから単独で実行できるようにしました。
sh manage.sh load-data-reverse
sh manage.sh schema-sync-check
sh manage.sh alter-check
sh manage.sh save-previous
内部的には色々と挫折の繰り返しでしたが、
DocタスクやReplaceSchemaタスクであることには変わりなく、
Manageから叩いた場合に、その他の処理が実行されないように
という感じに実装しました。プロパティ設定は変わってないですが、
Manageでよく使うタスクがある場合は、手動作成バッチを作ることが
想定されるので、その中でdfpropの切り替えをやってもらえればと。
(xxxMap+.dfpropであれば、差分でオーバーライドできるので)
また、ManageのAlterCheckですが、
alter直下に置かないでもAlterCheckできるようにしました。
具体的には、
「/alter/draft/alter-schema.sql」
というようにdraft配下に置いた状態だと、
ReplaceSchema --> いつものReplaceSchema(alter直下に何もないので)
Manage to AlterCheck --> draft配下のファイルalter直下に移動して実行
つまりは、AlterCheckをやっている最中でも、ReplaceSchemaは単独で
動作できるようになりました。いままでは、AlterCheckやってる最中は、
ReplaceSchemaがAlterCheckになってしまうので、alter配下からDDLを
どかさないといけませんでした。
(とはいっても、そんな長くAlterCheckをやり続けることもめったにないけど)
もう、24時間以内にはリリース予定の 0.9.9.7B に含まれます。
SNAPSHOTとして既にダウンロードもできます。
あと、Docタスク周りの話で、SchemaHTMLの区分値の欄に、
subItemMapとgroupingMapの情報を表示するようにしました。
プロシージャの差分は、内部的には一番インパクトがあるので、
9月の大舞台のスコープに入るかどうかこれから判断します。
(SchemaXMLにプロシージャの情報を格納してあげないと...)
2012/7/31 awaawa <p1us3i...@gmail.com>:
まとめてくれてありがとう!
これいいね。ドキュメントに載せたいくらいだ。
> ×制約名の変更
> ×ストアドプロシージャ(ファンクション、パッケージ)
> ×シーケンス(対象?)
> ×トリガー
> ×DBリンク
> ×マテビュー
> ×シノニム(対象?)
シノニムは、間接的な感じですかね。
テーブルに対するシノニムで自動生成対象であれば、
テーブルとして差分に出てきます。まあでも x は x。
マテビューも、VIEWが自動生成対象なので、
項目が変われば差分になります。ただ、中のSQLの
条件が変わったとかはわからないですね。
この中で言えば、
「シーケンス」と「ストアドプロシージャ」
はやりたいですねぇ。
> ソースコードをそのまま保持するのは厳しそうなので、
> 割り切りで、ソース行数、ソースサイズ、ソースコードのハッシュ値合計をSchemaXMLで保持して、
> 比較するのはどうでしょうか。(コード修正した場合に偶然一致する可能性はほぼないかと。)
> ※mysqlとPostgreSQLはinformation_schema.routinesで同じように取れるかと。
うおうおうおぅ、ありがとう。
参考にさせて頂くね。
とりあえずプロシージャ名と引数の形が最低ラインかなという
ところですが、単に「なんか変わった」っていうのだけでも
検知できればってところでこれが使えますね。
2012/8/1 awaawa <p1us3i...@gmail.com>: