@@ -24,18 +24,27 @@ public ServerVersion(ReadOnlySpan<byte> versionString)
24
24
Version = new Version ( major , minor , build ) ;
25
25
26
26
// check for MariaDB version appended to a fake MySQL version
27
- if ( versionString . Length != 0 && versionString [ 0 ] == 0x2D && versionString . IndexOf ( MariaDb ) != - 1 )
27
+ if ( versionString . Length != 0 && versionString [ 0 ] == 0x2D )
28
28
{
29
29
versionString = versionString . Slice ( 1 ) ;
30
- if ( Utf8Parser . TryParse ( versionString , out major , out bytesConsumed ) && versionString [ bytesConsumed ] == 0x2E )
30
+ var mariaDbIndex = versionString . IndexOf ( MariaDb ) ;
31
+ if ( mariaDbIndex != - 1 )
31
32
{
32
- versionString = versionString . Slice ( bytesConsumed + 1 ) ;
33
- if ( Utf8Parser . TryParse ( versionString , out minor , out bytesConsumed ) && versionString [ bytesConsumed ] == 0x2E )
33
+ var totalBytesRead = 0 ;
34
+ if ( Utf8Parser . TryParse ( versionString , out major , out bytesConsumed ) && versionString [ bytesConsumed ] == 0x2E )
34
35
{
35
36
versionString = versionString . Slice ( bytesConsumed + 1 ) ;
36
- if ( Utf8Parser . TryParse ( versionString , out build , out bytesConsumed ) && versionString [ bytesConsumed ] == 0x2D )
37
+ totalBytesRead += bytesConsumed + 1 ;
38
+ if ( Utf8Parser . TryParse ( versionString , out minor , out bytesConsumed ) && versionString [ bytesConsumed ] == 0x2E )
37
39
{
38
- MariaDbVersion = new Version ( major , minor , build ) ;
40
+ versionString = versionString . Slice ( bytesConsumed + 1 ) ;
41
+ totalBytesRead += bytesConsumed + 1 ;
42
+ if ( Utf8Parser . TryParse ( versionString , out build , out bytesConsumed ) && versionString [ bytesConsumed ] == 0x2D )
43
+ {
44
+ totalBytesRead += bytesConsumed ;
45
+ if ( totalBytesRead == mariaDbIndex )
46
+ MariaDbVersion = new Version ( major , minor , build ) ;
47
+ }
39
48
}
40
49
}
41
50
}
@@ -46,6 +55,6 @@ public ServerVersion(ReadOnlySpan<byte> versionString)
46
55
public Version Version { get ; }
47
56
public Version MariaDbVersion { get ; }
48
57
49
- static ReadOnlySpan < byte > MariaDb => new byte [ ] { 0x2D , 0x4D , 0x61 , 0x72 , 0x69 , 0x61 , 0x44 , 0x42 , 0x2D } ; // -MariaDB-
58
+ static ReadOnlySpan < byte > MariaDb => new byte [ ] { 0x2D , 0x4D , 0x61 , 0x72 , 0x69 , 0x61 , 0x44 , 0x42 } ; // -MariaDB
50
59
}
51
60
}
0 commit comments