001package io.ebeaninternal.dbmigration.ddlgeneration.platform; 002 003import io.ebean.config.DatabaseConfig; 004import io.ebean.config.dbplatform.DatabasePlatform; 005import io.ebeaninternal.dbmigration.ddlgeneration.DdlBuffer; 006import io.ebeaninternal.dbmigration.ddlgeneration.DdlHandler; 007import io.ebeaninternal.dbmigration.ddlgeneration.DdlOptions; 008 009public class ClickHouseDdl extends PlatformDdl { 010 011 private static final String LOG_TABLE = "ENGINE = Log()"; 012 013 public ClickHouseDdl(DatabasePlatform platform) { 014 super(platform); 015 this.includeStorageEngine = true; 016 this.identitySuffix = ""; 017 this.columnNotNull = null; 018 } 019 020 @Override 021 public DdlHandler createDdlHandler(DatabaseConfig config) { 022 return new ClickHouseDdlHandler(config, this); 023 } 024 025 @Override 026 protected String convertArrayType(String logicalArrayType) { 027 return ClickHouseDbArray.logicalToNative(logicalArrayType); 028 } 029 030 /** 031 * Add an table storage engine to the create table statement. 032 */ 033 @Override 034 public void tableStorageEngine(DdlBuffer apply, String storageEngine) { 035 if (storageEngine == null) { 036 // default to Log() table but really should all be explicit (need arguments for MergeTree etc) 037 storageEngine = LOG_TABLE; 038 } 039 apply.append(" ").append(storageEngine); 040 } 041 042 @Override 043 public String alterTableAddForeignKey(DdlOptions options, WriteForeignKey request) { 044 return null; 045 } 046 047 @Override 048 public String alterTableDropForeignKey(String tableName, String fkName) { 049 return null; 050 } 051 052 @Override 053 public String tableInlineForeignKey(WriteForeignKey request) { 054 return null; 055 } 056 057 @Override 058 public String dropIndex(String indexName, String tableName, boolean concurrent) { 059 return null; 060 } 061 062 @Override 063 public String createIndex(WriteCreateIndex create) { 064 return null; 065 } 066 067 @Override 068 public String createCheckConstraint(String ckName, String checkConstraint) { 069 return null; 070 } 071 072 @Override 073 public void addTableComment(DdlBuffer apply, String tableName, String tableComment) { 074 // do nothing 075 } 076 077 @Override 078 public void addColumnComment(DdlBuffer apply, String table, String column, String comment) { 079 // do nothing 080 } 081 082 @Override 083 public boolean isInlineComments() { 084 return false; 085 } 086}