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}