developer's diary

最近はc#のエントリが多いです

EC-CUBEの採番号に関するMySQLとPostgreSQLの違い。アーキテクチャの違いを吸収する際にバグを作りにくくする手法。

ソース元:EC-CUBE 開発コミュニティ - フォーラム

MySQLとPostgreSQL の採番処理の違い。

  • MySQL は auto_incrementを利用したテーブル自動採番
  • PostgreSQL は serial型を利用したシーケンスによる採番

対応

2.5系からは、チェンジセット 18788 – EC-CUBE Tracで、

シーケンス値の出力に SC_Query::nextVal() を使用するよう修正

となっているそうです。

細かな分岐がなくなる過程

それにともなって、チェンジセット 18789 – EC-CUBE Tracで、MySQLとPostgreSQL
の処理の違いをカバーするためのif文等による処理の分岐を取り除き、バグが入りにくいソースに変わっていている。

まとめ

データベースのアーキテクチャ(構造)の違いを細かな分岐で吸収せずに、処理順等のアーキテクト(建築家)な視点から見直す。