17
17
use Doctrine \Deprecations \Deprecation ;
18
18
19
19
use function assert ;
20
- use function preg_match ;
21
20
use function stripos ;
21
+ use function substr ;
22
22
use function version_compare ;
23
23
24
24
/**
@@ -33,18 +33,17 @@ abstract class AbstractMySQLDriver implements VersionAwarePlatformDriver
33
33
*/
34
34
public function createDatabasePlatformForVersion ($ version )
35
35
{
36
- $ mariadb = stripos ($ version , 'mariadb ' ) !== false ;
36
+ $ mariadb = stripos ($ version , 'MariaDB ' ) !== false ;
37
37
if ($ mariadb && version_compare ($ this ->getMariaDbMysqlVersionNumber ($ version ), '10.2.7 ' , '>= ' )) {
38
38
return new MariaDb1027Platform ();
39
39
}
40
40
41
41
if (! $ mariadb ) {
42
- $ oracleMysqlVersion = $ this ->getOracleMysqlVersionNumber ($ version );
43
- if (version_compare ($ oracleMysqlVersion , '8 ' , '>= ' )) {
42
+ if (version_compare ($ version , '8.0.0 ' , '>= ' )) {
44
43
return new MySQL80Platform ();
45
44
}
46
45
47
- if (version_compare ($ oracleMysqlVersion , '5.7.9 ' , '>= ' )) {
46
+ if (version_compare ($ version , '5.7.9 ' , '>= ' )) {
48
47
return new MySQL57Platform ();
49
48
}
50
49
}
@@ -59,64 +58,19 @@ public function createDatabasePlatformForVersion($version)
59
58
return $ this ->getDatabasePlatform ();
60
59
}
61
60
62
- /**
63
- * Get a normalized 'version number' from the server string
64
- * returned by Oracle MySQL servers.
65
- *
66
- * @param string $versionString Version string returned by the driver, i.e. '5.7.10'
67
- *
68
- * @throws Exception
69
- */
70
- private function getOracleMysqlVersionNumber (string $ versionString ): string
71
- {
72
- if (
73
- preg_match (
74
- '/^(?P<major>\d+)(?:\.(?P<minor>\d+)(?:\.(?P<patch>\d+))?)?/ ' ,
75
- $ versionString ,
76
- $ versionParts ,
77
- ) === 0
78
- ) {
79
- throw Exception::invalidPlatformVersionSpecified (
80
- $ versionString ,
81
- '<major_version>.<minor_version>.<patch_version> ' ,
82
- );
83
- }
84
-
85
- $ majorVersion = $ versionParts ['major ' ];
86
- $ minorVersion = $ versionParts ['minor ' ] ?? 0 ;
87
- $ patchVersion = $ versionParts ['patch ' ] ?? null ;
88
-
89
- if ($ majorVersion === '5 ' && $ minorVersion === '7 ' ) {
90
- $ patchVersion ??= '9 ' ;
91
- }
92
-
93
- return $ majorVersion . '. ' . $ minorVersion . '. ' . $ patchVersion ;
94
- }
95
-
96
61
/**
97
62
* Detect MariaDB server version, including hack for some mariadb distributions
98
63
* that starts with the prefix '5.5.5-'
99
64
*
100
65
* @param string $versionString Version string as returned by mariadb server, i.e. '5.5.5-Mariadb-10.0.8-xenial'
101
- *
102
- * @throws Exception
103
66
*/
104
67
private function getMariaDbMysqlVersionNumber (string $ versionString ): string
105
68
{
106
- if (
107
- preg_match (
108
- '/^(?:5\.5\.5-)?(mariadb-)?(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)/i ' ,
109
- $ versionString ,
110
- $ versionParts ,
111
- ) === 0
112
- ) {
113
- throw Exception::invalidPlatformVersionSpecified (
114
- $ versionString ,
115
- '^(?:5\.5\.5-)?(mariadb-)?<major_version>.<minor_version>.<patch_version> ' ,
116
- );
69
+ if (substr ($ versionString , 0 , 6 ) === '5.5.5- ' ) {
70
+ return substr ($ versionString , 6 );
117
71
}
118
72
119
- return $ versionParts [ ' major ' ] . ' . ' . $ versionParts [ ' minor ' ] . ' . ' . $ versionParts [ ' patch ' ] ;
73
+ return $ versionString ;
120
74
}
121
75
122
76
/**
0 commit comments