@@ -6805,6 +6805,31 @@ public function testTransactionSavepoints(): void {
68056805 $ this ->assertSame ( array (), (array ) array_column ( $ result , 'id ' ) );
68066806 }
68076807
6808+ public function testRowLeveLockingClauses () {
6809+ $ this ->assertQuery ( 'CREATE TABLE t (name VARCHAR(255), value VARCHAR(255)) ' );
6810+ $ this ->engine ->query ( "INSERT INTO t (name, value) VALUES ('test_lock', '123') " );
6811+
6812+ // FOR UPDATE
6813+ $ res = $ this ->assertQuery ( "SELECT value FROM t WHERE name = 'test_lock' FOR UPDATE " );
6814+ $ this ->assertEquals ( '123 ' , $ res [0 ]->value );
6815+
6816+ // FOR SHARE
6817+ $ res = $ this ->assertQuery ( "SELECT value FROM t WHERE name = 'test_lock' FOR SHARE " );
6818+ $ this ->assertEquals ( '123 ' , $ res [0 ]->value );
6819+
6820+ // LOCK IN SHARE MODE
6821+ $ res = $ this ->assertQuery ( "SELECT value FROM t WHERE name = 'test_lock' LOCK IN SHARE MODE " );
6822+ $ this ->assertEquals ( '123 ' , $ res [0 ]->value );
6823+
6824+ // SKIP LOCKED
6825+ $ res = $ this ->assertQuery ( "SELECT value FROM t WHERE name = 'test_lock' FOR UPDATE SKIP LOCKED " );
6826+ $ this ->assertEquals ( '123 ' , $ res [0 ]->value );
6827+
6828+ // NOWAIT
6829+ $ res = $ this ->assertQuery ( "SELECT value FROM t WHERE name = 'test_lock' FOR UPDATE NOWAIT " );
6830+ $ this ->assertEquals ( '123 ' , $ res [0 ]->value );
6831+ }
6832+
68086833 public function testSelectOrderByAmbiguousColumnResolution (): void {
68096834 $ this ->assertQuery ( 'CREATE TABLE t1 (id INT, name TEXT) ' );
68106835 $ this ->assertQuery ( 'CREATE TABLE t2 (id INT, name TEXT) ' );
0 commit comments