Support #3962
closedVerhalten bei mehreren slaveIDs
0%
Description
Wenn slaveId über ein SELECT statement definiert wird und dabei mehr als eine ID rauskommt, werden aktuell die IDs aneinandergefügt (ohne Trennzeichen). D.h., wenn z.B.
slaveID = {{SELECT p.id FROM person AS p WHERE id = 10 OR id = 20 }}
kommt als slaveID '1020' raus.
Dies lässt sich natürlich vermeiden, indem man einfach konsequent bei jedem slaveID SELECT statement ein LIMIT 1 angibt. Wenn man das aber vergisst, kann eine zusammengesetzte slaveId (1020) einigen Schaden anrichten. Gibt es eine bessere Lösung?
Vorschlag 1: LIMIT 1 wird bei jedem slaveID SELECT statement automatisch hinzugefügt. Evtl. von der Implementation aber nicht ganz einfach, insbesondere, wenn man auch komplexe SELECT statements erlaubt
Vorschlag 2: Die slaveId wird in dem Fall einfach kommasepariert (GROUP_CONCAT) zurückgegeben. Das bewirkt zwar, dass beim sqlUpdate weder id 10 noch id 20 ausgeführt werden, aber immerhin wird auch keine zusammengesetzte id 1020 ausgeführt.
Updated by Elias Villiger almost 6 years ago
- Status changed from New to Closed
- Assignee changed from Carsten Rose to Elias Villiger
Dies abzufangen ist vom Code her sehr schwierig, ohne die erlaubten Ausdrücke (Variablen, diverse SQL statements) zu limitieren.
Beim Setup des slaveId Queries muss entsprechend einfach darauf geachtet werden, dass nicht mehr als ein Record zurückgeliefert wird.
Updated by Carsten Rose over 5 years ago
- Target version changed from next9 to 19.2.1