{"record":{"id":"1fc5b3f689dbb085","repo":"OtterMind/Chat2DB","slug":"oscar-index-requires-at-least-one-named-column","errorCode":null,"errorMessage":"Oscar index requires at least one named column","messagePattern":"Oscar index requires at least one named column","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"chat2db-community-server/chat2db-community-plugins/chat2db-community-oscar/src/main/java/ai/chat2db/plugin/oscar/enums/type/OscarIndexTypeEnum.java","lineNumber":84,"sourceCode":"            return StringUtils.join(buildDropIndex(tableIndex), SQLConstants.SEMICOLON_LINE_SEPARATOR,\n                    buildIndexScript(tableIndex));\n        }\n        if (EditStatusEnum.ADD.name().equals(tableIndex.getEditStatus())) {\n            return buildIndexScript(tableIndex);\n        }\n        return SQLConstants.EMPTY;\n    }\n\n    private String buildDropIndex(TableIndex tableIndex) {\n        if (PRIMARY_KEY.getName().equals(tableIndex.getType())) {\n            return SQLConstants.ALTER_TABLE_SQL_PREFIX + tableName(tableIndex) + SQLConstants.DROP_PRIMARY_KEY_SQL;\n        }\n        return SQLConstants.DROP_INDEX_SQL_PREFIX + indexName(tableIndex);\n    }\n\n    private String buildIndexColumn(TableIndex tableIndex, boolean includeSort) {\n        if (CollectionUtils.isEmpty(tableIndex.getColumnList())) {\n            throw new IllegalArgumentException(\"Oscar index requires at least one named column\");\n        }\n        StringBuilder script = new StringBuilder(SQLConstants.OPEN_PARENTHESIS);\n        int columnCount = 0;\n        for (TableIndexColumn column : tableIndex.getColumnList()) {\n            if (column == null || StringUtils.isBlank(column.getColumnName())) {\n                continue;\n            }\n            script.append(OscarUtils.quoteIdentifierIgnoreCase(column.getColumnName()));\n            if (includeSort && StringUtils.isNotBlank(column.getAscOrDesc())) {\n                script.append(SQLConstants.SPACE).append(OscarSqlGuards.requireSortOrder(column.getAscOrDesc()));\n            }\n            script.append(SQLConstants.COMMA);\n            columnCount++;\n        }\n        if (columnCount == 0) {\n            throw new IllegalArgumentException(\"Oscar index requires at least one named column\");\n        }\n        script.deleteCharAt(script.length() - 1);","sourceCodeStart":66,"sourceCodeEnd":102,"githubUrl":"https://github.com/OtterMind/Chat2DB/blob/5ee1e990e73fbcae1969dc554be254fedb3ab888/chat2db-community-server/chat2db-community-plugins/chat2db-community-oscar/src/main/java/ai/chat2db/plugin/oscar/enums/type/OscarIndexTypeEnum.java#L66-L102","documentation":"Error \"Oscar index requires at least one named column\" thrown in OtterMind/Chat2DB.","triggerScenarios":"An Oscar index was defined without any column.","commonSituations":"See trigger scenarios.","solutions":["Add at least one named column to the index definition."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5ee1e990e73fbcae1969dc554be254fedb3ab888","analyzedAt":"2026-08-14T07:05:03.077Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}