Skip to content

Commit 68c0b8a

Browse files
committed
Do not use STRICT keyword on legacy SQLite versions
1 parent fb3ac6f commit 68c0b8a

3 files changed

Lines changed: 64 additions & 45 deletions

File tree

tests/WP_SQLite_Driver_Translation_Tests.php

Lines changed: 48 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ class WP_SQLite_Driver_Translation_Tests extends TestCase {
1515
*/
1616
private $driver;
1717

18+
/**
19+
* @var string
20+
*/
21+
private $strict_suffix;
22+
1823
public static function setUpBeforeClass(): void {
1924
self::$grammar = new WP_Parser_Grammar( include self::GRAMMAR_PATH );
2025
}
@@ -24,6 +29,9 @@ public function setUp(): void {
2429
new WP_SQLite_Connection( array( 'path' => ':memory:' ) ),
2530
'wp'
2631
);
32+
33+
$supports_strict_tables = version_compare( $this->driver->get_sqlite_version(), '3.37.0', '>=' );
34+
$this->strict_suffix = $supports_strict_tables ? ' STRICT' : '';
2735
}
2836

2937
public function testSelect(): void {
@@ -307,7 +315,7 @@ public function testDelete(): void {
307315

308316
public function testCreateTable(): void {
309317
$this->assertQuery(
310-
'CREATE TABLE `t` ( `id` INTEGER ) STRICT',
318+
'CREATE TABLE `t` ( `id` INTEGER )' . $this->strict_suffix,
311319
'CREATE TABLE t (id INT)'
312320
);
313321

@@ -328,7 +336,7 @@ public function testCreateTable(): void {
328336

329337
public function testCreateTableWithMultipleColumns(): void {
330338
$this->assertQuery(
331-
'CREATE TABLE `t` ( `id` INTEGER, `name` TEXT COLLATE NOCASE, `score` REAL DEFAULT \'0.0\' ) STRICT',
339+
'CREATE TABLE `t` ( `id` INTEGER, `name` TEXT COLLATE NOCASE, `score` REAL DEFAULT \'0.0\' )' . $this->strict_suffix,
332340
'CREATE TABLE t (id INT, name TEXT, score FLOAT DEFAULT 0.0)'
333341
);
334342

@@ -353,7 +361,7 @@ public function testCreateTableWithMultipleColumns(): void {
353361

354362
public function testCreateTableWithBasicConstraints(): void {
355363
$this->assertQuery(
356-
'CREATE TABLE `t` ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT ) STRICT',
364+
'CREATE TABLE `t` ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT )' . $this->strict_suffix,
357365
'CREATE TABLE t (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT)'
358366
);
359367

@@ -381,7 +389,7 @@ public function testCreateTableWithBasicConstraints(): void {
381389
public function testCreateTableWithEngine(): void {
382390
// ENGINE is not supported in SQLite, we save it in information schema.
383391
$this->assertQuery(
384-
'CREATE TABLE `t` ( `id` INTEGER ) STRICT',
392+
'CREATE TABLE `t` ( `id` INTEGER )' . $this->strict_suffix,
385393
'CREATE TABLE t (id INT) ENGINE=MyISAM'
386394
);
387395

@@ -403,7 +411,7 @@ public function testCreateTableWithEngine(): void {
403411
public function testCreateTableWithCollate(): void {
404412
// COLLATE is not supported in SQLite, we save it in information schema.
405413
$this->assertQuery(
406-
'CREATE TABLE `t` ( `id` INTEGER ) STRICT',
414+
'CREATE TABLE `t` ( `id` INTEGER )' . $this->strict_suffix,
407415
'CREATE TABLE t (id INT) COLLATE utf8mb4_czech_ci'
408416
);
409417

@@ -433,7 +441,7 @@ public function testCreateTableWithPrimaryKey(): void {
433441
* https://www.sqlite.org/lang_createtable.html#rowids_and_the_integer_primary_key
434442
*/
435443
$this->assertQuery(
436-
'CREATE TABLE `t` ( `id` INT NOT NULL, PRIMARY KEY (`id`) ) STRICT',
444+
'CREATE TABLE `t` ( `id` INT NOT NULL, PRIMARY KEY (`id`) )' . $this->strict_suffix,
437445
'CREATE TABLE t (id INT PRIMARY KEY)'
438446
);
439447

@@ -461,7 +469,7 @@ public function testCreateTableWithPrimaryKey(): void {
461469
public function testCreateTableWithPrimaryKeyAndAutoincrement(): void {
462470
// With AUTOINCREMENT, we expect "INTEGER".
463471
$this->assertQuery(
464-
'CREATE TABLE `t1` ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT ) STRICT',
472+
'CREATE TABLE `t1` ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT )' . $this->strict_suffix,
465473
'CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT)'
466474
);
467475

@@ -487,7 +495,7 @@ public function testCreateTableWithPrimaryKeyAndAutoincrement(): void {
487495

488496
// In SQLite, PRIMARY KEY must come before AUTOINCREMENT.
489497
$this->assertQuery(
490-
'CREATE TABLE `t2` ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT ) STRICT',
498+
'CREATE TABLE `t2` ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT )' . $this->strict_suffix,
491499
'CREATE TABLE t2 (id INT AUTO_INCREMENT PRIMARY KEY)'
492500
);
493501

@@ -513,7 +521,7 @@ public function testCreateTableWithPrimaryKeyAndAutoincrement(): void {
513521

514522
// In SQLite, AUTOINCREMENT cannot be specified separately from PRIMARY KEY.
515523
$this->assertQuery(
516-
'CREATE TABLE `t3` ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT ) STRICT',
524+
'CREATE TABLE `t3` ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT )' . $this->strict_suffix,
517525
'CREATE TABLE t3 (id INT AUTO_INCREMENT, PRIMARY KEY(id))'
518526
);
519527

@@ -543,7 +551,7 @@ public function testCreateTableWithPrimaryKeyAndAutoincrement(): void {
543551
public function testCreateTableWithInlineUniqueIndexes(): void {
544552
$this->assertQuery(
545553
array(
546-
'CREATE TABLE `t` ( `id` INTEGER, `name` TEXT COLLATE NOCASE ) STRICT',
554+
'CREATE TABLE `t` ( `id` INTEGER, `name` TEXT COLLATE NOCASE )' . $this->strict_suffix,
547555
'CREATE UNIQUE INDEX `t__id` ON `t` (`id`)',
548556
'CREATE UNIQUE INDEX `t__name` ON `t` (`name`)',
549557
),
@@ -582,7 +590,7 @@ public function testCreateTableWithInlineUniqueIndexes(): void {
582590
public function testCreateTableWithStandaloneUniqueIndexes(): void {
583591
$this->assertQuery(
584592
array(
585-
'CREATE TABLE `t` ( `id` INTEGER, `name` TEXT COLLATE NOCASE ) STRICT',
593+
'CREATE TABLE `t` ( `id` INTEGER, `name` TEXT COLLATE NOCASE )' . $this->strict_suffix,
586594
'CREATE UNIQUE INDEX `t__id` ON `t` (`id`)',
587595
'CREATE UNIQUE INDEX `t__name` ON `t` (`name`)',
588596
),
@@ -642,7 +650,7 @@ public function testCreateTableWithStandaloneUniqueIndexes(): void {
642650

643651
public function testCreateTemporaryTable(): void {
644652
$this->assertQuery(
645-
'CREATE TEMPORARY TABLE `t` ( `id` INTEGER ) STRICT',
653+
'CREATE TEMPORARY TABLE `t` ( `id` INTEGER )' . $this->strict_suffix,
646654
'CREATE TEMPORARY TABLE t (id INT)'
647655
);
648656
}
@@ -669,7 +677,7 @@ public function testAlterTableAddColumn(): void {
669677
array(
670678
'PRAGMA foreign_keys',
671679
'PRAGMA foreign_keys = OFF',
672-
'CREATE TABLE `<tmp-table>` ( `id` INTEGER, `a` INTEGER ) STRICT',
680+
'CREATE TABLE `<tmp-table>` ( `id` INTEGER, `a` INTEGER )' . $this->strict_suffix,
673681
'INSERT INTO `<tmp-table>` (`rowid`, `id`) SELECT `rowid`, `id` FROM `t`',
674682
'DROP TABLE `t`',
675683
'ALTER TABLE `<tmp-table>` RENAME TO `t`',
@@ -700,7 +708,7 @@ public function testAlterTableAddColumnWithNotNull(): void {
700708
array(
701709
'PRAGMA foreign_keys',
702710
'PRAGMA foreign_keys = OFF',
703-
'CREATE TABLE `<tmp-table>` ( `id` INTEGER, `a` INTEGER NOT NULL ) STRICT',
711+
'CREATE TABLE `<tmp-table>` ( `id` INTEGER, `a` INTEGER NOT NULL )' . $this->strict_suffix,
704712
'INSERT INTO `<tmp-table>` (`rowid`, `id`) SELECT `rowid`, `id` FROM `t`',
705713
'DROP TABLE `t`',
706714
'ALTER TABLE `<tmp-table>` RENAME TO `t`',
@@ -731,7 +739,7 @@ public function testAlterTableAddColumnWithDefault(): void {
731739
array(
732740
'PRAGMA foreign_keys',
733741
'PRAGMA foreign_keys = OFF',
734-
'CREATE TABLE `<tmp-table>` ( `id` INTEGER, `a` INTEGER DEFAULT \'0\' ) STRICT',
742+
'CREATE TABLE `<tmp-table>` ( `id` INTEGER, `a` INTEGER DEFAULT \'0\' )' . $this->strict_suffix,
735743
'INSERT INTO `<tmp-table>` (`rowid`, `id`) SELECT `rowid`, `id` FROM `t`',
736744
'DROP TABLE `t`',
737745
'ALTER TABLE `<tmp-table>` RENAME TO `t`',
@@ -762,7 +770,7 @@ public function testAlterTableAddColumnWithNotNullAndDefault(): void {
762770
array(
763771
'PRAGMA foreign_keys',
764772
'PRAGMA foreign_keys = OFF',
765-
'CREATE TABLE `<tmp-table>` ( `id` INTEGER, `a` INTEGER NOT NULL DEFAULT \'0\' ) STRICT',
773+
'CREATE TABLE `<tmp-table>` ( `id` INTEGER, `a` INTEGER NOT NULL DEFAULT \'0\' )' . $this->strict_suffix,
766774
'INSERT INTO `<tmp-table>` (`rowid`, `id`) SELECT `rowid`, `id` FROM `t`',
767775
'DROP TABLE `t`',
768776
'ALTER TABLE `<tmp-table>` RENAME TO `t`',
@@ -793,7 +801,7 @@ public function testAlterTableAddMultipleColumns(): void {
793801
array(
794802
'PRAGMA foreign_keys',
795803
'PRAGMA foreign_keys = OFF',
796-
'CREATE TABLE `<tmp-table>` ( `id` INTEGER, `a` INTEGER, `b` TEXT COLLATE NOCASE, `c` INTEGER ) STRICT',
804+
'CREATE TABLE `<tmp-table>` ( `id` INTEGER, `a` INTEGER, `b` TEXT COLLATE NOCASE, `c` INTEGER )' . $this->strict_suffix,
797805
'INSERT INTO `<tmp-table>` (`rowid`, `id`) SELECT `rowid`, `id` FROM `t`',
798806
'DROP TABLE `t`',
799807
'ALTER TABLE `<tmp-table>` RENAME TO `t`',
@@ -830,7 +838,7 @@ public function testAlterTableDropColumn(): void {
830838
array(
831839
'PRAGMA foreign_keys',
832840
'PRAGMA foreign_keys = OFF',
833-
'CREATE TABLE `<tmp-table>` ( `id` INTEGER ) STRICT',
841+
'CREATE TABLE `<tmp-table>` ( `id` INTEGER )' . $this->strict_suffix,
834842
'INSERT INTO `<tmp-table>` (`rowid`, `id`) SELECT `rowid`, `id` FROM `t`',
835843
'DROP TABLE `t`',
836844
'ALTER TABLE `<tmp-table>` RENAME TO `t`',
@@ -862,7 +870,7 @@ public function testAlterTableDropMultipleColumns(): void {
862870
array(
863871
'PRAGMA foreign_keys',
864872
'PRAGMA foreign_keys = OFF',
865-
'CREATE TABLE `<tmp-table>` ( `id` INTEGER ) STRICT',
873+
'CREATE TABLE `<tmp-table>` ( `id` INTEGER )' . $this->strict_suffix,
866874
'INSERT INTO `<tmp-table>` (`rowid`, `id`) SELECT `rowid`, `id` FROM `t`',
867875
'DROP TABLE `t`',
868876
'ALTER TABLE `<tmp-table>` RENAME TO `t`',
@@ -900,7 +908,7 @@ public function testAlterTableAddAndDropColumns(): void {
900908
array(
901909
'PRAGMA foreign_keys',
902910
'PRAGMA foreign_keys = OFF',
903-
'CREATE TABLE `<tmp-table>` ( `b` INTEGER ) STRICT',
911+
'CREATE TABLE `<tmp-table>` ( `b` INTEGER )' . $this->strict_suffix,
904912
'INSERT INTO `<tmp-table>` (`rowid`) SELECT `rowid` FROM `t`',
905913
'DROP TABLE `t`',
906914
'ALTER TABLE `<tmp-table>` RENAME TO `t`',
@@ -936,7 +944,7 @@ public function testAlterTableDropAndAddSingleColumn(): void {
936944
array(
937945
'PRAGMA foreign_keys',
938946
'PRAGMA foreign_keys = OFF',
939-
'CREATE TABLE `<tmp-table>` ( `a` INTEGER ) STRICT',
947+
'CREATE TABLE `<tmp-table>` ( `a` INTEGER )' . $this->strict_suffix,
940948
'INSERT INTO `<tmp-table>` (`rowid`) SELECT `rowid` FROM `t`',
941949
'DROP TABLE `t`',
942950
'ALTER TABLE `<tmp-table>` RENAME TO `t`',
@@ -968,7 +976,7 @@ public function testAlterTableDropAndAddSingleColumn(): void {
968976

969977
public function testBitDataTypes(): void {
970978
$this->assertQuery(
971-
'CREATE TABLE `t` ( `i1` INTEGER, `i2` INTEGER ) STRICT',
979+
'CREATE TABLE `t` ( `i1` INTEGER, `i2` INTEGER )' . $this->strict_suffix,
972980
'CREATE TABLE t (i1 BIT, i2 BIT(10))'
973981
);
974982

@@ -991,7 +999,7 @@ public function testBitDataTypes(): void {
991999

9921000
public function testBooleanDataTypes(): void {
9931001
$this->assertQuery(
994-
'CREATE TABLE `t` ( `i1` INTEGER, `i2` INTEGER ) STRICT',
1002+
'CREATE TABLE `t` ( `i1` INTEGER, `i2` INTEGER )' . $this->strict_suffix,
9951003
'CREATE TABLE t (i1 BOOL, i2 BOOLEAN)'
9961004
);
9971005

@@ -1014,7 +1022,7 @@ public function testBooleanDataTypes(): void {
10141022

10151023
public function testIntegerDataTypes(): void {
10161024
$this->assertQuery(
1017-
'CREATE TABLE `t` ( `i1` INTEGER, `i2` INTEGER, `i3` INTEGER, `i4` INTEGER, `i5` INTEGER, `i6` INTEGER ) STRICT',
1025+
'CREATE TABLE `t` ( `i1` INTEGER, `i2` INTEGER, `i3` INTEGER, `i4` INTEGER, `i5` INTEGER, `i6` INTEGER )' . $this->strict_suffix,
10181026
'CREATE TABLE t (i1 TINYINT, i2 SMALLINT, i3 MEDIUMINT, i4 INT, i5 INTEGER, i6 BIGINT)'
10191027
);
10201028

@@ -1045,7 +1053,7 @@ public function testIntegerDataTypes(): void {
10451053

10461054
public function testFloatDataTypes(): void {
10471055
$this->assertQuery(
1048-
'CREATE TABLE `t` ( `f1` REAL, `f2` REAL, `f3` REAL, `f4` REAL ) STRICT',
1056+
'CREATE TABLE `t` ( `f1` REAL, `f2` REAL, `f3` REAL, `f4` REAL )' . $this->strict_suffix,
10491057
'CREATE TABLE t (f1 FLOAT, f2 DOUBLE, f3 DOUBLE PRECISION, f4 REAL)'
10501058
);
10511059

@@ -1072,7 +1080,7 @@ public function testFloatDataTypes(): void {
10721080

10731081
public function testDecimalTypes(): void {
10741082
$this->assertQuery(
1075-
'CREATE TABLE `t` ( `f1` REAL, `f2` REAL, `f3` REAL, `f4` REAL ) STRICT',
1083+
'CREATE TABLE `t` ( `f1` REAL, `f2` REAL, `f3` REAL, `f4` REAL )' . $this->strict_suffix,
10761084
'CREATE TABLE t (f1 DECIMAL, f2 DEC, f3 FIXED, f4 NUMERIC)'
10771085
);
10781086

@@ -1099,7 +1107,7 @@ public function testDecimalTypes(): void {
10991107

11001108
public function testCharDataTypes(): void {
11011109
$this->assertQuery(
1102-
'CREATE TABLE `t` ( `c1` TEXT COLLATE NOCASE, `c2` TEXT COLLATE NOCASE ) STRICT',
1110+
'CREATE TABLE `t` ( `c1` TEXT COLLATE NOCASE, `c2` TEXT COLLATE NOCASE )' . $this->strict_suffix,
11031111
'CREATE TABLE t (c1 CHAR, c2 CHAR(10))'
11041112
);
11051113

@@ -1122,7 +1130,7 @@ public function testCharDataTypes(): void {
11221130

11231131
public function testVarcharDataTypes(): void {
11241132
$this->assertQuery(
1125-
'CREATE TABLE `t` ( `c1` TEXT COLLATE NOCASE, `c2` TEXT COLLATE NOCASE, `c3` TEXT COLLATE NOCASE ) STRICT',
1133+
'CREATE TABLE `t` ( `c1` TEXT COLLATE NOCASE, `c2` TEXT COLLATE NOCASE, `c3` TEXT COLLATE NOCASE )' . $this->strict_suffix,
11261134
'CREATE TABLE t (c1 VARCHAR(255), c2 CHAR VARYING(255), c3 CHARACTER VARYING(255))'
11271135
);
11281136

@@ -1147,7 +1155,7 @@ public function testVarcharDataTypes(): void {
11471155

11481156
public function testNationalCharDataTypes(): void {
11491157
$this->assertQuery(
1150-
'CREATE TABLE `t` ( `c1` TEXT COLLATE NOCASE, `c2` TEXT COLLATE NOCASE, `c3` TEXT COLLATE NOCASE, `c4` TEXT COLLATE NOCASE ) STRICT',
1158+
'CREATE TABLE `t` ( `c1` TEXT COLLATE NOCASE, `c2` TEXT COLLATE NOCASE, `c3` TEXT COLLATE NOCASE, `c4` TEXT COLLATE NOCASE )' . $this->strict_suffix,
11511159
'CREATE TABLE t (c1 NATIONAL CHAR, c2 NCHAR, c3 NATIONAL CHAR (10), c4 NCHAR(10))'
11521160
);
11531161

@@ -1174,7 +1182,7 @@ public function testNationalCharDataTypes(): void {
11741182

11751183
public function testNcharVarcharDataTypes(): void {
11761184
$this->assertQuery(
1177-
'CREATE TABLE `t` ( `c1` TEXT COLLATE NOCASE, `c2` TEXT COLLATE NOCASE, `c3` TEXT COLLATE NOCASE ) STRICT',
1185+
'CREATE TABLE `t` ( `c1` TEXT COLLATE NOCASE, `c2` TEXT COLLATE NOCASE, `c3` TEXT COLLATE NOCASE )' . $this->strict_suffix,
11781186
'CREATE TABLE t (c1 NCHAR VARCHAR(255), c2 NCHAR VARYING(255), c3 NVARCHAR(255))'
11791187
);
11801188

@@ -1199,7 +1207,7 @@ public function testNcharVarcharDataTypes(): void {
11991207

12001208
public function testNationalVarcharDataTypes(): void {
12011209
$this->assertQuery(
1202-
'CREATE TABLE `t` ( `c1` TEXT COLLATE NOCASE, `c2` TEXT COLLATE NOCASE, `c3` TEXT COLLATE NOCASE ) STRICT',
1210+
'CREATE TABLE `t` ( `c1` TEXT COLLATE NOCASE, `c2` TEXT COLLATE NOCASE, `c3` TEXT COLLATE NOCASE )' . $this->strict_suffix,
12031211
'CREATE TABLE t (c1 NATIONAL VARCHAR(255), c2 NATIONAL CHAR VARYING(255), c3 NATIONAL CHARACTER VARYING(255))'
12041212
);
12051213

@@ -1224,7 +1232,7 @@ public function testNationalVarcharDataTypes(): void {
12241232

12251233
public function testTextDataTypes(): void {
12261234
$this->assertQuery(
1227-
'CREATE TABLE `t` ( `t1` TEXT COLLATE NOCASE, `t2` TEXT COLLATE NOCASE, `t3` TEXT COLLATE NOCASE, `t4` TEXT COLLATE NOCASE ) STRICT',
1235+
'CREATE TABLE `t` ( `t1` TEXT COLLATE NOCASE, `t2` TEXT COLLATE NOCASE, `t3` TEXT COLLATE NOCASE, `t4` TEXT COLLATE NOCASE )' . $this->strict_suffix,
12281236
'CREATE TABLE t (t1 TINYTEXT, t2 TEXT, t3 MEDIUMTEXT, t4 LONGTEXT)'
12291237
);
12301238

@@ -1251,7 +1259,7 @@ public function testTextDataTypes(): void {
12511259

12521260
public function testEnumDataTypes(): void {
12531261
$this->assertQuery(
1254-
'CREATE TABLE `t` ( `e` TEXT COLLATE NOCASE ) STRICT',
1262+
'CREATE TABLE `t` ( `e` TEXT COLLATE NOCASE )' . $this->strict_suffix,
12551263
'CREATE TABLE t (e ENUM("a", "b", "c"))'
12561264
);
12571265

@@ -1272,7 +1280,7 @@ public function testEnumDataTypes(): void {
12721280

12731281
public function testDateAndTimeDataTypes(): void {
12741282
$this->assertQuery(
1275-
'CREATE TABLE `t` ( `d` TEXT COLLATE NOCASE, `t` TEXT COLLATE NOCASE, `dt` TEXT COLLATE NOCASE, `ts` TEXT COLLATE NOCASE, `y` TEXT COLLATE NOCASE ) STRICT',
1283+
'CREATE TABLE `t` ( `d` TEXT COLLATE NOCASE, `t` TEXT COLLATE NOCASE, `dt` TEXT COLLATE NOCASE, `ts` TEXT COLLATE NOCASE, `y` TEXT COLLATE NOCASE )' . $this->strict_suffix,
12761284
'CREATE TABLE t (d DATE, t TIME, dt DATETIME, ts TIMESTAMP, y YEAR)'
12771285
);
12781286

@@ -1301,7 +1309,7 @@ public function testDateAndTimeDataTypes(): void {
13011309

13021310
public function testBinaryDataTypes(): void {
13031311
$this->assertQuery(
1304-
'CREATE TABLE `t` ( `b` BLOB, `v` BLOB ) STRICT',
1312+
'CREATE TABLE `t` ( `b` BLOB, `v` BLOB )' . $this->strict_suffix,
13051313
'CREATE TABLE t (b BINARY, v VARBINARY(255))'
13061314
);
13071315

@@ -1324,7 +1332,7 @@ public function testBinaryDataTypes(): void {
13241332

13251333
public function testBlobDataTypes(): void {
13261334
$this->assertQuery(
1327-
'CREATE TABLE `t` ( `b1` BLOB, `b2` BLOB, `b3` BLOB, `b4` BLOB ) STRICT',
1335+
'CREATE TABLE `t` ( `b1` BLOB, `b2` BLOB, `b3` BLOB, `b4` BLOB )' . $this->strict_suffix,
13281336
'CREATE TABLE t (b1 TINYBLOB, b2 BLOB, b3 MEDIUMBLOB, b4 LONGBLOB)'
13291337
);
13301338

@@ -1351,7 +1359,7 @@ public function testBlobDataTypes(): void {
13511359

13521360
public function testBasicSpatialDataTypes(): void {
13531361
$this->assertQuery(
1354-
'CREATE TABLE `t` ( `g1` TEXT COLLATE NOCASE, `g2` TEXT COLLATE NOCASE, `g3` TEXT COLLATE NOCASE, `g4` TEXT COLLATE NOCASE ) STRICT',
1362+
'CREATE TABLE `t` ( `g1` TEXT COLLATE NOCASE, `g2` TEXT COLLATE NOCASE, `g3` TEXT COLLATE NOCASE, `g4` TEXT COLLATE NOCASE )' . $this->strict_suffix,
13551363
'CREATE TABLE t (g1 GEOMETRY, g2 POINT, g3 LINESTRING, g4 POLYGON)'
13561364
);
13571365

@@ -1378,7 +1386,7 @@ public function testBasicSpatialDataTypes(): void {
13781386

13791387
public function testMultiObjectSpatialDataTypes(): void {
13801388
$this->assertQuery(
1381-
'CREATE TABLE `t` ( `g1` TEXT COLLATE NOCASE, `g2` TEXT COLLATE NOCASE, `g3` TEXT COLLATE NOCASE ) STRICT',
1389+
'CREATE TABLE `t` ( `g1` TEXT COLLATE NOCASE, `g2` TEXT COLLATE NOCASE, `g3` TEXT COLLATE NOCASE )' . $this->strict_suffix,
13821390
'CREATE TABLE t (g1 MULTIPOINT, g2 MULTILINESTRING, g3 MULTIPOLYGON)'
13831391
);
13841392

@@ -1403,7 +1411,7 @@ public function testMultiObjectSpatialDataTypes(): void {
14031411

14041412
public function testGeometryCollectionDataTypes(): void {
14051413
$this->assertQuery(
1406-
'CREATE TABLE `t` ( `g1` TEXT COLLATE NOCASE, `g2` TEXT COLLATE NOCASE ) STRICT',
1414+
'CREATE TABLE `t` ( `g1` TEXT COLLATE NOCASE, `g2` TEXT COLLATE NOCASE )' . $this->strict_suffix,
14071415
'CREATE TABLE t (g1 GEOMCOLLECTION, g2 GEOMETRYCOLLECTION)'
14081416
);
14091417

@@ -1426,7 +1434,7 @@ public function testGeometryCollectionDataTypes(): void {
14261434

14271435
public function testSerialDataTypes(): void {
14281436
$this->assertQuery(
1429-
'CREATE TABLE `t` ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT ) STRICT',
1437+
'CREATE TABLE `t` ( `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT )' . $this->strict_suffix,
14301438
'CREATE TABLE t (id SERIAL)'
14311439
);
14321440

wp-includes/sqlite-ast/class-wp-pdo-mysql-on-sqlite.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5800,7 +5800,12 @@ function ( $column ) {
58005800
$this->quote_sqlite_identifier( $new_table_name ?? $table_name )
58015801
);
58025802
$create_table_query .= implode( ",\n", $rows );
5803-
$create_table_query .= "\n) STRICT";
5803+
$create_table_query .= "\n)";
5804+
5805+
if ( version_compare( $this->get_sqlite_version(), '3.37.0', '>=' ) ) {
5806+
$create_table_query .= ' STRICT';
5807+
}
5808+
58045809
return array_merge( array( $create_table_query ), $create_index_queries, $on_update_queries );
58055810
}
58065811

0 commit comments

Comments
 (0)