Skip to content

Commit 9f18dec

Browse files
committed
Merge remote-tracking branch 'origin/ACP2E-4367' into PR_2025_12_11_muntianu
2 parents b662b4d + 8eeea01 commit 9f18dec

File tree

6 files changed

+107
-0
lines changed

6 files changed

+107
-0
lines changed

app/etc/di.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1883,6 +1883,7 @@
18831883
<item name="MySQL-8.4" xsi:type="string">^8\.4\.</item>
18841884
<item name="MySQL-5.7" xsi:type="string">^5\.7\.</item>
18851885
<item name="MariaDB-(10.2-10.6)" xsi:type="string">^10\.[2-6]\.</item>
1886+
<item name="MariaDB-(10.11)" xsi:type="string">^10\.11\.</item>
18861887
<item name="MariaDB-11.4" xsi:type="string">^11\.4\.</item>
18871888
</argument>
18881889
</arguments>

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::MARIA_DB_10_11_VERSION => 'mariadb1011',
3233
SqlVersionProvider::MYSQL_8_0_29_VERSION => 'mysql829',
3334
SqlVersionProvider::MARIA_DB_10_4_27_VERSION => 'mariadb10427',
3435
SqlVersionProvider::MARIA_DB_10_6_11_VERSION => 'mariadb10611'

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ class SqlVersionProvider
3333

3434
public const MARIA_DB_10_6_VERSION = '10.6.';
3535

36+
public const MARIA_DB_10_11_VERSION = '10.11.';
37+
3638
public const MYSQL_8_0_29_VERSION = '8.0.29';
3739

3840
public const MARIA_DB_10_6_11_VERSION = '10.6.11';
@@ -165,6 +167,7 @@ public function getMariaDbSuffixKey(): string
165167
$defaultSuffixKey = SqlVersionProvider::MARIA_DB_10_6_11_VERSION;
166168
$isMariaDB104 = str_contains($sqlVersion, SqlVersionProvider::MARIA_DB_10_4_VERSION);
167169
$isMariaDB106 = str_contains($sqlVersion, SqlVersionProvider::MARIA_DB_10_6_VERSION);
170+
$isMariaDB1011 = str_contains($sqlVersion, SqlVersionProvider::MARIA_DB_10_11_VERSION);
168171
$isMariaDB114 = str_contains($sqlVersion, SqlVersionProvider::MARIA_DB_11_4_VERSION);
169172
$sqlExactVersion = $this->fetchSqlVersion(ResourceConnection::DEFAULT_CONNECTION);
170173
if (version_compare($sqlExactVersion, '10.4.27', '>=')) {
@@ -174,6 +177,8 @@ public function getMariaDbSuffixKey(): string
174177
return SqlVersionProvider::MARIA_DB_10_6_11_VERSION;
175178
} elseif ($isMariaDB114) {
176179
return SqlVersionProvider::MARIA_DB_10_6_11_VERSION;
180+
} elseif ($isMariaDB1011) {
181+
return SqlVersionProvider::MARIA_DB_10_11_VERSION;
177182
}
178183
}
179184
return $defaultSuffixKey;
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
<?php
2+
/**
3+
* Copyright 2025 Adobe
4+
* All Rights Reserved.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Framework\DB\Test\Unit\Adapter;
9+
10+
use Magento\Framework\App\ResourceConnection;
11+
use Magento\Framework\DB\Adapter\AdapterInterface;
12+
use Magento\Framework\DB\Adapter\SqlVersionProvider;
13+
use PHPUnit\Framework\MockObject\MockObject;
14+
use PHPUnit\Framework\TestCase;
15+
16+
class SqlVersionProviderTest extends TestCase
17+
{
18+
/**
19+
* @var ResourceConnection|MockObject
20+
*/
21+
private ResourceConnection $resourceConnection;
22+
23+
/**
24+
* @var SqlVersionProvider
25+
*/
26+
private SqlVersionProvider $sqlVersionProvider;
27+
28+
protected function setUp(): void
29+
{
30+
$this->resourceConnection = $this->createMock(ResourceConnection::class);
31+
$this->sqlVersionProvider = new SqlVersionProvider(
32+
$this->resourceConnection,
33+
[
34+
'^8\.0\.',
35+
'^8\.4\.',
36+
'^5\.7\.',
37+
'^10\.(?:[2-6]|11)\.',
38+
'^11\.4\.'
39+
]
40+
);
41+
}
42+
43+
/**
44+
* @dataProvider mariaDbSuffixKeyDataProvider
45+
*/
46+
public function testGetMariaDbSuffixKey(
47+
string $sqlExactVersion,
48+
string $expectedSuffixKey
49+
): void {
50+
$adapter = $this->createMock(AdapterInterface::class);
51+
$adapter->expects($this->exactly(2))->method('fetchPairs')->willReturn(
52+
['version' => $sqlExactVersion]
53+
);
54+
$this->resourceConnection->expects($this->any())
55+
->method('getConnection')
56+
->willReturn($adapter);
57+
58+
$this->assertSame(
59+
$expectedSuffixKey,
60+
$this->sqlVersionProvider->getMariaDbSuffixKey()
61+
);
62+
}
63+
64+
/**
65+
* Covers:
66+
* - default fallback
67+
* - 10.4.x branch
68+
* - 10.6.x branch
69+
* - 11.4.x branch mapping to 10.6.11 suffix
70+
* - 10.11.x branch
71+
*/
72+
public static function mariaDbSuffixKeyDataProvider(): array
73+
{
74+
return [
75+
'version below threshold uses default suffix (10.6.11)' => [
76+
'sqlExactVersion' => '10.2.44',
77+
'expectedSuffixKey' => SqlVersionProvider::MARIA_DB_10_6_11_VERSION,
78+
],
79+
'MariaDB 10.4.x at/above 10.4.27 uses 10.4.27 suffix' => [
80+
'sqlExactVersion' => '10.4.27',
81+
'expectedSuffixKey' => SqlVersionProvider::MARIA_DB_10_4_27_VERSION,
82+
],
83+
'MariaDB 10.6.x at/above 10.4.27 uses 10.6.11 suffix' => [
84+
'sqlExactVersion' => '10.6.11',
85+
'expectedSuffixKey' => SqlVersionProvider::MARIA_DB_10_6_11_VERSION,
86+
],
87+
'MariaDB 11.4.x at/above threshold maps to 10.6.11 suffix' => [
88+
'sqlExactVersion' => '11.4.3',
89+
'expectedSuffixKey' => SqlVersionProvider::MARIA_DB_10_6_11_VERSION,
90+
],
91+
'MariaDB 10.11.x at/above threshold uses 10.11 suffix' => [
92+
'sqlExactVersion' => '10.11.6',
93+
'expectedSuffixKey' => SqlVersionProvider::MARIA_DB_10_11_VERSION,
94+
],
95+
];
96+
}
97+
}

lib/internal/Magento/Framework/Setup/Declaration/Schema/Db/MySQL/DbSchemaWriter.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,7 @@ private function isNeedToSplitSql() : bool
354354
{
355355
return str_contains($this->sqlVersionProvider->getSqlVersion(), SqlVersionProvider::MARIA_DB_10_4_VERSION) ||
356356
str_contains($this->sqlVersionProvider->getSqlVersion(), SqlVersionProvider::MARIA_DB_10_6_VERSION) ||
357+
str_contains($this->sqlVersionProvider->getSqlVersion(), SqlVersionProvider::MARIA_DB_10_11_VERSION) ||
357358
str_contains($this->sqlVersionProvider->getSqlVersion(), SqlVersionProvider::MARIA_DB_11_4_VERSION);
358359
}
359360

lib/internal/Magento/Framework/Setup/Declaration/Schema/Dto/Factories/Table.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ class Table implements FactoryInterface
5050
private static array $defaultCharset = [
5151
'10.4.' => 'utf8mb4',
5252
'10.6.' => 'utf8mb4',
53+
'10.11.' => 'utf8mb4',
5354
'11.4.' => 'utf8mb4',
5455
'mysql_8_29' => 'utf8mb4',
5556
'default' => 'utf8'
@@ -61,6 +62,7 @@ class Table implements FactoryInterface
6162
private static array $defaultCollation = [
6263
'10.4.' => 'utf8mb4_general_ci',
6364
'10.6.' => 'utf8mb4_general_ci',
65+
'10.11.' => 'utf8mb4_general_ci',
6466
'11.4.' => 'utf8mb4_general_ci',
6567
'mysql_8_29' => 'utf8mb4_general_ci',
6668
'default' => 'utf8_general_ci'

0 commit comments

Comments
 (0)