Skip to content

Commit e88f9e7

Browse files
authored
Add tests for MySQL row-level locking clauses (#342)
Add tests for MySQL row-level locking clauses (e.g., `FOR UPDATE`, `LOCK IN SHARE MODE`, `SKIP LOCKED`, `NOWAIT`) by ensuring they are safely ignored during translation to SQLite.
1 parent 2b738d7 commit e88f9e7

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

packages/mysql-on-sqlite/tests/WP_SQLite_Driver_Tests.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)