{"record":{"id":"19a041a568163a73","repo":"apache/cassandra","slug":"column-s-contains-non-alphanumeric-underscore-c","errorCode":null,"errorMessage":"Column '%s' contains non-alphanumeric-underscore characters","messagePattern":"Column '(.+?)' contains non-alphanumeric-underscore characters","errorType":"validation","errorClass":"InvalidRequestException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/cql3/statements/schema/CreateIndexStatement.java","lineNumber":245,"sourceCode":"        TableMetadata newTable = table.withSwapped(table.indexes.with(index));\n        newTable.validate();\n\n        return schema.withAddedOrUpdated(keyspace.withSwapped(keyspace.tables.withSwapped(newTable)));\n    }\n\n    @Override\n    Set<String> clientWarnings(KeyspacesDiff diff)\n    {\n        if (attrs.isCustom && attrs.customClass.equals(SASIIndex.class.getName()))\n            return ImmutableSet.of(SASIIndex.USAGE_WARNING);\n\n        return ImmutableSet.of();\n    }\n\n    private void validateCustomIndexColumnName(String name)\n    {\n        if (!SchemaConstants.isValidCharsName(name))\n            throw ire(INVALID_CHARS_CUSTOM_INDEX_TARGET, name);\n        if (name.length() > SchemaConstants.NAME_LENGTH)\n            throw ire(TOO_LONG_CUSTOM_INDEX_TARGET, name, SchemaConstants.NAME_LENGTH);\n    }\n\n    private void validateIndexTarget(TableMetadata table, IndexMetadata.Kind kind, IndexTarget target, IndexAttributes attrs)\n    {\n        ColumnMetadata column = table.getColumn(target.column);\n\n        if (null == column)\n            throw ire(COLUMN_DOES_NOT_EXIST, target.column);\n\n        AbstractType<?> baseType = column.type.unwrap();\n\n        boolean isNonSAIIndex = !isSAIIndex(attrs);\n\n        // TODO: this check needs to be removed with CASSANDRA-20235\n        if ((kind == IndexMetadata.Kind.CUSTOM))\n            validateCustomIndexColumnName(target.column.toString());","sourceCodeStart":227,"sourceCodeEnd":263,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/cql3/statements/schema/CreateIndexStatement.java#L227-L263","documentation":"CreateIndexStatement.validateCustomIndexColumnName: the explicit column name given for a custom index target contains characters outside the allowed alphanumeric/underscore set, which custom index target naming requires.","triggerScenarios":"Thrown at src/java/org/apache/cassandra/cql3/statements/schema/CreateIndexStatement.java:245 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Rename the column or quote a valid identifier containing only alphanumerics and underscores."],"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"}