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}