Skip to content

Commit a0828ba

Browse files
Merge branch '2.4-develop' into mainline#AC-6762
2 parents 1a74e0c + c130c2d commit a0828ba

File tree

11 files changed

+283
-5
lines changed

11 files changed

+283
-5
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
// @codingStandardsIgnoreFile
9+
return [
10+
'auto_increment_test' => 'CREATE TABLE `auto_increment_test` (
11+
`int_auto_increment_with_nullable` int unsigned NOT NULL AUTO_INCREMENT,
12+
`int_disabled_auto_increment` smallint unsigned DEFAULT \'0\',
13+
UNIQUE KEY `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` (`int_auto_increment_with_nullable`)
14+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3',
15+
'reference_table' => 'CREATE TABLE `reference_table` (
16+
`tinyint_ref` tinyint NOT NULL AUTO_INCREMENT,
17+
`tinyint_without_padding` tinyint NOT NULL DEFAULT \'0\',
18+
`bigint_without_padding` bigint NOT NULL DEFAULT \'0\',
19+
`smallint_without_padding` smallint NOT NULL DEFAULT \'0\',
20+
`integer_without_padding` int NOT NULL DEFAULT \'0\',
21+
`smallint_with_big_padding` smallint NOT NULL DEFAULT \'0\',
22+
`smallint_without_default` smallint DEFAULT NULL,
23+
`int_without_unsigned` int DEFAULT NULL,
24+
`int_unsigned` int unsigned DEFAULT NULL,
25+
`bigint_default_nullable` bigint unsigned DEFAULT \'1\',
26+
`bigint_not_default_not_nullable` bigint unsigned NOT NULL,
27+
`smallint_ref` smallint NOT NULL DEFAULT \'0\',
28+
PRIMARY KEY (`tinyint_ref`,`smallint_ref`),
29+
UNIQUE KEY `REFERENCE_TABLE_SMALLINT_REF` (`smallint_ref`)
30+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3',
31+
'test_table' => 'CREATE TABLE `test_table` (
32+
`smallint` smallint DEFAULT NULL,
33+
`tinyint` tinyint DEFAULT NULL,
34+
`bigint` bigint DEFAULT \'0\',
35+
`float` float(12,10) DEFAULT \'0.0000000000\',
36+
`double` double(245,10) DEFAULT \'11111111.1111110000\',
37+
`decimal` decimal(15,4) DEFAULT \'0.0000\',
38+
`date` date DEFAULT NULL,
39+
`timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
40+
`datetime` datetime DEFAULT \'0000-00-00 00:00:00\',
41+
`longtext` longtext,
42+
`mediumtext` mediumtext,
43+
`varchar` varchar(254) DEFAULT NULL,
44+
`char` char(255) DEFAULT NULL,
45+
`mediumblob` mediumblob,
46+
`blob` blob,
47+
`boolean` tinyint(1) DEFAULT NULL,
48+
`integer_main` int unsigned DEFAULT NULL,
49+
`smallint_main` smallint NOT NULL DEFAULT \'0\',
50+
UNIQUE KEY `TEST_TABLE_SMALLINT_FLOAT` (`smallint`,`float`),
51+
UNIQUE KEY `TEST_TABLE_DOUBLE` (`double`),
52+
KEY `TEST_TABLE_TINYINT_BIGINT` (`tinyint`,`bigint`),
53+
KEY `TEST_TABLE_SMALLINT_MAIN_REFERENCE_TABLE_SMALLINT_REF` (`smallint_main`),
54+
KEY `FK_FB77604C299EB8612D01E4AF8D9931F2` (`integer_main`),
55+
CONSTRAINT `FK_FB77604C299EB8612D01E4AF8D9931F2` FOREIGN KEY (`integer_main`) REFERENCES `auto_increment_test` (`int_auto_increment_with_nullable`) ON DELETE CASCADE,
56+
CONSTRAINT `TEST_TABLE_SMALLINT_MAIN_REFERENCE_TABLE_SMALLINT_REF` FOREIGN KEY (`smallint_main`) REFERENCES `reference_table` (`smallint_ref`) ON DELETE CASCADE,
57+
CONSTRAINT `TEST_TABLE_TINYINT_REFERENCE_TABLE_TINYINT_REF` FOREIGN KEY (`tinyint`) REFERENCES `reference_table` (`tinyint_ref`) ON DELETE SET NULL
58+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3',
59+
];
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
// @codingStandardsIgnoreFile
9+
return [
10+
'before' => [
11+
'store' => 'CREATE TABLE `store` (
12+
`store_owner_id` smallint DEFAULT NULL COMMENT \'Store Owner Reference\',
13+
KEY `STORE_STORE_OWNER_ID_STORE_OWNER_OWNER_ID` (`store_owner_id`),
14+
CONSTRAINT `STORE_STORE_OWNER_ID_STORE_OWNER_OWNER_ID` FOREIGN KEY (`store_owner_id`) REFERENCES `store_owner` (`owner_id`) ON DELETE SET NULL
15+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3',
16+
'store_owner' => 'CREATE TABLE `store_owner` (
17+
`owner_id` smallint NOT NULL AUTO_INCREMENT,
18+
`store_owner_name` varchar(255) DEFAULT NULL COMMENT \'Store Owner Name\',
19+
PRIMARY KEY (`owner_id`)
20+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT=\'Store owner information\''
21+
],
22+
'after' => [
23+
'store' => 'CREATE TABLE `store` (
24+
`store_owner` varchar(255) DEFAULT NULL COMMENT \'Store Owner Name\'
25+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3'
26+
]
27+
];
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
return [
9+
'auto_increment_test' => 'CREATE TABLE `auto_increment_test` (
10+
`int_auto_increment_with_nullable` int unsigned NOT NULL AUTO_INCREMENT,
11+
`int_disabled_auto_increment` smallint unsigned DEFAULT \'0\',
12+
UNIQUE KEY `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` (`int_auto_increment_with_nullable`)
13+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3'
14+
];
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
return [
9+
'before' => 'CREATE TABLE `some_table` (
10+
`some_column` varchar(255) DEFAULT NULL COMMENT \'Some Column Name\'
11+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3',
12+
'after' => 'CREATE TABLE `some_table_renamed` (
13+
`some_column` varchar(255) DEFAULT NULL COMMENT \'Some Column Name\'
14+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3',
15+
];
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
// @codingStandardsIgnoreFile
9+
return ['CREATE TABLE `reference_table` (
10+
`tinyint_ref` tinyint NOT NULL AUTO_INCREMENT ,
11+
`tinyint_without_padding` tinyint NOT NULL DEFAULT 0 ,
12+
`bigint_without_padding` bigint NOT NULL DEFAULT 0 ,
13+
`smallint_without_padding` smallint NOT NULL DEFAULT 0 ,
14+
`integer_without_padding` int NOT NULL DEFAULT 0 ,
15+
`smallint_with_big_padding` smallint NOT NULL DEFAULT 0 ,
16+
`smallint_without_default` smallint NULL ,
17+
`int_without_unsigned` int NULL ,
18+
`int_unsigned` int UNSIGNED NULL ,
19+
`bigint_default_nullable` bigint UNSIGNED NULL DEFAULT 1 ,
20+
`bigint_not_default_not_nullable` bigint UNSIGNED NOT NULL ,
21+
CONSTRAINT PRIMARY KEY (`tinyint_ref`)
22+
) ENGINE=innodb DEFAULT CHARSET=utf8mb3 DEFAULT COLLATE=utf8mb3_general_ci
23+
24+
CREATE TABLE `auto_increment_test` (
25+
`int_auto_increment_with_nullable` int UNSIGNED NOT NULL AUTO_INCREMENT ,
26+
`int_disabled_auto_increment` smallint UNSIGNED NULL DEFAULT 0 ,
27+
CONSTRAINT `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` UNIQUE KEY (`int_auto_increment_with_nullable`)
28+
) ENGINE=innodb DEFAULT CHARSET=utf8mb3 DEFAULT COLLATE=utf8mb3_general_ci
29+
30+
CREATE TABLE `test_table` (
31+
`smallint` smallint NOT NULL AUTO_INCREMENT ,
32+
`tinyint` tinyint NULL ,
33+
`bigint` bigint NULL DEFAULT 0 ,
34+
`float` float(12, 4) NULL DEFAULT 0 ,
35+
`double` decimal(14, 6) NULL DEFAULT 11111111.111111 ,
36+
`decimal` decimal(15, 4) NULL DEFAULT 0 ,
37+
`date` date NULL ,
38+
`timestamp` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
39+
`datetime` datetime NULL DEFAULT 0 ,
40+
`longtext` longtext NULL ,
41+
`mediumtext` mediumtext NULL ,
42+
`varchar` varchar(254) NULL ,
43+
`char` char(255) NULL ,
44+
`mediumblob` mediumblob NULL ,
45+
`blob` blob NULL ,
46+
`boolean` BOOLEAN NULL ,
47+
CONSTRAINT `TEST_TABLE_SMALLINT_BIGINT` UNIQUE KEY (`smallint`,`bigint`),
48+
CONSTRAINT `TEST_TABLE_TINYINT_REFERENCE_TABLE_TINYINT_REF` FOREIGN KEY (`tinyint`) REFERENCES `reference_table` (`tinyint_ref`) ON DELETE NO ACTION,
49+
INDEX `TEST_TABLE_TINYINT_BIGINT` (`tinyint`,`bigint`)
50+
) ENGINE=innodb DEFAULT CHARSET=utf8mb3 DEFAULT COLLATE=utf8mb3_general_ci
51+
52+
CREATE TABLE `patch_list` (
53+
`patch_id` int NOT NULL AUTO_INCREMENT COMMENT "Patch Auto Increment",
54+
`patch_name` varchar(1024) NOT NULL COMMENT "Patch Class Name",
55+
CONSTRAINT PRIMARY KEY (`patch_id`)
56+
) ENGINE=innodb DEFAULT CHARSET=utf8mb3 DEFAULT COLLATE=utf8mb3_general_ci COMMENT="List of data/schema patches"
57+
58+
'];
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
return [
9+
'test_table_one' => 'CREATE TABLE `test_table_one` (
10+
`smallint` smallint NOT NULL AUTO_INCREMENT,
11+
`varchar` varchar(254) DEFAULT NULL,
12+
PRIMARY KEY (`smallint`)
13+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3',
14+
'test_table_two' => 'CREATE TABLE `test_table_two` (
15+
`smallint` smallint NOT NULL AUTO_INCREMENT,
16+
`varchar` varchar(254) DEFAULT NULL,
17+
PRIMARY KEY (`smallint`)
18+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3',
19+
'reference_table' => 'CREATE TABLE `reference_table` (
20+
`tinyint_ref` tinyint NOT NULL AUTO_INCREMENT,
21+
`tinyint_without_padding` tinyint NOT NULL DEFAULT \'0\',
22+
`bigint_without_padding` bigint NOT NULL DEFAULT \'0\',
23+
`smallint_without_padding` smallint NOT NULL DEFAULT \'0\',
24+
`integer_without_padding` int NOT NULL DEFAULT \'0\',
25+
`smallint_with_big_padding` smallint NOT NULL DEFAULT \'0\',
26+
`smallint_without_default` smallint DEFAULT NULL,
27+
`int_without_unsigned` int DEFAULT NULL,
28+
`int_unsigned` int unsigned DEFAULT NULL,
29+
`bigint_default_nullable` bigint unsigned DEFAULT \'1\',
30+
`bigint_not_default_not_nullable` bigint unsigned NOT NULL,
31+
PRIMARY KEY (`tinyint_ref`)
32+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3',
33+
'auto_increment_test' => 'CREATE TABLE `auto_increment_test` (
34+
`int_auto_increment_with_nullable` int unsigned NOT NULL AUTO_INCREMENT,
35+
`int_disabled_auto_increment` smallint unsigned DEFAULT \'0\',
36+
UNIQUE KEY `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` (`int_auto_increment_with_nullable`)
37+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3'
38+
];
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
return [
9+
'auto_increment_test' => 'CREATE TABLE `auto_increment_test` (
10+
`int_auto_increment_with_nullable` int unsigned NOT NULL AUTO_INCREMENT,
11+
`int_disabled_auto_increment` smallint unsigned DEFAULT \'0\',
12+
UNIQUE KEY `AUTO_INCREMENT_TEST_INT_AUTO_INCREMENT_WITH_NULLABLE` (`int_auto_increment_with_nullable`)
13+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3'
14+
];

dev/tests/setup-integration/framework/Magento/TestFramework/Annotation/DataProviderFromFile.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class DataProviderFromFile
2929
SqlVersionProvider::MYSQL_8_0_VERSION => 'mysql8',
3030
SqlVersionProvider::MARIA_DB_10_4_VERSION => 'mariadb10',
3131
SqlVersionProvider::MARIA_DB_10_6_VERSION => 'mariadb106',
32+
SqlVersionProvider::MYSQL_8_0_29_VERSION => 'mysql829'
3233
];
3334

3435
/**

dev/tests/setup-integration/framework/Magento/TestFramework/TestCase/SetupTestCase.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,10 @@ private function getDbKey(): string
107107

108108
$this->dbKey = DataProviderFromFile::FALLBACK_VALUE;
109109
foreach (DataProviderFromFile::POSSIBLE_SUFFIXES as $possibleVersion => $suffix) {
110-
if (strpos($this->getDatabaseVersion(), (string)$possibleVersion) !== false) {
110+
if ($this->sqlVersionProvider->isMysqlGte8029()) {
111+
$this->dbKey = DataProviderFromFile::POSSIBLE_SUFFIXES[SqlVersionProvider::MYSQL_8_0_29_VERSION];
112+
break;
113+
} elseif (strpos($this->getDatabaseVersion(), (string)$possibleVersion) !== false) {
111114
$this->dbKey = $suffix;
112115
break;
113116
}

lib/internal/Magento/Framework/DB/Adapter/SqlVersionProvider.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ class SqlVersionProvider
2929

3030
public const MARIA_DB_10_6_VERSION = '10.6.';
3131

32+
public const MYSQL_8_0_29_VERSION = '8.0.29';
33+
3234
/**#@-*/
3335

3436
/**
@@ -120,4 +122,21 @@ private function fetchSqlVersion(string $resource): string
120122

121123
return $versionOutput[self::VERSION_VAR_NAME];
122124
}
125+
126+
/**
127+
* Check if MySQL version is greater than equal to 8.0.29
128+
*
129+
* @return bool
130+
* @throws ConnectionException
131+
*/
132+
public function isMysqlGte8029(): bool
133+
{
134+
$sqlVersion = $this->getSqlVersion();
135+
$isMariaDB = str_contains($sqlVersion, SqlVersionProvider::MARIA_DB_10_VERSION);
136+
$sqlExactVersion = $this->fetchSqlVersion(ResourceConnection::DEFAULT_CONNECTION);
137+
if (!$isMariaDB && version_compare($sqlExactVersion, '8.0.29', '>=')) {
138+
return true;
139+
}
140+
return false;
141+
}
123142
}

0 commit comments

Comments
 (0)