1 package edu.internet2.middleware.grouper.ext.org.apache.ddlutils.platform.mysql;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.sql.Types;
23
24 import edu.internet2.middleware.grouper.ext.org.apache.ddlutils.PlatformInfo;
25 import edu.internet2.middleware.grouper.ext.org.apache.ddlutils.platform.PlatformImplBase;
26
27
28
29
30
31
32 public class MySqlPlatform extends PlatformImplBase
33 {
34
35 public static final String DATABASENAME = "MySQL";
36
37 public static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
38
39 public static final String JDBC_DRIVER_OLD = "org.gjt.mm.mysql.Driver";
40
41 public static final String JDBC_SUBPROTOCOL = "mysql";
42
43
44
45
46 public MySqlPlatform()
47 {
48 PlatformInfo info = getPlatformInfo();
49
50 info.setMaxIdentifierLength(64);
51 info.setNullAsDefaultValueRequired(true);
52 info.setDefaultValuesForLongTypesSupported(false);
53
54 info.setNonPKIdentityColumnsSupported(false);
55
56 info.setSyntheticDefaultValueForRequiredReturned(true);
57 info.setCommentPrefix("#");
58
59 info.setDelimiterToken("`");
60
61 info.addNativeTypeMapping(Types.ARRAY, "LONGBLOB", Types.LONGVARBINARY);
62 info.addNativeTypeMapping(Types.BIT, "TINYINT(1)");
63 info.addNativeTypeMapping(Types.BLOB, "LONGBLOB", Types.LONGVARBINARY);
64 info.addNativeTypeMapping(Types.CLOB, "LONGTEXT", Types.LONGVARCHAR);
65 info.addNativeTypeMapping(Types.DISTINCT, "LONGBLOB", Types.LONGVARBINARY);
66 info.addNativeTypeMapping(Types.FLOAT, "DOUBLE", Types.DOUBLE);
67 info.addNativeTypeMapping(Types.JAVA_OBJECT, "LONGBLOB", Types.LONGVARBINARY);
68 info.addNativeTypeMapping(Types.LONGVARBINARY, "MEDIUMBLOB");
69 info.addNativeTypeMapping(Types.LONGVARCHAR, "MEDIUMTEXT");
70 info.addNativeTypeMapping(Types.NULL, "MEDIUMBLOB", Types.LONGVARBINARY);
71 info.addNativeTypeMapping(Types.NUMERIC, "DECIMAL", Types.DECIMAL);
72 info.addNativeTypeMapping(Types.OTHER, "LONGBLOB", Types.LONGVARBINARY);
73 info.addNativeTypeMapping(Types.REAL, "FLOAT");
74 info.addNativeTypeMapping(Types.REF, "MEDIUMBLOB", Types.LONGVARBINARY);
75 info.addNativeTypeMapping(Types.STRUCT, "LONGBLOB", Types.LONGVARBINARY);
76
77
78
79 info.addNativeTypeMapping(Types.TIMESTAMP, "DATETIME");
80
81 info.addNativeTypeMapping(Types.TINYINT, "SMALLINT", Types.SMALLINT);
82 info.addNativeTypeMapping("BOOLEAN", "TINYINT(1)", "BIT");
83 info.addNativeTypeMapping("DATALINK", "MEDIUMBLOB", "LONGVARBINARY");
84
85 info.setDefaultSize(Types.CHAR, 254);
86 info.setDefaultSize(Types.VARCHAR, 254);
87 info.setDefaultSize(Types.BINARY, 254);
88 info.setDefaultSize(Types.VARBINARY, 254);
89
90 setSqlBuilder(new MySqlBuilder(this));
91 setModelReader(new MySqlModelReader(this));
92 }
93
94
95
96
97 public String getName()
98 {
99 return DATABASENAME;
100 }
101 }