Project

General

Profile

Actions

Support #3962

closed

Verhalten bei mehreren slaveIDs

Added by Elias Villiger about 7 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Elias Villiger
Target version:
Start date:
23.06.2017
Due date:
% Done:

0%

Estimated time:
Discuss:
Prio Planung:
Vote:

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.

Actions #1

Updated by Carsten Rose almost 7 years ago

  • Target version set to next9
Actions #2

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.

Actions #3

Updated by Carsten Rose over 5 years ago

  • Target version changed from next9 to 19.2.1
Actions

Also available in: Atom PDF