OtterMind/Chat2DB · error · IllegalArgumentException

Oscar index requires at least one named column

Error message

Oscar index requires at least one named column

What it means

Error "Oscar index requires at least one named column" thrown in OtterMind/Chat2DB.

Source

Thrown at chat2db-community-server/chat2db-community-plugins/chat2db-community-oscar/src/main/java/ai/chat2db/plugin/oscar/enums/type/OscarIndexTypeEnum.java:84

            return StringUtils.join(buildDropIndex(tableIndex), SQLConstants.SEMICOLON_LINE_SEPARATOR,
                    buildIndexScript(tableIndex));
        }
        if (EditStatusEnum.ADD.name().equals(tableIndex.getEditStatus())) {
            return buildIndexScript(tableIndex);
        }
        return SQLConstants.EMPTY;
    }

    private String buildDropIndex(TableIndex tableIndex) {
        if (PRIMARY_KEY.getName().equals(tableIndex.getType())) {
            return SQLConstants.ALTER_TABLE_SQL_PREFIX + tableName(tableIndex) + SQLConstants.DROP_PRIMARY_KEY_SQL;
        }
        return SQLConstants.DROP_INDEX_SQL_PREFIX + indexName(tableIndex);
    }

    private String buildIndexColumn(TableIndex tableIndex, boolean includeSort) {
        if (CollectionUtils.isEmpty(tableIndex.getColumnList())) {
            throw new IllegalArgumentException("Oscar index requires at least one named column");
        }
        StringBuilder script = new StringBuilder(SQLConstants.OPEN_PARENTHESIS);
        int columnCount = 0;
        for (TableIndexColumn column : tableIndex.getColumnList()) {
            if (column == null || StringUtils.isBlank(column.getColumnName())) {
                continue;
            }
            script.append(OscarUtils.quoteIdentifierIgnoreCase(column.getColumnName()));
            if (includeSort && StringUtils.isNotBlank(column.getAscOrDesc())) {
                script.append(SQLConstants.SPACE).append(OscarSqlGuards.requireSortOrder(column.getAscOrDesc()));
            }
            script.append(SQLConstants.COMMA);
            columnCount++;
        }
        if (columnCount == 0) {
            throw new IllegalArgumentException("Oscar index requires at least one named column");
        }
        script.deleteCharAt(script.length() - 1);

View on GitHub (pinned to 5ee1e990e7)

Solutions

  1. Add at least one named column to the index definition.

When it happens

Trigger: An Oscar index was defined without any column.

Common situations: See trigger scenarios.


AI-assisted analysis of OtterMind/Chat2DB@5ee1e990e7 (2026-08-14). Data as JSON: /api/errors/1fc5b3f689dbb085. Report an issue: GitHub.