Skip to content

Commit 879acbb

Browse files
committed
fix
1 parent ebc2ea0 commit 879acbb

1 file changed

Lines changed: 36 additions & 12 deletions

File tree

tests/WP_SQLite_Driver_Tests.php

Lines changed: 36 additions & 12 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 );
@@ -10095,8 +10102,13 @@ public function testCastValuesOnInsert(): void {
1009510102
$this->assertQuery( "INSERT INTO t VALUES ('5')" );
1009610103

1009710104
// TODO: These are supported in MySQL:
10098-
$this->assertQueryError( 'INSERT INTO t VALUES (0x06)', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in REAL column t.value' );
10099-
$this->assertQueryError( "INSERT INTO t VALUES (x'07')", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in REAL column t.value' );
10105+
if ( $is_legacy_sqlite ) {
10106+
$this->assertQuery( 'INSERT INTO t VALUES (0x06)' );
10107+
$this->assertQuery( "INSERT INTO t VALUES (x'07')" );
10108+
} else {
10109+
$this->assertQueryError( 'INSERT INTO t VALUES (0x06)', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in REAL column t.value' );
10110+
$this->assertQueryError( "INSERT INTO t VALUES (x'07')", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in REAL column t.value' );
10111+
}
1010010112

1010110113
$result = $this->assertQuery( 'SELECT * FROM t' );
1010210114
$this->assertSame( null, $result[0]->value );
@@ -10562,10 +10574,17 @@ public function testCastValuesOnUpdate(): void {
1056210574
$this->assertQuery( "UPDATE t SET value = '3.0'" );
1056310575
$this->assertSame( '3', $this->assertQuery( 'SELECT * FROM t' )[0]->value );
1056410576

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' );
10577+
$is_legacy_sqlite = version_compare( $this->engine->get_sqlite_version(), WP_PDO_MySQL_On_SQLite::MINIMUM_SQLITE_VERSION, '<' );
10578+
if ( $is_legacy_sqlite ) {
10579+
$this->assertQuery( "UPDATE t SET value = '4.5'" );
10580+
$this->assertQuery( 'UPDATE t SET value = 0x05' );
10581+
$this->assertQuery( "UPDATE t SET value = x'06'" );
10582+
} else {
10583+
// TODO: These are supported in MySQL:
10584+
$this->assertQueryError( "UPDATE t SET value = '4.5'", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store REAL value in INTEGER column t.value' );
10585+
$this->assertQueryError( 'UPDATE t SET value = 0x05', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10586+
$this->assertQueryError( "UPDATE t SET value = x'06'", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in INTEGER column t.value' );
10587+
}
1056910588

1057010589
$this->assertQuery( 'DROP TABLE t' );
1057110590

@@ -10601,8 +10620,13 @@ public function testCastValuesOnUpdate(): void {
1060110620
$this->assertSame( PHP_VERSION_ID < 80100 ? '5.0' : '5', $this->assertQuery( 'SELECT * FROM t' )[0]->value );
1060210621

1060310622
// TODO: These are supported in MySQL:
10604-
$this->assertQueryError( 'UPDATE t SET value = 0x06', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in REAL column t.value' );
10605-
$this->assertQueryError( "UPDATE t SET value = x'07'", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in REAL column t.value' );
10623+
if ( $is_legacy_sqlite ) {
10624+
$this->assertQuery( 'UPDATE t SET value = 0x06' );
10625+
$this->assertQuery( "UPDATE t SET value = x'07'" );
10626+
} else {
10627+
$this->assertQueryError( 'UPDATE t SET value = 0x06', 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in REAL column t.value' );
10628+
$this->assertQueryError( "UPDATE t SET value = x'07'", 'SQLSTATE[23000]: Integrity constraint violation: 19 cannot store BLOB value in REAL column t.value' );
10629+
}
1060610630

1060710631
$this->assertQuery( 'DROP TABLE t' );
1060810632

0 commit comments

Comments
 (0)