Ticket #1416 (closed バグ指摘: 修正済)

Opened 9 years ago

Last modified 9 years ago

SC_Helper_DB#sfCountCategory を is_force_all_count = true で実行時にdtb_category_countに重複して登録されてしまう

Reported by: shutta Owned by: shutta
Priority: Milestone: EC-CUBE2.11.2
Component: その他 Version: 2.11.1
Keywords: Cc:
修正済み: yes

Description

(デフォルトでは利用されていませんが、)全カテゴリの集計を強制実行する場合(第2引数の$is_force_all_countをtrue)に、実行する都度dtb_category_countにinsertされてしまう。

Change History

comment:1 Changed 9 years ago by shutta

  • Owner changed from somebody to shutta
  • Status changed from new to assigned

comment:2 Changed 9 years ago by shutta

r21039 にて修正を試みました。

is_force_all_count=trueの場合は、dtb_category_countへの反映時に一度UPDATEを実行し、更新件数がなければINSERT処理に流れるようにしています。

ただ、DB上綺麗にするのであれば、is_force_all_count=trueの場合は、DELETE-INSERTの方が良いかもしれません。
ここらへんは、設計・仕様に拠ってくると思いますので、とりあえず最低限の影響で済むように修正しています。
データ数が多くなると、速度面で劣化があるので、全更新モードは分離して別実装にした方が良いような気もしますし。

comment:3 Changed 9 years ago by AMUAMU

is_force_all_countオプションは標準では使っていませんが、実運用上のカスタマイズでは使う場面に遭遇することがあるため、個人的趣味で残したのですが不具合があったとは(汗

元々2.4時代は常にis_force_all_count=true相当の全件DELETE-INSERTだったのですが、パフォーマンス面での問題を解決する為,現在の実装をした経緯があります。

使う場面が標準機能の中にあれば別実装が望ましいとは思いますが、現状それに相当するところがないですね

comment:4 Changed 9 years ago by kajiwara

  • Status changed from assigned to closed
  • 修正済み set
  • Resolution set to 修正済

shuttaさん

本件、ご対応ありがとうございました。
色々ご検討もいただきありがとうございます。

一旦、今回実装いただいた方式で問題ないと思いますので、こちらでクローズといたします。

Note: See TracTickets for help on using tickets.