basercms
basercms copied to clipboard
[baserCMS4系]sqlite利用時、ゴミ箱にコンテンツがひとつでも存在するときにコンテンツを追加・削除すると、ツリー構造に不整合が発生する
概要
sqliteを利用しているときに、ゴミ箱にひとつでもコンテンツが存在した状態でコンテンツを追加すると、コンテンツツリー構造に重複番号が追加され不整合が発生する。
削除した場合も不整合が発生し、lft, rghtと両方が重複し、かつ欠番が発生する。
複数個まとめて(フォルダ+下位コンテンツ)ゴミ箱に入れる → 一発で壊れる 情報を得たので追記。
baserCMS version : 4.8.0-dev と4.5.4。
備考
- mysql環境では発生しない
- php 7.4 環境
5系でも同様に発生するか確認が必要そうですね
4系のContentモデルから SoftDeleteビヘイビア外すと物理削除にはなるけどツリー(lft, rght)は壊れないようでした。 おそらくSQLiteのときのSoftDeleteの挙動が問題のようです。 SoftDeleteありで削除するときの挙動をMySQLと比較して見ていると、先に削除扱いにしちゃうのかlft rghtの値が更新されない感じの挙動な気がします。(MySQLのときはSoftDeleteしたコンテンツのlft, rghtも更新される)