Fehler #483
Upgrade-Skript: delete_cvars_on_trans_deletion_add_shipto löscht alle custom_variables
Status:
Gelöst
Priorität:
Sofort
Zugewiesen an:
-
Zielversion:
-
Beginn:
09.08.2021
Abgabedatum:
% erledigt:
0%
Geschätzter Aufwand:
Beschreibung
Vorher:
# select count(*) from custom_variables; count -------- 669451
Eigentlich sollten nur die weg:
- (SELECT cv.id FROM custom_variables cv LEFT JOIN custom_variable_configs cvc ON (cv.config_id = cvc.id)
- WHERE module LIKE 'ShipTo'
- AND NOT EXISTS (SELECT shipto_id FROM shipto WHERE shipto_id = cv.trans_id));
(688 rows)
In Kombination mit dem DELETE werden aber alle Einträge gelöscht:
- DELETE FROM custom_variables WHERE EXISTS
- (SELECT cv.id FROM custom_variables cv LEFT JOIN custom_variable_configs cvc ON (cv.config_id = cvc.id)
- WHERE module LIKE 'ShipTo'
- AND NOT EXISTS (SELECT shipto_id FROM shipto WHERE shipto_id = cv.trans_id));
DELETE 669451
WHERE EXISTS is nur ein Boolean-Wert, d.h. sollte irgendein verwaister ShipTo Eintrag vorhanden sein, entferne einfache alle BDVs
S.a.:
https://www.postgresql.org/docs/8.1/functions-subquery.html
Historie
Von Jan Büren vor mehr als 3 Jahren aktualisiert
Damit passt es:
select count (*) from custom_variables where id in (SELECT cv.id FROM custom_variables cv LEFT JOIN custom_variable_configs cvc ON (cv.config_id = cvc.id) WHERE module LIKE 'ShipTo' AND NOT EXISTS (SELECT shipto_id FROM shipto WHERE shipto_id = cv.trans_id));
Von Jan Büren vor mehr als 3 Jahren aktualisiert
- Priorität wurde von Normal zu Sofort geändert
Das ist ein kritischer und etwas subtiler Bug und betrifft das aktuelle Release.
Vorschlag: 3.5.8 zeitnah veröffentlichen
Von Jan Büren vor mehr als 3 Jahren aktualisiert
Mit Commit #dc59476f, wird es dann besser gemacht.
Vorher:
# select count(*) from custom_variables; count -------- 671796 (1 row)
Nachher:
# select count(*) from custom_variables; count -------- 671108 (1 row)
Von Jan Büren vor mehr als 3 Jahren aktualisiert
- Status wurde von Neu zu Gelöst geändert
In Version 3.5.8 gelöst