apache/shardingsphere · error · FirebirdProtocolException
SEEK BLOB is not supported at the moment, blob handle: %d
Error message
SEEK BLOB is not supported at the moment, blob handle: %d
What it means
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.
Source
Thrown at proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/FirebirdSeekBlobCommandExecutor.java:38
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.database.protocol.firebird.exception.FirebirdProtocolException;
import org.apache.shardingsphere.database.protocol.firebird.packet.command.query.blob.FirebirdSeekBlobCommandPacket;
import org.apache.shardingsphere.database.protocol.packet.DatabasePacket;
import org.apache.shardingsphere.proxy.frontend.command.executor.CommandExecutor;
import java.util.Collection;
/**
* Seek blob command executor for Firebird.
*/
@RequiredArgsConstructor
public final class FirebirdSeekBlobCommandExecutor implements CommandExecutor {
private final FirebirdSeekBlobCommandPacket packet;
@Override
public Collection<DatabasePacket> execute() {
throw new FirebirdProtocolException("SEEK BLOB is not supported at the moment, blob handle: %d", packet.getBlobHandle());
}
}
View on GitHub (pinned to e952770a21)
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.
Defensive patterns
Strategy: fallback
Try / catch
catch (SQLException e) {
if (e.getMessage().contains("SEEK BLOB is not supported")) { byte[] all = readWholeBlob(blobHandle); sliceLocally(all, offset, len); } else throw e;
} Prevention
- Read blobs sequentially via segment reads.
- Route blob random-access workloads to a direct Firebird connection.
When it happens
Trigger: 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'.
Common situations: 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.
Related errors
- BLOB policy is not supported in Firebird batch operations
- Truncated batch BLOB segment length
- Batch BLOB segment declares %d bytes, but only %d bytes rema
- Unknown blob information request type %d
- Unknown database information request type %d
AI-assisted analysis of apache/shardingsphere@e952770a21 (2026-08-14).
Data as JSON: /api/errors/595ff670783f9ca7.
Report an issue: GitHub.