1 24 package org.riotfamily.revolt.dialect; 25 26 import org.riotfamily.revolt.Script; 27 import org.riotfamily.revolt.definition.Column; 28 import org.riotfamily.revolt.definition.Index; 29 import org.riotfamily.revolt.support.TypeMap; 30 31 35 public class MySqlDialect extends Sql92Dialect { 36 37 protected void registerTypes() { 38 registerType(TypeMap.BIT, "TINYINT(1)"); 39 registerType(TypeMap.TINYINT, "SMALLINT"); 40 registerType(TypeMap.SMALLINT, "SMALLINT"); 41 registerType(TypeMap.INTEGER, "INTEGER"); 42 registerType(TypeMap.BIGINT, "BIGINT"); 43 registerType(TypeMap.FLOAT, "FLOAT"); 44 registerType(TypeMap.REAL, "REAL"); 45 registerType(TypeMap.DOUBLE, "DOUBLE"); 46 registerType(TypeMap.NUMERIC, "NUMERIC"); 47 registerType(TypeMap.DECIMAL, "DECIMAL"); 48 registerType(TypeMap.CHAR, "CHAR", true); 49 registerType(TypeMap.VARCHAR, "VARCHAR", true); 50 registerType(TypeMap.LONGVARCHAR, "TEXT"); 51 registerType(TypeMap.DATE, "DATE"); 52 registerType(TypeMap.TIME, "TIME"); 53 registerType(TypeMap.TIMESTAMP, "TIMESTAMP"); 54 registerType(TypeMap.BINARY, "BINARY", true); 55 registerType(TypeMap.VARBINARY, "VARBINARY", true); 56 registerType(TypeMap.LONGVARBINARY, "VARBINARY"); 57 registerType(TypeMap.BLOB, "BLOB"); 58 registerType(TypeMap.CLOB, "TEXT"); 59 } 60 61 public boolean supports(String databaseProductName, 62 int majorVersion, int minorVersion) { 63 64 return "MySQL".equals(databaseProductName); 65 } 66 67 protected void addColumnDefinition(Script sql, Column column) { 68 super.addColumnDefinition(sql, column); 69 if (column.isAutoIncrement()) { 70 sql.append("AUTO_INCREMENT"); 71 } 72 } 73 74 public Script createAutoIncrementSequence(String name) { 75 return null; 76 } 77 78 public Script renameTable(String name, String renameTo) { 79 return alterTable(name).append("RENAME TO").append(quote(renameTo)); 80 } 81 82 public Script renameColumn(String table, String name, String renameTo) { 83 return alterTable(table).append("CHANGE COLUMN").append(name) 84 .append(renameTo); 85 } 86 87 public Script modifyColumn(String table, Column column) { 88 Script sql = alterTable(table).append("CHANGE COLUMN"); 89 addColumnDefinition(sql, column); 90 return sql; 91 } 92 93 public Script createIndex(String table, Index index) { 94 Script sql = alterTable(table).append("ADD INDEX").append(index.getName()); 95 addColumnNames(sql, index.getColumns()); 96 return sql; 97 } 98 99 public Script dropIndex(String table, String name) { 100 return alterTable(table).append("DROP INDEX").append(name); 101 } 102 103 protected String convertBackticksToIdentifierDelimiter(String s) { 104 return s; 105 } 106 } 107 | Popular Tags |