{"record":{"id":"287e50bcb867d15b","repo":"apache/cassandra","slug":"unknown-column-columns-i-name-tostring","errorCode":null,"errorMessage":"Unknown column \" + columns[i].name.toString()","messagePattern":"Unknown column \" \\+ columns\\[i\\]\\.name\\.toString\\(\\)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/db/virtual/AccordDebugKeyspace.java","lineNumber":2031,"sourceCode":"\n        @Override\n        protected void collect(PartitionsCollector collector)\n        {\n            throw new UnsupportedOperationException(COMMAND_STORE_OPS + \" is a write-only table\");\n        }\n\n        @Override\n        protected void applyRowUpdate(Object[] partitionKeys, Object[] clusteringKeys, ColumnMetadata[] columns, Object[] values)\n        {\n            int commandStoreId = (Integer) partitionKeys[0];\n\n            CommandStoreOp op = null;\n            String param = null;\n            for (int i = 0 ; i < columns.length ; ++i)\n            {\n                switch (columns[i].name.toString())\n                {\n                    default: throw new IllegalArgumentException(\"Unknown column \" + columns[i].name.toString());\n                    case \"op\":\n                        op = tryParse(values[i], true, CommandStoreOp.class, CommandStoreOp::valueOf);\n                        break;\n                    case \"param\":\n                        param = (String) values[i];\n                        break;\n                }\n            }\n\n            if (op == null)\n                throw new IllegalArgumentException(\"Must specify 'op'\");\n\n            final AccordService accord = (AccordService) AccordService.unsafeInstance();\n            final Node node = accord.node();\n            final Function<CommandStore, AsyncResult<?>> function;\n            Supplier<AsyncResult<?>> allFunction = null;\n            switch (op)\n            {","sourceCodeStart":2013,"sourceCodeEnd":2049,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/db/virtual/AccordDebugKeyspace.java#L2013-L2049","documentation":"When parsing an INSERT into accord_command_store_ops, applyRowUpdate switches on each supplied column name and throws IllegalArgumentException for any column other than 'op' or 'param'. The virtual table's write schema only understands these two columns.","triggerScenarios":"INSERTing a row into system_views.accord_command_store_ops with a column name not in {op, param}, e.g. misspelled 'param', or reusing columns valid on other accord debug tables (like txn_id or depth).","commonSituations":"Copy-pasting an INSERT template from accord_txn_ops (whose columns differ) into command_store_ops; typos like 'operation' or 'paramater'; schema assumptions after a Cassandra version upgrade changed the table columns.","solutions":["Use only the columns 'op' and 'param' in the INSERT.","Check the exact column names with `DESCRIBE system_views.accord_command_store_ops;`.","Fix the typo/adjust the query for the specific op table being written."],"exampleFix":"// before\nINSERT INTO system_views.accord_command_store_ops (command_store_id, operation) VALUES (0, 'REPLAY');\n// after\nINSERT INTO system_views.accord_command_store_ops (command_store_id, op) VALUES (0, 'REPLAY');","handlingStrategy":"validation","validationCode":"Set<String> allowed = Set.of(\"op\", \"param\");\nfor (String col : insertedColumns)\n    if (!allowed.contains(col))\n        throw new IllegalArgumentException(\"accord_command_store_ops only accepts columns \" + allowed + \", got \" + col);","typeGuard":null,"tryCatchPattern":"try {\n    session.execute(insert);\n} catch (InvalidQueryException e) {\n    if (e.getMessage().startsWith(\"Unknown column\")) {\n        // re-derive column list via DESCRIBE system_views.accord_command_store_ops\n    }\n}","preventionTips":["Run `DESCRIBE system_views.accord_command_store_ops;` before writing.","Do not reuse INSERT templates across different accord debug tables.","Watch for schema changes between Cassandra versions."],"tags":["cql-insert","unknown-column","virtual-table","accord-debug"],"backgroundTag":"schema-validation-failed","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"}