{"record":{"id":"9cd0c4a1474d32ab","repo":"prestodb/presto","slug":"parse-error-connectoroutputtablehandle-connecto","errorCode":null,"errorMessage":"{parse_error} ConnectorOutputTableHandle  ConnectorOutputTableHandle","messagePattern":"(.+?) ConnectorOutputTableHandle  ConnectorOutputTableHandle","errorType":"validation","errorClass":"ParseError","httpStatus":null,"severity":"error","filePath":"presto-native-execution/presto_cpp/presto_protocol/core/presto_protocol_core.cpp","lineNumber":3573,"sourceCode":"      \"valueBlock\");\n  from_json_key(j, \"type\", p.type, \"ConstantExpression\", \"Type\", \"type\");\n}\n} // namespace facebook::presto::protocol\nnamespace facebook::presto::protocol {\nvoid to_json(json& j, const std::shared_ptr<ConnectorOutputTableHandle>& p) {\n  if (p == nullptr) {\n    return;\n  }\n  String type = p->_type;\n  getConnectorProtocol(type).to_json(j, p);\n}\n\nvoid from_json(const json& j, std::shared_ptr<ConnectorOutputTableHandle>& p) {\n  String type;\n  try {\n    type = p->getSubclassKey(j);\n  } catch (json::parse_error& e) {\n    throw ParseError(\n        std::string(e.what()) +\n        \" ConnectorOutputTableHandle  ConnectorOutputTableHandle\");\n  }\n\n  if (j.contains(\"customSerializedValue\")) {\n    VELOX_CHECK(\n        !type.empty() && type[0] != '$',\n        \"Internal handle type '{}' should not have customSerializedValue\",\n        type);\n    std::string binaryData = velox::encoding::Base64::decode(\n        j[\"customSerializedValue\"].get<std::string>());\n    getConnectorProtocol(type).deserialize(binaryData, p);\n    return;\n  }\n\n  getConnectorProtocol(type).from_json(j, p);\n}\n} // namespace facebook::presto::protocol","sourceCodeStart":3555,"sourceCodeEnd":3591,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-native-execution/presto_cpp/presto_protocol/core/presto_protocol_core.cpp#L3555-L3591","documentation":"Velox protocol deserialization error: the JSON for a ConnectorOutputTableHandle could not be parsed (missing or invalid type discriminator key). Raised in from_json when translating the Java-side connector handle for a write plan into the native representation; signals protocol/version mismatch or corrupt payload.","triggerScenarios":"Thrown at presto-native-execution/presto_cpp/presto_protocol/core/presto_protocol_core.cpp:3573 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Match coordinator and presto_cpp protocol versions","Verify the connector serializes a recognized ConnectorOutputTableHandle subtype","Inspect the serialized plan JSON for missing type fields"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}