apache/cassandra · error · InvalidRequestException

Column ' ' is longer than the permissible name length of…

Error message

Column '%s' is longer than the permissible name length of %d characters

What it means

CreateIndexStatement.validateCustomIndexColumnName: the custom index target column name exceeds SchemaConstants.NAME_LENGTH characters, the maximum permissible identifier length for custom index targets.

Solutions

  1. Shorten the column name to within the allowed character limit.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/java/org/apache/cassandra/cql3/statements/schema/CreateIndexStatement.java:247 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/cassandra@88fd0f6a0e (2026-09-10). Data as JSON: /api/errors/1d68c0d2a262df71. Report an issue: GitHub.

Appendix: source

Thrown at src/java/org/apache/cassandra/cql3/statements/schema/CreateIndexStatement.java:247

        return schema.withAddedOrUpdated(keyspace.withSwapped(keyspace.tables.withSwapped(newTable)));
    }

    @Override
    Set<String> clientWarnings(KeyspacesDiff diff)
    {
        if (attrs.isCustom && attrs.customClass.equals(SASIIndex.class.getName()))
            return ImmutableSet.of(SASIIndex.USAGE_WARNING);

        return ImmutableSet.of();
    }

    private void validateCustomIndexColumnName(String name)
    {
        if (!SchemaConstants.isValidCharsName(name))
            throw ire(INVALID_CHARS_CUSTOM_INDEX_TARGET, name);
        if (name.length() > SchemaConstants.NAME_LENGTH)
            throw ire(TOO_LONG_CUSTOM_INDEX_TARGET, name, SchemaConstants.NAME_LENGTH);
    }

    private void validateIndexTarget(TableMetadata table, IndexMetadata.Kind kind, IndexTarget target, IndexAttributes attrs)
    {
        ColumnMetadata column = table.getColumn(target.column);

        if (null == column)
            throw ire(COLUMN_DOES_NOT_EXIST, target.column);

        AbstractType<?> baseType = column.type.unwrap();

        boolean isNonSAIIndex = !isSAIIndex(attrs);

        // TODO: this check needs to be removed with CASSANDRA-20235
        if ((kind == IndexMetadata.Kind.CUSTOM))
            validateCustomIndexColumnName(target.column.toString());

        if (column.type.referencesDuration())

View on GitHub (pinned to 88fd0f6a0e)