Projekt

Allgemein

Profil

Fehler #483

Upgrade-Skript: delete_cvars_on_trans_deletion_add_shipto löscht alle custom_variables

Von Jan Büren vor mehr als 3 Jahren hinzugefügt. Vor mehr als 3 Jahren aktualisiert.

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:

  1. (SELECT cv.id FROM custom_variables cv LEFT JOIN custom_variable_configs cvc ON (cv.config_id = cvc.id)
  2. WHERE module LIKE 'ShipTo'
  3. 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:

  1. DELETE FROM custom_variables WHERE EXISTS
  2. (SELECT cv.id FROM custom_variables cv LEFT JOIN custom_variable_configs cvc ON (cv.config_id = cvc.id)
  3. WHERE module LIKE 'ShipTo'
  4. 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

#1

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));

#2

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

#3

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)
#4

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

Auch abrufbar als: Atom PDF