Skip to content

Commit 61043e7

Browse files
committed
fix
1 parent ebc2ea0 commit 61043e7

1 file changed

Lines changed: 22 additions & 8 deletions

File tree

tests/WP_SQLite_Driver_Tests.php

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10067,10 +10067,17 @@ public function testCastValuesOnInsert(): void {
1006710067
$this->assertQuery( "INSERT INTO t VALUES ('2')" );
1006810068
$this->assertQuery( "INSERT INTO t VALUES ('3.0')" );
1006910069

10070-
// TODO: These are supported in MySQL:
10071-
$this->assertQueryError( "INSERT INTO t VALUES ('4.5')", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store REAL value in INTEGER column t.value' );
10072-
$this->assertQueryError( 'INSERT INTO t VALUES (0x05)', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10073-
$this->assertQueryError( "INSERT INTO t VALUES (x'06')", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10070+
$is_legacy_sqlite = version_compare( $this->engine->get_sqlite_version(), WP_PDO_MySQL_On_SQLite::MINIMUM_SQLITE_VERSION, '<' );
10071+
if ( $is_legacy_sqlite ) {
10072+
$this->assertQuery( "INSERT INTO t VALUES ('4.5')" );
10073+
$this->assertQuery( 'INSERT INTO t VALUES (0x05)' );
10074+
$this->assertQuery( "INSERT INTO t VALUES (x'06')" );
10075+
} else {
10076+
// TODO: These are supported in MySQL:
10077+
$this->assertQueryError( "INSERT INTO t VALUES ('4.5')", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store REAL value in INTEGER column t.value' );
10078+
$this->assertQueryError( 'INSERT INTO t VALUES (0x05)', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10079+
$this->assertQueryError( "INSERT INTO t VALUES (x'06')", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10080+
}
1007410081

1007510082
$result = $this->assertQuery( 'SELECT * FROM t' );
1007610083
$this->assertSame( null, $result[0]->value );
@@ -10562,10 +10569,17 @@ public function testCastValuesOnUpdate(): void {
1056210569
$this->assertQuery( "UPDATE t SET value = '3.0'" );
1056310570
$this->assertSame( '3', $this->assertQuery( 'SELECT * FROM t' )[0]->value );
1056410571

10565-
// TODO: These are supported in MySQL:
10566-
$this->assertQueryError( "UPDATE t SET value = '4.5'", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store REAL value in INTEGER column t.value' );
10567-
$this->assertQueryError( 'UPDATE t SET value = 0x05', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10568-
$this->assertQueryError( "UPDATE t SET value = x'06'", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10572+
$is_legacy_sqlite = version_compare( $this->engine->get_sqlite_version(), WP_PDO_MySQL_On_SQLite::MINIMUM_SQLITE_VERSION, '<' );
10573+
if ( $is_legacy_sqlite ) {
10574+
$this->assertQuery( "UPDATE t SET value = '4.5'" );
10575+
$this->assertQuery( 'UPDATE t SET value = 0x05' );
10576+
$this->assertQuery( "UPDATE t SET value = x'06'" );
10577+
} else {
10578+
// TODO: These are supported in MySQL:
10579+
$this->assertQueryError( "UPDATE t SET value = '4.5'", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store REAL value in INTEGER column t.value' );
10580+
$this->assertQueryError( 'UPDATE t SET value = 0x05', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10581+
$this->assertQueryError( "UPDATE t SET value = x'06'", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10582+
}
1056910583

1057010584
$this->assertQuery( 'DROP TABLE t' );
1057110585

0 commit comments

Comments
 (0)