private StringBuilder generateIndexSql()

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;
    }