@@ -1211,6 +1211,135 @@ public function testInformationSchemaForeignKeys(): void {
12111211 );
12121212 }
12131213
1214+ public function testInformationSchemaInlineForeignKeys (): void {
1215+ $ this ->assertQuery ( 'CREATE TABLE t1 (id INT, name VARCHAR(255)) ' );
1216+ $ this ->assertQuery (
1217+ 'CREATE TABLE t2 (
1218+ id INT,
1219+ t1_id INT REFERENCES t1 (id),
1220+ t1_name VARCHAR(255) REFERENCES t1 (name) ON DELETE CASCADE
1221+ ) '
1222+ );
1223+
1224+ // INFORMATION_SCHEMA.TABLE_CONSTRAINTS
1225+ $ result = $ this ->assertQuery ( "SELECT * FROM information_schema.table_constraints WHERE table_name = 't2' " );
1226+ $ this ->assertEquals (
1227+ array (
1228+ (object ) array (
1229+ 'CONSTRAINT_CATALOG ' => 'def ' ,
1230+ 'CONSTRAINT_SCHEMA ' => 'wp ' ,
1231+ 'CONSTRAINT_NAME ' => 't2_ibfk_1 ' ,
1232+ 'TABLE_SCHEMA ' => 'wp ' ,
1233+ 'TABLE_NAME ' => 't2 ' ,
1234+ 'CONSTRAINT_TYPE ' => 'FOREIGN KEY ' ,
1235+ 'ENFORCED ' => 'YES ' ,
1236+ ),
1237+ (object ) array (
1238+ 'CONSTRAINT_CATALOG ' => 'def ' ,
1239+ 'CONSTRAINT_SCHEMA ' => 'wp ' ,
1240+ 'CONSTRAINT_NAME ' => 't2_ibfk_2 ' ,
1241+ 'TABLE_SCHEMA ' => 'wp ' ,
1242+ 'TABLE_NAME ' => 't2 ' ,
1243+ 'CONSTRAINT_TYPE ' => 'FOREIGN KEY ' ,
1244+ 'ENFORCED ' => 'YES ' ,
1245+ ),
1246+ ),
1247+ $ result
1248+ );
1249+
1250+ // INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
1251+ $ result = $ this ->assertQuery ( "SELECT * FROM information_schema.referential_constraints WHERE table_name = 't2' " );
1252+ $ this ->assertEquals (
1253+ array (
1254+ (object ) array (
1255+ 'CONSTRAINT_CATALOG ' => 'def ' ,
1256+ 'CONSTRAINT_SCHEMA ' => 'wp ' ,
1257+ 'CONSTRAINT_NAME ' => 't2_ibfk_1 ' ,
1258+ 'UNIQUE_CONSTRAINT_CATALOG ' => 'def ' ,
1259+ 'UNIQUE_CONSTRAINT_SCHEMA ' => 'wp ' ,
1260+ 'UNIQUE_CONSTRAINT_NAME ' => null ,
1261+ 'MATCH_OPTION ' => 'NONE ' ,
1262+ 'UPDATE_RULE ' => 'NO ACTION ' ,
1263+ 'DELETE_RULE ' => 'NO ACTION ' ,
1264+ 'TABLE_NAME ' => 't2 ' ,
1265+ 'REFERENCED_TABLE_NAME ' => 't1 ' ,
1266+ ),
1267+ (object ) array (
1268+ 'CONSTRAINT_CATALOG ' => 'def ' ,
1269+ 'CONSTRAINT_SCHEMA ' => 'wp ' ,
1270+ 'CONSTRAINT_NAME ' => 't2_ibfk_2 ' ,
1271+ 'UNIQUE_CONSTRAINT_CATALOG ' => 'def ' ,
1272+ 'UNIQUE_CONSTRAINT_SCHEMA ' => 'wp ' ,
1273+ 'UNIQUE_CONSTRAINT_NAME ' => null ,
1274+ 'MATCH_OPTION ' => 'NONE ' ,
1275+ 'UPDATE_RULE ' => 'NO ACTION ' ,
1276+ 'DELETE_RULE ' => 'CASCADE ' ,
1277+ 'TABLE_NAME ' => 't2 ' ,
1278+ 'REFERENCED_TABLE_NAME ' => 't1 ' ,
1279+ ),
1280+ ),
1281+ $ result
1282+ );
1283+
1284+ // INFORMATION_SCHEMA.KEY_COLUMN_USAGE
1285+ $ result = $ this ->assertQuery ( "SELECT * FROM information_schema.key_column_usage WHERE table_name = 't2' " );
1286+ $ this ->assertEquals (
1287+ array (
1288+ (object ) array (
1289+ 'CONSTRAINT_CATALOG ' => 'def ' ,
1290+ 'CONSTRAINT_SCHEMA ' => 'wp ' ,
1291+ 'CONSTRAINT_NAME ' => 't2_ibfk_1 ' ,
1292+ 'TABLE_CATALOG ' => 'def ' ,
1293+ 'TABLE_SCHEMA ' => 'wp ' ,
1294+ 'TABLE_NAME ' => 't2 ' ,
1295+ 'COLUMN_NAME ' => 't1_id ' ,
1296+ 'ORDINAL_POSITION ' => '1 ' ,
1297+ 'POSITION_IN_UNIQUE_CONSTRAINT ' => '1 ' ,
1298+ 'REFERENCED_TABLE_SCHEMA ' => 'wp ' ,
1299+ 'REFERENCED_TABLE_NAME ' => 't1 ' ,
1300+ 'REFERENCED_COLUMN_NAME ' => 'id ' ,
1301+ ),
1302+ (object ) array (
1303+ 'CONSTRAINT_CATALOG ' => 'def ' ,
1304+ 'CONSTRAINT_SCHEMA ' => 'wp ' ,
1305+ 'CONSTRAINT_NAME ' => 't2_ibfk_2 ' ,
1306+ 'TABLE_CATALOG ' => 'def ' ,
1307+ 'TABLE_SCHEMA ' => 'wp ' ,
1308+ 'TABLE_NAME ' => 't2 ' ,
1309+ 'COLUMN_NAME ' => 't1_name ' ,
1310+ 'ORDINAL_POSITION ' => '1 ' ,
1311+ 'POSITION_IN_UNIQUE_CONSTRAINT ' => '1 ' ,
1312+ 'REFERENCED_TABLE_SCHEMA ' => 'wp ' ,
1313+ 'REFERENCED_TABLE_NAME ' => 't1 ' ,
1314+ 'REFERENCED_COLUMN_NAME ' => 'name ' ,
1315+ ),
1316+ ),
1317+ $ result
1318+ );
1319+
1320+ // SHOW CREATE TABLE
1321+ $ result = $ this ->assertQuery ( 'SHOW CREATE TABLE t2 ' );
1322+ $ this ->assertEquals (
1323+ array (
1324+ (object ) array (
1325+ 'Create Table ' => implode (
1326+ "\n" ,
1327+ array (
1328+ 'CREATE TABLE `t2` ( ' ,
1329+ ' `id` int DEFAULT NULL, ' ,
1330+ ' `t1_id` int DEFAULT NULL, ' ,
1331+ ' `t1_name` varchar(255) DEFAULT NULL, ' ,
1332+ ' CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`t1_id`) REFERENCES `t1` (`id`), ' ,
1333+ ' CONSTRAINT `t2_ibfk_2` FOREIGN KEY (`t1_name`) REFERENCES `t1` (`name`) ON DELETE CASCADE ' ,
1334+ ') ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ' ,
1335+ )
1336+ ),
1337+ ),
1338+ ),
1339+ $ result
1340+ );
1341+ }
1342+
12141343 public function testInformationSchemaForeignKeysWithMultipleColumns (): void {
12151344 $ this ->assertQuery ( 'CREATE TABLE t1 (id INT, name VARCHAR(255)) ' );
12161345 $ this ->assertQuery (
0 commit comments