{"record":{"id":"2a1c9658195899e9","repo":"apache/cassandra","slug":"duplicate-column-s-in-index-target-list","errorCode":null,"errorMessage":"Duplicate column '%s' in index target list","messagePattern":"Duplicate column '(.+?)' in index target list","errorType":"validation","errorClass":"InvalidRequestException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/cql3/statements/schema/CreateIndexStatement.java","lineNumber":201,"sourceCode":"                                                  ? String.format(\"on table %s\", table.name)\n                                                  : String.format(\"%s on table %s\", indexName, table.name),\n                                                  false,\n                                                  state);\n\n        List<IndexTarget> indexTargets = Lists.newArrayList(transform(rawIndexTargets, t -> t.prepare(table)));\n\n        if (indexTargets.isEmpty() && !attrs.isCustom)\n            throw ire(CUSTOM_CREATE_WITHOUT_COLUMN);\n\n        if (indexTargets.size() > 1)\n        {\n            if (!attrs.isCustom)\n                throw ire(CUSTOM_MULTIPLE_COLUMNS);\n\n            Set<ColumnIdentifier> columns = new HashSet<>();\n            for (IndexTarget target : indexTargets)\n                if (!columns.add(target.column))\n                    throw ire(DUPLICATE_TARGET_COLUMN, target.column);\n        }\n\n        IndexMetadata.Kind kind = attrs.isCustom ? IndexMetadata.Kind.CUSTOM : IndexMetadata.Kind.COMPOSITES;\n\n        indexTargets.forEach(t -> validateIndexTarget(table, kind, t, attrs));\n\n        String name = null == indexName ? generateIndexName(keyspace, indexTargets) : indexName;\n\n        Map<String, String> options = attrs.isCustom ? attrs.getOptions() : Collections.emptyMap();\n\n        IndexMetadata index = IndexMetadata.fromIndexTargets(indexTargets, name, kind, options);\n\n        // check to disallow creation of an index which duplicates an existing one in all but name\n        IndexMetadata equalIndex = tryFind(table.indexes, i -> i.equalsWithoutName(index)).orNull();\n        if (null != equalIndex)\n        {\n            if (ifNotExists)\n                return schema;","sourceCodeStart":183,"sourceCodeEnd":219,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/cql3/statements/schema/CreateIndexStatement.java#L183-L219","documentation":"Thrown while applying CREATE INDEX when the prepared list of IndexTargets contains the same column more than once. The duplicate arises from the raw target list given in the statement (rawIndexTargets), and the request is rejected before any index metadata is built.","triggerScenarios":"Thrown at src/java/org/apache/cassandra/cql3/statements/schema/CreateIndexStatement.java:201 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Remove the duplicate column from the index target list."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}