{"record":{"id":"368ab47a3eb0f69b","repo":"apache/cassandra","slug":"unknown-field-s-in-value-of-user-defined-type-368ab4","errorCode":null,"errorMessage":"Unknown field '%s' in value of user defined type %s","messagePattern":"Unknown field '(.+?)' in value of user defined type (.+?)","errorType":"validation","errorClass":"InvalidRequestException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/cql3/selection/Selectable.java","lineNumber":1170,"sourceCode":"                                              AbstractType<?> expectedType,\n                                              List<ColumnMetadata> defs,\n                                              VariableSpecifications boundNames)\n        {\n            UserType ut = (UserType) expectedType;\n            Map<FieldIdentifier, Factory> factories = new LinkedHashMap<>(ut.size());\n\n            for (Pair<Selectable.Raw, Selectable.Raw> raw : raws)\n            {\n                if (!(raw.left instanceof RawIdentifier))\n                    throw invalidRequest(\"%s is not a valid field identifier of type %s \",\n                                         raw.left,\n                                         ut.getNameAsString());\n\n                FieldIdentifier fieldName = ((RawIdentifier) raw.left).toFieldIdentifier();\n                int fieldPosition = ut.fieldPosition(fieldName);\n\n                if (fieldPosition == -1)\n                    throw invalidRequest(\"Unknown field '%s' in value of user defined type %s\",\n                                         fieldName,\n                                         ut.getNameAsString());\n\n                AbstractType<?> fieldType = ut.fieldType(fieldPosition);\n                factories.put(fieldName,\n                              raw.right.prepare(cfm).newSelectorFactory(cfm, fieldType, defs, boundNames));\n            }\n\n            return UserTypeSelector.newFactory(expectedType, factories);\n        }\n\n        @Override\n        public AbstractType<?> getExactTypeIfKnown(String keyspace)\n        {\n            // Let's force the user to specify the type.\n            return null;\n        }\n","sourceCodeStart":1152,"sourceCodeEnd":1188,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/cql3/selection/Selectable.java#L1152-L1188","documentation":"A UDT literal in the selection clause names a field that does not exist in the target user type (fieldPosition returns -1). Cassandra validates literal keys against the UserType definition and rejects unknown fields at prepare time.","triggerScenarios":"`SELECT (address) {streat:'x'} FROM t` — misspelled field name; field renamed in the type but literals not updated; using a field from a different UDT.","commonSituations":"UDT schema evolution (fields added/renamed) with stale queries; case-sensitivity issues with unquoted vs quoted identifiers; typos in hand-written literals.","solutions":["Run DESCRIBE TYPE <keyspace>.<type> and correct the field name in the literal to match exactly.","Quote the identifier if the field name is case-sensitive or contains special characters: {\"Street\":'x'}.","Update application code/queries after UDT field renames; check for removed/renamed fields."],"exampleFix":"// before\nSELECT (address) {streat:'Main'} FROM t;\n// after\nSELECT (address) {street:'Main'} FROM t;","handlingStrategy":"validation","validationCode":"Set<String> valid = userType.getFieldNames(); for (String f : literalFields) if (!valid.contains(f)) throw new IllegalArgumentException(\"unknown field \" + f + \" for UDT \" + userType.getName());","typeGuard":null,"tryCatchPattern":"try { session.execute(stmt); } catch (InvalidRequestException e) { if (e.getMessage().contains(\"Unknown field\")) { /* refresh field names from DESCRIBE TYPE */ } else throw e; }","preventionTips":["Fetch UDT field names from driver metadata before building literals.","Re-validate queries after any ALTER TYPE rename/drop.","Handle identifier case consistently (quote when needed)."],"tags":["cql","udt","schema","unknown-field"],"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-14T16:17:12.679Z"}