{"record":{"id":"595ff670783f9ca7","repo":"apache/shardingsphere","slug":"seek-blob-is-not-supported-at-the-moment-blob-han","errorCode":null,"errorMessage":"SEEK BLOB is not supported at the moment, blob handle: %d","messagePattern":"SEEK BLOB is not supported at the moment, blob handle: (.+?)","errorType":"exception","errorClass":"FirebirdProtocolException","httpStatus":null,"severity":"error","filePath":"proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/FirebirdSeekBlobCommandExecutor.java","lineNumber":38,"sourceCode":"import lombok.RequiredArgsConstructor;\nimport org.apache.shardingsphere.database.protocol.firebird.exception.FirebirdProtocolException;\nimport org.apache.shardingsphere.database.protocol.firebird.packet.command.query.blob.FirebirdSeekBlobCommandPacket;\nimport org.apache.shardingsphere.database.protocol.packet.DatabasePacket;\nimport org.apache.shardingsphere.proxy.frontend.command.executor.CommandExecutor;\n\nimport java.util.Collection;\n\n/**\n * Seek blob command executor for Firebird.\n */\n@RequiredArgsConstructor\npublic final class FirebirdSeekBlobCommandExecutor implements CommandExecutor {\n    \n    private final FirebirdSeekBlobCommandPacket packet;\n    \n    @Override\n    public Collection<DatabasePacket> execute() {\n        throw new FirebirdProtocolException(\"SEEK BLOB is not supported at the moment, blob handle: %d\", packet.getBlobHandle());\n    }\n}\n","sourceCodeStart":20,"sourceCodeEnd":41,"githubUrl":"https://github.com/apache/shardingsphere/blob/e952770a215630a3659c75d64369168cd3e26b82/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/FirebirdSeekBlobCommandExecutor.java#L20-L41","documentation":"FirebirdProtocolException thrown unconditionally by FirebirdSeekBlobCommandExecutor: the SEEK BLOB operation of the Firebird blob sub-protocol is not implemented, so any request is rejected with the offending blob handle. Read/write of blob segments via GET/PUT SEGMENT paths is separate; only seek is refused.","triggerScenarios":"A client sends the Firebird op_seek_blob packet with a blob handle; execute() ignores everything else and throws 'SEEK BLOB is not supported at the moment, blob handle: %d'.","commonSituations":"clients using Firebird's segmented-blob random access (seek to offset then read) — e.g. multimedia or document-management applications reading middle-of-blob slices; ORB/tooling that always issues seek even for sequential access.","solutions":["Read blobs sequentially (open, get segments in order, close) instead of seeking to offsets.","Materialize the whole blob client-side and slice it in application memory.","Access such data through a direct Firebird connection rather than through the ShardingSphere proxy until SEEK is supported."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"catch (SQLException e) {\n    if (e.getMessage().contains(\"SEEK BLOB is not supported\")) { byte[] all = readWholeBlob(blobHandle); sliceLocally(all, offset, len); } else throw e;\n}","preventionTips":["Read blobs sequentially via segment reads.","Route blob random-access workloads to a direct Firebird connection."],"tags":["firebird","blob","unsupported-feature"],"backgroundTag":null,"analyzedSha":"e952770a215630a3659c75d64369168cd3e26b82","analyzedAt":"2026-08-14T13:54:53.392Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}