001package io.ebeaninternal.dbmigration.ddlgeneration.platform; 002 003import io.ebean.config.dbplatform.DatabasePlatform; 004import io.ebeaninternal.dbmigration.ddlgeneration.DdlBuffer; 005 006import java.io.IOException; 007 008public class HanaColumnStoreDdl extends AbstractHanaDdl { 009 010 public HanaColumnStoreDdl(DatabasePlatform platform) { 011 super(platform); 012 this.createTable = "create column table"; 013 } 014 015 @Override 016 public String createIndex(WriteCreateIndex create) { 017 final String[] columns = create.getColumns(); 018 if (columns == null || columns.length == 0) { 019 return "-- cannot create index: no columns given"; 020 } 021 if (columns.length == 1) { 022 return "-- explicit index \"" + create.getIndexName() + "\" for single column \"" + columns[0] + "\" of table \"" + create.getTableName() 023 + "\" is not necessary"; 024 } 025 026 StringBuilder buffer = new StringBuilder(); 027 buffer.append("create inverted hash index ").append(maxConstraintName(create.getIndexName())).append(" on ").append(create.getTableName()); 028 appendColumns(columns, buffer); 029 return buffer.toString(); 030 } 031 032 @Override 033 public String dropIndex(String indexName, String tableName, boolean concurrent) { 034 DdlBuffer buffer = new BaseDdlBuffer(null); 035 try { 036 buffer.append("delimiter $$").newLine(); 037 buffer.append("do").newLine(); 038 buffer.append("begin").newLine(); 039 buffer.append("declare exit handler for sql_error_code 261 begin end").endOfStatement(); 040 buffer.append("exec '").append(dropIndexIfExists).append(maxConstraintName(indexName)).append("'") 041 .endOfStatement(); 042 buffer.append("end").endOfStatement(); 043 buffer.append("$$"); 044 return buffer.getBuffer(); 045 } catch (IOException e) { 046 throw new RuntimeException(e); 047 } 048 } 049 050}