public void createIndex(MIndexTable index) throws SQLException { log.info(index.toString()); final String[] indexColNames = index.getColumnNames(); if (indexColNames.length <= 0) { throw new AdempiereException("No Index columns specified"); } // Arrays.sort(indexColNames); DBIndex dbIndex = getDBIndex(index.getTableName(), index.getName(), index.get_TrxName()); // DB Index not found => Create new if (dbIndex == null) { executeDDL(index.getDDL(), index.get_TrxName()); } // DB Index found but modified => Drop and recreate else if ((index.isUnique() != dbIndex.isUnique) || !equalsIgnoreCase(index.getWhereClause(), dbIndex.filterCondition) || !equalsIgnoreCase(dbIndex.columnNames, indexColNames)) { executeDDL( "DROP INDEX IF EXISTS " + dbIndex.name, index .get_TrxName()); // metas-ts:adding "IF EXISTS" - solves some SQL migration script // errors executeDDL(index.getDDL(), index.get_TrxName()); } }