1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.data.pipeline.mysql.ingest.client;
19
20 import lombok.Getter;
21 import lombok.extern.slf4j.Slf4j;
22
23 import java.util.regex.Matcher;
24 import java.util.regex.Pattern;
25
26
27
28
29 @Getter
30 @Slf4j
31 public final class ServerVersion {
32
33 private static final Pattern VERSION_PATTERN = Pattern.compile("^(\\d+)\\.(\\d+)\\.(\\d+).*");
34
35 private final int major;
36
37 private final int minor;
38
39 private final int series;
40
41 public ServerVersion(final String version) {
42 Matcher matcher = VERSION_PATTERN.matcher(version);
43 if (matcher.matches()) {
44 major = Short.parseShort(matcher.group(1));
45 minor = Short.parseShort(matcher.group(2));
46 series = Short.parseShort(matcher.group(3));
47 } else {
48 log.info("Could not match MySQL server version {}", version);
49 major = 0;
50 minor = 0;
51 series = 0;
52 }
53 }
54
55
56
57
58
59
60
61
62
63 public boolean greaterThanOrEqualTo(final int major, final int minor, final int series) {
64 if (this.major < major) {
65 return false;
66 }
67 if (this.major > major) {
68 return true;
69 }
70 if (this.minor < minor) {
71 return false;
72 }
73 if (this.minor > minor) {
74 return true;
75 }
76 return this.series >= series;
77 }
78 }