{"record":{"id":"0dc81d27713df43e","repo":"apache/cassandra","slug":"cannot-set-s-on-non-regular-table-s-s","errorCode":null,"errorMessage":"Cannot set %s on non-regular table '%s.%s'","messagePattern":"Cannot set (.+?) on non-regular table '(.+?)\\.(.+?)'","errorType":"validation","errorClass":"InvalidRequestException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/cql3/statements/schema/SchemaDescriptionStatement.java","lineNumber":91,"sourceCode":"    {\n        KeyspaceMetadata keyspace = schema.getNullable(keyspaceName);\n\n        if (null == keyspace)\n            throw ire(\"Keyspace '%s' doesn't exist\", keyspaceName);\n\n        return keyspace;\n    }\n\n    protected TableMetadata validateAndGetTable(Keyspaces schema, String tableName)\n    {\n        KeyspaceMetadata keyspaceMetadata = validateAndGetKeyspace(schema);\n\n        TableMetadata tableMetadata = keyspaceMetadata.getTableOrViewNullable(tableName);\n        if (null == tableMetadata)\n            throw ire(\"Table '%s.%s' doesn't exist\", keyspaceName, tableName);\n\n        if (tableMetadata.kind != REGULAR)\n            throw ire(\"Cannot set %s on non-regular table '%s.%s'\",descriptionType.value, keyspaceName, tableName);\n\n        return tableMetadata;\n    }\n\n    protected UserType validateAndGetType(Keyspaces schema, String typeName)\n    {\n        KeyspaceMetadata keyspaceMetadata = validateAndGetKeyspace(schema);\n\n        UserType type = keyspaceMetadata.types.getNullable(bytes(typeName));\n        if (null == type)\n            throw ire(\"Type '%s.%s' doesn't exist\", keyspaceName, typeName);\n\n        return type;\n    }\n\n    protected UserType validateAndGetTypeField(Keyspaces schema,\n                                               String typeName,\n                                               FieldIdentifier fieldName)","sourceCodeStart":73,"sourceCodeEnd":109,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/cql3/statements/schema/SchemaDescriptionStatement.java#L73-L109","documentation":"Schema description statements (e.g. DESCRIBE-related security/description labeling) can only target regular tables. If the resolved TableMetadata has a kind other than REGULAR (e.g. a materialized view or virtual table), Cassandra rejects the operation with this InvalidRequestException in validateAndGetTable.","triggerScenarios":"Executing a schema description statement (e.g. security labels / description settings) against a table name that resolves to a materialized view or other non-regular table kind via validateAndGetTable.","commonSituations":"Developers passing the name of a materialized view or secondary index backing table instead of the base table; scripts that enumerate tables in a keyspace and hit views; refactoring that renamed a view to look like a table.","solutions":["Target the base REGULAR table instead of the view/index table name.","Verify the table kind first with system_schema.tables (column `kind`) before running the statement.","If the intent was to describe the view, use the appropriate view description mechanism rather than the table-based statement."],"exampleFix":"// before\nALTER ... ON myks.my_view ...\n// after\nALTER ... ON myks.base_table ...","handlingStrategy":"validation","validationCode":"// cqlsh\nSELECT keyspace_name, table_name, kind FROM system_schema.tables WHERE keyspace_name = 'myks' AND table_name = 'maybe_view';\n// only proceed if kind == 'regular'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Fully qualify base tables, never views or index backing tables, in schema-admin statements.","Filter system_schema.tables by kind='regular' in automation scripts."],"tags":["cql","schema","invalid-request"],"backgroundTag":"invalid-argument-value","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"}