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