openjverein / jverein

Open JVerein - Open Source Vereinsverwaltung
https://openjverein.github.io
GNU General Public License v3.0
42 stars 15 forks source link

Fix Mailfilter #266

Closed JohannMaierhofer closed 1 month ago

JohannMaierhofer commented 1 month ago

Ich habe einige Bugs in meinem Filter bei den Mails gefunden.

lenilsas commented 1 month ago

Den Fehler hatte ich auch schon bemerkt. So ist es schon wesentlich besser, allerdings werden die Mails immer noch mehrfach aufgelistet, wenn der Namensfilter auf mehrere Empfänger einer Mail passt. Hier müsste z.B. ein DISTINCT mit rein, wie man das einbauen kann weiß ich allerdings nicht.

JohannMaierhofer commented 1 month ago

Den Fehler hatte ich auch schon bemerkt. So ist es schon wesentlich besser, allerdings werden die Mails immer noch mehrfach aufgelistet, wenn der Namensfilter auf mehrere Empfänger einer Mail passt. Hier müsste z.B. ein DISTINCT mit rein, wie man das einbauen kann weiß ich allerdings nicht.

Ich hatte erst eine Implementierung mit einem direkten DB Query in #235 implementiert und da das DISTINCT verwendet. Bei einem anderen Feature #233 wo ich das so gemacht hatte bekam ich den Kommentar, dass diese direkten Queries ineffizient sind. Ich hatte das dann damals auf die Implementierung auf den DBIterator umgetellt. Bei dieser Implementierung kann man kein DISTINCT setzen.

Es gibt jetzt also nur zwei Möglichkeiten. Entweder ich ändere die Implementierung wieder zurück oder wir lassen das so und akzeptieren die Unschönheit.

JohannMaierhofer commented 1 month ago

Da in diesem View je nach Filter sehr viele Einträge entstehen können würde ich die aktuelle Version bevorzugen, weil sie dann wahrscheinlich performanter ist. Gerade wenn man evtl. über ein Netzwerk remote zugreift. Jetzt gibt es ein einziges Query. Bei der anderen Implementierung würde für jeden gefunden Eintrag ein weiteres Select passieren so wie ich das verstanden habe.

dippeal commented 1 month ago

Da in diesem View je nach Filter sehr viele Einträge entstehen können würde ich die aktuelle Version bevorzugen, weil sie dann wahrscheinlich performanter ist. Gerade wenn man evtl. über ein Netzwerk remote zugreift. Jetzt gibt es ein einziges Query. Bei der anderen Implementierung würde für jeden gefunden Eintrag ein weiteres Select passieren so wie ich das verstanden habe.

Ja erstmal so lassen, testen und Erfahrung sammeln. Wenn die Stimmen über lange Ladezeiten laut werden, dann schauen wir noch mal drüber.

JohannMaierhofer commented 1 month ago

Wenn wir es so lassen, dann ist es ja performant.

Die bessere Lösung wäre sowieso, wenn man das Distinct standard mäßig im DBIterator implementieren könnte.