in src/main/java/com/epam/digital/data/platform/liquibase/extension/sqlgenerator/core/DdmCreateSimpleSearchConditionGenerator.java [38:82]
private StringBuilder generateIndexSql(DdmCreateSimpleSearchConditionStatement statement, String searchType, boolean changeName) {
StringBuilder buffer = new StringBuilder();
buffer.append("CREATE INDEX ");
buffer.append(DdmConstants.PREFIX_INDEX);
buffer.append(statement.getName());
buffer.append("_");
buffer.append(statement.getTable().getName());
buffer.append("_");
buffer.append(statement.getSearchColumn().getName());
if (changeName) {
buffer.append("_");
buffer.append(searchType);
}
buffer.append(" ON ");
buffer.append(statement.getTable().getName());
buffer.append("(");
boolean isColumnCastable = DdmUtils.isColumnAvailableForCasting(statement.getSearchColumn());
if (isColumnCastable) {
buffer.append("lower(cast(");
}
buffer.append(statement.getSearchColumn().getName());
if (isColumnCastable) {
buffer.append(" as varchar))");
}
if (searchType.equalsIgnoreCase(DdmConstants.ATTRIBUTE_CONTAINS) ||
searchType.equalsIgnoreCase(DdmConstants.ATTRIBUTE_STARTS_WITH) ||
searchType.equalsIgnoreCase(DdmConstants.ATTRIBUTE_STARTS_WITH_ARRAY)) {
buffer.append(" ");
if (statement.getSearchColumn().getType().equalsIgnoreCase(DdmConstants.TYPE_CHAR)) {
buffer.append("bp");
}
buffer.append(statement.getSearchColumn().getType().toLowerCase());
buffer.append("_pattern_ops");
}
buffer.append(");");
return buffer;
}