001package com.avaje.ebean.config.dbplatform;
002
003import com.avaje.ebean.config.PersistBatch;
004import com.avaje.ebean.dbmigration.ddlgeneration.platform.MsSqlServerDdl;
005
006import java.sql.Types;
007
008/**
009 * Microsoft SQL Server 2005 specific platform.
010 * <p>
011 * <ul>
012 * <li>supportsGetGeneratedKeys = true</li>
013 * <li>Uses LIMIT OFFSET clause</li>
014 * <li>Uses [ & ] for quoted identifiers</li>
015 * </ul>
016 * </p>
017 */
018public class MsSqlServer2005Platform extends DatabasePlatform {
019
020  public MsSqlServer2005Platform() {
021    super();
022    this.name = "mssqlserver2005";
023    // effectively disable persistBatchOnCascade mode for SQL Server
024    // due to lack of support for getGeneratedKeys in batch mode
025    this.persistBatchOnCascade = PersistBatch.NONE;
026    this.idInExpandedForm = true;
027    this.selectCountWithAlias = true;
028    this.sqlLimiter = new MsSqlServer2005SqlLimiter();
029    this.platformDdl = new MsSqlServerDdl(this);
030    this.dbIdentity.setIdType(IdType.IDENTITY);
031    this.dbIdentity.setSupportsGetGeneratedKeys(true);
032    this.dbIdentity.setSupportsIdentity(true);
033
034    this.openQuote = "[";
035    this.closeQuote = "]";
036
037    dbTypeMap.put(Types.BOOLEAN, new DbType("bit default 0"));
038
039    dbTypeMap.put(Types.INTEGER, new DbType("integer", false));
040    dbTypeMap.put(Types.BIGINT, new DbType("numeric", 19));
041    dbTypeMap.put(Types.REAL, new DbType("float(16)"));
042    dbTypeMap.put(Types.DOUBLE, new DbType("float(32)"));
043    dbTypeMap.put(Types.TINYINT, new DbType("smallint"));
044    dbTypeMap.put(Types.DECIMAL, new DbType("numeric", 28));
045
046    dbTypeMap.put(Types.BLOB, new DbType("image"));
047    dbTypeMap.put(Types.CLOB, new DbType("text"));
048    dbTypeMap.put(Types.LONGVARBINARY, new DbType("image"));
049    dbTypeMap.put(Types.LONGVARCHAR, new DbType("text"));
050
051    dbTypeMap.put(Types.DATE, new DbType("date"));
052    dbTypeMap.put(Types.TIME, new DbType("time"));
053    dbTypeMap.put(Types.TIMESTAMP, new DbType("datetime2"));
054
055  }
056
057}