001package io.ebean.config.dbplatform.clickhouse;
002
003import io.ebean.annotation.Platform;
004import io.ebean.config.dbplatform.DatabasePlatform;
005import io.ebean.config.dbplatform.DbPlatformType;
006import io.ebean.config.dbplatform.DbType;
007import io.ebean.config.dbplatform.IdType;
008
009import java.sql.Types;
010
011public class ClickHousePlatform extends DatabasePlatform {
012
013  public ClickHousePlatform() {
014    super();
015    this.platform = Platform.CLICKHOUSE;
016    //this.dbEncrypt =
017    //this.historySupport =
018    //this.exceptionTranslator =
019    this.nativeUuidType = true;
020    this.dbDefaultValue.setNow("now()");
021    this.dbDefaultValue.setFalse("0");
022    this.dbDefaultValue.setTrue("1");
023
024    this.dbIdentity.setIdType(IdType.IDENTITY);
025    this.dbIdentity.setSupportsGetGeneratedKeys(false);
026    this.dbIdentity.setSupportsSequence(false);
027    this.dbIdentity.setSupportsIdentity(true);
028
029    this.booleanDbType = Types.INTEGER;
030    dbTypeMap.put(DbType.BOOLEAN, new DbPlatformType("UInt8"));
031    // using unsigned as default types ...
032    dbTypeMap.put(DbType.TINYINT, new DbPlatformType("UInt8", false));
033    dbTypeMap.put(DbType.SMALLINT, new DbPlatformType("UInt16", false));
034    dbTypeMap.put(DbType.INTEGER, new DbPlatformType("UInt32", false));
035    dbTypeMap.put(DbType.BIGINT, new DbPlatformType("UInt64", false));
036    dbTypeMap.put(DbType.DECIMAL, new DbPlatformType("Decimal", 16, 3));
037    dbTypeMap.put(DbType.DOUBLE, new DbPlatformType("Float64", false));
038    dbTypeMap.put(DbType.DATE, new DbPlatformType("Date", false));
039    dbTypeMap.put(DbType.TIMESTAMP, new DbPlatformType("DateTime", false));
040    dbTypeMap.put(DbType.LOCALDATETIME, new DbPlatformType("DateTime", false));
041    dbTypeMap.put(DbType.VARCHAR, new DbPlatformType("String", false));
042    dbTypeMap.put(DbType.LONGVARCHAR, new DbPlatformType("String", false));
043    dbTypeMap.put(DbType.CLOB, new DbPlatformType("String", false));
044    dbTypeMap.put(DbType.JSONVARCHAR, new DbPlatformType("String", false));
045    dbTypeMap.put(DbType.UUID, new DbPlatformType("UUID", false));
046    dbTypeMap.put(DbType.INET, new DbPlatformType("String", false));
047    dbTypeMap.put(DbType.CIDR, new DbPlatformType("String", false));
048  }
049
050  @Override
051  public boolean isNativeArrayType() {
052    return true;
053  }
054
055}