Wie kann ich einen Deadlock mittels SELECT erzeugen?
Verfasst: Fr 3. Feb 2023, 11:44
Guten Morgen zusammen,
ich baue derzeit die Testszenarien für den PHP-Treiber um. Hier gibt es einen Test rund um Transaktionen.
Folgendes Szenario:
Anschließend wird in Transaktion 1 ein Insert ausgeführt.
Abschließend soll ein Deadlock mittels SELECT erzeugt werden.
Die erwartete Meldung sieht in etwa so aus:
Bei mir erzeugt die Anweisung jedoch kein Deadlock, sondern liefert die Daten aus.
Starte ich die Transaktion mit dem Flag IBASE_CONSISTENCY, erhalte ich eine Konfliktmeldung.
Wurde in den Isolationsmodes etwas von 2.5 auf 3.0 geändert? Oder hat jemand eine andere Idee einen Deadlock mittels SELECT zu provozieren?
Dank und Gruß
Martin
ich baue derzeit die Testszenarien für den PHP-Treiber um. Hier gibt es einen Test rund um Transaktionen.
Folgendes Szenario:
Code: Alles auswählen
$tr_1 = ibase_query("SET TRANSACTION"); // Standard READ WRITE Transaktion
$tr_4 = ibase_trans(IBASE_READ+IBASE_COMMITTED+IBASE_REC_NO_VERSION+IBASE_NOWAIT);
Code: Alles auswählen
Transaktion 1: insert into test5 (i) values (4)
Code: Alles auswählen
Transaktion 4: "select * from test5";
Code: Alles auswählen
lock conflict on no wait transaction deadlock
Starte ich die Transaktion mit dem Flag IBASE_CONSISTENCY, erhalte ich eine Konfliktmeldung.
Wurde in den Isolationsmodes etwas von 2.5 auf 3.0 geändert? Oder hat jemand eine andere Idee einen Deadlock mittels SELECT zu provozieren?
Dank und Gruß
Martin