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