Moin alle,
kann jemand bitte näher erläutern, was in TL 2.8.x zu beachten ist, wenn man in einer Erweiterung Database::execute() (die nun das Resultat cached) benutzt?
Ich habe gesehen, dass in einigen Erweiterungen von Database::execute() auf Database::executeUncached() umgestellt worden ist. Was waren Eure Gründe dafür?
Anlass: ich habe gerade ein Problem im Umfrage Tool [survey_ce] (hoffentlich wirklich) fixen können, das in 2.7.x nicht existierte, aber in 2.8.x auftaucht. Der Original-Code ist zwar nicht optimiert, sieht für mich aber auch nicht falsch aus.
In 2 verschiedenen Methoden ein und der selben Klasse, die sehr verschiedene Ergebnisse liefern, wurde das gleiche Query mit den gleichen Parametern benutzt. Die 1. Methode rief, in einer while Schleife über die Resultate, die 2. Methode auf. Folge: in der 1. Methode lieferte die while Schleife nur noch den ersten Datensatz.
Ich weiss, das der Original-Code suboptimal ist und habe ja auch eine Lösung (und auch diverse Workarounds, siehe hier).
Ich befürchte halt, dass sich in dem neuen 2.8.x Feature des "silent" Cachings noch ein subtiler Fehler befindet, der möglicherweise viele Erweiterungen betreffen könnte.
Eure Meinung, Erfahrung, Erkenntnis? LG, Georg
Lesezeichen