{"record":{"id":"88587475a2c300b6","repo":"apache/beam","slug":"not-implemented-yet-fielddescriptor-getmessagetype","errorCode":null,"errorMessage":"Not implemented yet ${fieldDescriptor.getMessageType().getFullName()}","messagePattern":"Not implemented yet (.+?)","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/TableRowToStorageApiProto.java","lineNumber":1961,"sourceCode":"                  .getField(message.getDescriptorForType().findFieldByName(\"value\"))\n                  .toString();\n            } else if (INT64_VALUE_DESCRIPTOR_NAMES.contains(\n                fieldDescriptor.getMessageType().getName())) {\n              return message\n                  .getField(message.getDescriptorForType().findFieldByName(\"value\"))\n                  .toString();\n            } else if (UINT32_VALUE_DESCRIPTOR_NAMES.contains(\n                fieldDescriptor.getMessageType().getName())) {\n              return message\n                  .getField(message.getDescriptorForType().findFieldByName(\"value\"))\n                  .toString();\n            } else if (UINT64_VALUE_DESCRIPTOR_NAMES.contains(\n                fieldDescriptor.getMessageType().getName())) {\n              return message\n                  .getField(message.getDescriptorForType().findFieldByName(\"value\"))\n                  .toString();\n            } else {\n              throw new RuntimeException(\n                  \"Not implemented yet \" + fieldDescriptor.getMessageType().getFullName());\n            }\n          default:\n            return fieldValue.toString();\n        }\n      case BYTES:\n        switch (fieldDescriptor.getType()) {\n          case BYTES:\n            return BaseEncoding.base64().encode(((ByteString) fieldValue).toByteArray());\n          case STRING:\n            return BaseEncoding.base64()\n                .encode(((String) fieldValue).getBytes(StandardCharsets.UTF_8));\n          case MESSAGE:\n            Message message = (Message) fieldValue;\n            if (BYTES_VALUE_DESCRIPTOR_NAMES.contains(fieldDescriptor.getMessageType().getName())) {\n              ByteString byteString =\n                  (ByteString)\n                      message.getField(message.getDescriptorForType().findFieldByName(\"value\"));","sourceCodeStart":1943,"sourceCodeEnd":1979,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/TableRowToStorageApiProto.java#L1943-L1979","documentation":"During conversion of TableRow numeric fields to Storage API protos, integer-typed fields whose value is a protobuf message must be one of the recognized INT/UINT 64 wrapper descriptor names. Any other message type is unsupported and triggers this RuntimeException reporting the full message name.","triggerScenarios":"A TableRow field with INTEGER/INT64 schema carries a protobuf message whose full name is not in INT64_VALUE_DESCRIPTOR_NAMES or UINT64_VALUE_DESCRIPTOR_NAMES when messageToValue runs.","commonSituations":"Pipelines that build TableRows from proto records and keep wrapper messages for int columns, custom Int wrappers, or protobuf versions with new well-known types not yet mapped by Beam.","solutions":["Use google.protobuf.Int64Value/UInt64Value (or another supported wrapper) for integer fields instead of a custom message","Unwrap the value yourself before building the TableRow (set a plain Long)","Check the reported full name against the supported *_VALUE_DESCRIPTOR_NAMES lists in TableRowToStorageApiProto","Upgrade Beam to a version that supports this wrapper type","Contribute support by adding the descriptor name to the mapping lists"],"exampleFix":"// before\nrow.set(\"count\", MyCounterProto.getDefaultInstance());\n// after\nrow.set(\"count\", Int64Value.of(42L));","handlingStrategy":"validation","validationCode":"if (fieldValue instanceof Message) {\n  String fullName = ((Message) fieldValue).getDescriptorForType().getFullName();\n  if (!INT64_VALUE_DESCRIPTOR_NAMES.contains(((Message) fieldValue).getDescriptorForType().getName())\n      && !UINT64_VALUE_DESCRIPTOR_NAMES.contains(((Message) fieldValue).getDescriptorForType().getName())) {\n    throw new IllegalArgumentException(\"Unsupported int wrapper: \" + fullName);\n  }\n}","typeGuard":"boolean isSupportedIntWrapper(Object v) {\n  return !(v instanceof Message)\n      || INT64_VALUE_DESCRIPTOR_NAMES.contains(((Message) v).getDescriptorForType().getName())\n      || UINT64_VALUE_DESCRIPTOR_NAMES.contains(((Message) v).getDescriptorForType().getName());\n}","tryCatchPattern":"try {\n  proto = TableRowToStorageApiProto.messageToValue(schema, row, options);\n} catch (RuntimeException e) {\n  if (e.getMessage().startsWith(\"Not implemented yet\")) { /* route row to DLQ */ } else throw e;\n}","preventionTips":["Emit plain Long values for INTEGER fields instead of proto wrapper messages","Use Int64Value/UInt64Value only","Regenerating protos: verify field types still map to supported wrappers"],"tags":["java","google-bigquery","protobuf","unimplemented"],"backgroundTag":"method-not-implemented","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-20T03:17:13.778Z"}