This is an automated email from the ASF dual-hosted git repository.
terrymanu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new b9911545bc8 Add high-frequency invocation annotations for Firebird
BLOB operations (#40148)
b9911545bc8 is described below
commit b9911545bc85e2ea1576c844b04e62551f255961
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Oct 10 23:59:21 2026 +0800
Add high-frequency invocation annotations for Firebird BLOB operations
(#40148)
---
.../protocol/firebird/constant/buffer/FirebirdParameterBuffer.java | 2 ++
.../constant/buffer/type/FirebirdBlobParameterBufferType.java | 4 ++++
.../packet/command/query/blob/FirebirdCreateBlobCommandPacket.java | 2 ++
.../firebird/command/query/blob/FirebirdOpenBlobCommandExecutor.java | 2 ++
.../firebird/command/query/blob/FirebirdSeekBlobCommandExecutor.java | 2 ++
.../firebird/command/query/blob/cache/FirebirdBlobReadCache.java | 5 +++++
.../firebird/command/query/blob/cache/FirebirdBlobWriteCache.java | 2 ++
.../firebird/command/query/info/FirebirdBlobInfoExecutor.java | 2 ++
8 files changed, 21 insertions(+)
diff --git
a/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/constant/buffer/FirebirdParameterBuffer.java
b/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/constant/buffer/FirebirdParameterBuffer.java
index 5ad66bee4d7..95f24f58c64 100644
---
a/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/constant/buffer/FirebirdParameterBuffer.java
+++
b/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/constant/buffer/FirebirdParameterBuffer.java
@@ -21,6 +21,7 @@ import io.netty.buffer.ByteBuf;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.database.exception.core.exception.protocol.DatabaseProtocolException;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
@@ -77,6 +78,7 @@ public final class FirebirdParameterBuffer {
}
}
+ @HighFrequencyInvocation
private int readSizedIntValue(final ByteBuf parameterBuffer, final int
length) {
int result = 0;
for (int i = 0; i < length; i++) {
diff --git
a/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/constant/buffer/type/FirebirdBlobParameterBufferType.java
b/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/constant/buffer/type/FirebirdBlobParameterBufferType.java
index 5b0ec3ca23a..987fea6de1e 100644
---
a/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/constant/buffer/type/FirebirdBlobParameterBufferType.java
+++
b/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/constant/buffer/type/FirebirdBlobParameterBufferType.java
@@ -23,6 +23,7 @@ import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.database.protocol.firebird.constant.FirebirdValueFormat;
import
org.apache.shardingsphere.database.protocol.firebird.constant.buffer.FirebirdParameterBuffer;
import
org.apache.shardingsphere.database.protocol.firebird.constant.buffer.FirebirdParameterBufferType;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import java.util.HashMap;
import java.util.Map;
@@ -64,6 +65,7 @@ public enum FirebirdBlobParameterBufferType implements
FirebirdParameterBufferTy
* @param code bpb type code
* @return Firebird bpb type
*/
+ @HighFrequencyInvocation
public static FirebirdBlobParameterBufferType valueOf(final int code) {
FirebirdBlobParameterBufferType result =
FIREBIRD_BPB_TYPE_CACHE.get(code);
Preconditions.checkNotNull(result, "Cannot find code '%d' in bpb
type", code);
@@ -76,6 +78,7 @@ public enum FirebirdBlobParameterBufferType implements
FirebirdParameterBufferTy
* @param version version of parameter buffer
* @return is traditional type
*/
+ @HighFrequencyInvocation
public static boolean isTraditionalType(final int version) {
return 1 == version;
}
@@ -85,6 +88,7 @@ public enum FirebirdBlobParameterBufferType implements
FirebirdParameterBufferTy
*
* @return Firebird blob parameter buffer
*/
+ @HighFrequencyInvocation
public static FirebirdParameterBuffer createBuffer() {
return new
FirebirdParameterBuffer(FirebirdBlobParameterBufferType::valueOf,
FirebirdBlobParameterBufferType::isTraditionalType);
}
diff --git
a/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/blob/FirebirdCreateBlobCommandPacket.java
b/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/blob/FirebirdCreateBlobCommandPacket.java
index c45d3d03186..57af43064af 100644
---
a/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/blob/FirebirdCreateBlobCommandPacket.java
+++
b/database/protocol/dialect/firebird/src/main/java/org/apache/shardingsphere/database/protocol/firebird/packet/command/query/blob/FirebirdCreateBlobCommandPacket.java
@@ -24,6 +24,7 @@ import
org.apache.shardingsphere.database.protocol.firebird.constant.buffer.type
import
org.apache.shardingsphere.database.protocol.firebird.packet.command.FirebirdCommandPacket;
import
org.apache.shardingsphere.database.protocol.firebird.packet.command.FirebirdCommandPacketType;
import
org.apache.shardingsphere.database.protocol.firebird.payload.FirebirdPacketPayload;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
/**
* Firebird create blob command packet.
@@ -58,6 +59,7 @@ public final class FirebirdCreateBlobCommandPacket extends
FirebirdCommandPacket
*
* @return stream blob or not
*/
+ @HighFrequencyInvocation
public boolean isStreamBlob() {
Integer blobType = bpb.getValue(FirebirdBlobParameterBufferType.TYPE);
return null != blobType && BLOB_TYPE_STREAM == blobType;
diff --git
a/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/FirebirdOpenBlobCommandExecutor.java
b/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/FirebirdOpenBlobCommandExecutor.java
index 127eda03f10..a8c8edd06a7 100644
---
a/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/FirebirdOpenBlobCommandExecutor.java
+++
b/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/FirebirdOpenBlobCommandExecutor.java
@@ -23,6 +23,7 @@ import
org.apache.shardingsphere.database.protocol.firebird.packet.command.query
import
org.apache.shardingsphere.database.protocol.firebird.packet.command.query.statement.execute.protocol.FirebirdBlobBinaryProtocolValue;
import
org.apache.shardingsphere.database.protocol.firebird.packet.generic.FirebirdGenericResponsePacket;
import org.apache.shardingsphere.database.protocol.packet.DatabasePacket;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import org.apache.shardingsphere.infra.exception.ShardingSpherePreconditions;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import
org.apache.shardingsphere.proxy.frontend.command.executor.CommandExecutor;
@@ -82,6 +83,7 @@ public final class FirebirdOpenBlobCommandExecutor implements
CommandExecutor {
return blobData.get();
}
+ @HighFrequencyInvocation
private boolean isStreamBlob(final long blobId) {
if (0L == blobId) {
return false;
diff --git
a/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/FirebirdSeekBlobCommandExecutor.java
b/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/FirebirdSeekBlobCommandExecutor.java
index 923a75b0da0..ecf05d55358 100644
---
a/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/FirebirdSeekBlobCommandExecutor.java
+++
b/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/FirebirdSeekBlobCommandExecutor.java
@@ -23,6 +23,7 @@ import
org.apache.shardingsphere.database.exception.firebird.exception.protocol.
import
org.apache.shardingsphere.database.protocol.firebird.packet.command.query.blob.FirebirdSeekBlobCommandPacket;
import
org.apache.shardingsphere.database.protocol.firebird.packet.generic.FirebirdGenericResponsePacket;
import org.apache.shardingsphere.database.protocol.packet.DatabasePacket;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import org.apache.shardingsphere.infra.exception.ShardingSpherePreconditions;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import
org.apache.shardingsphere.proxy.frontend.command.executor.CommandExecutor;
@@ -50,6 +51,7 @@ public final class FirebirdSeekBlobCommandExecutor implements
CommandExecutor {
private final ConnectionSession connectionSession;
@Override
+ @HighFrequencyInvocation
public Collection<DatabasePacket> execute() {
int connectionId = connectionSession.getConnectionId();
int blobHandle =
FirebirdBlobHandleGenerator.getInstance().resolveBlobHandle(connectionId,
packet.getBlobHandle());
diff --git
a/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/cache/FirebirdBlobReadCache.java
b/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/cache/FirebirdBlobReadCache.java
index 5adae1f9641..f6615562040 100644
---
a/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/cache/FirebirdBlobReadCache.java
+++
b/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/cache/FirebirdBlobReadCache.java
@@ -21,6 +21,7 @@ import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import java.util.Arrays;
import java.util.Map;
@@ -109,6 +110,7 @@ public final class FirebirdBlobReadCache {
* @param blobHandle blob handle
* @return optional total BLOB size
*/
+ @HighFrequencyInvocation
public OptionalInt getTotalSize(final int connectionId, final int
blobHandle) {
BlobReadCursor cursor = getCursorMap(connectionId).get(blobHandle);
return null == cursor ? OptionalInt.empty() :
OptionalInt.of(cursor.content.length);
@@ -121,6 +123,7 @@ public final class FirebirdBlobReadCache {
* @param blobHandle blob handle
* @return optional stream BLOB state
*/
+ @HighFrequencyInvocation
public Optional<Boolean> isStreamBlob(final int connectionId, final int
blobHandle) {
BlobReadCursor cursor = getCursorMap(connectionId).get(blobHandle);
return null == cursor ? Optional.empty() :
Optional.of(cursor.streamBlob);
@@ -138,6 +141,7 @@ public final class FirebirdBlobReadCache {
* @param offset offset to position by
* @return optional resulting position
*/
+ @HighFrequencyInvocation
public OptionalInt seek(final int connectionId, final int blobHandle,
final int seekMode, final int offset) {
BlobReadCursor cursor = getCursorMap(connectionId).get(blobHandle);
return null == cursor ? OptionalInt.empty() :
OptionalInt.of(cursor.seek(seekMode, offset));
@@ -171,6 +175,7 @@ public final class FirebirdBlobReadCache {
return content.length - offset;
}
+ @HighFrequencyInvocation
private int seek(final int seekMode, final int seekOffset) {
int position = getSeekPosition(seekMode, seekOffset);
offset = Math.min(Math.max(position, 0), content.length);
diff --git
a/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/cache/FirebirdBlobWriteCache.java
b/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/cache/FirebirdBlobWriteCache.java
index 39993633d3d..b093b3a78b7 100644
---
a/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/cache/FirebirdBlobWriteCache.java
+++
b/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/blob/cache/FirebirdBlobWriteCache.java
@@ -19,6 +19,7 @@ package
org.apache.shardingsphere.proxy.frontend.firebird.command.query.blob.cac
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import java.util.Map;
import java.util.Optional;
@@ -179,6 +180,7 @@ public final class FirebirdBlobWriteCache {
* @param blobId blob id
* @return whether the BLOB is a stream BLOB
*/
+ @HighFrequencyInvocation
public boolean isStreamBlob(final int connectionId, final long blobId) {
FirebirdBlobWrite write = getIdMap(connectionId).get(blobId);
return null != write && write.isStreamBlob();
diff --git
a/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/info/FirebirdBlobInfoExecutor.java
b/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/info/FirebirdBlobInfoExecutor.java
index 42e206c2c8f..72c36f877f3 100644
---
a/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/info/FirebirdBlobInfoExecutor.java
+++
b/proxy/frontend/dialect/firebird/src/main/java/org/apache/shardingsphere/proxy/frontend/firebird/command/query/info/FirebirdBlobInfoExecutor.java
@@ -22,6 +22,7 @@ import
org.apache.shardingsphere.database.protocol.firebird.packet.command.query
import
org.apache.shardingsphere.database.protocol.firebird.packet.command.query.info.type.blob.FirebirdBlobInfoReturnPacket;
import
org.apache.shardingsphere.database.protocol.firebird.packet.generic.FirebirdGenericResponsePacket;
import org.apache.shardingsphere.database.protocol.packet.DatabasePacket;
+import org.apache.shardingsphere.infra.annotation.HighFrequencyInvocation;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import
org.apache.shardingsphere.proxy.frontend.command.executor.CommandExecutor;
import
org.apache.shardingsphere.proxy.frontend.firebird.command.query.blob.cache.FirebirdBlobReadCache;
@@ -58,6 +59,7 @@ public final class FirebirdBlobInfoExecutor implements
CommandExecutor {
return
FirebirdBlobWriteCache.getInstance().getBlobSizeByHandle(connectionId,
blobHandle).orElse(0);
}
+ @HighFrequencyInvocation
private boolean isStreamBlob(final int connectionId, final int blobHandle)
{
return FirebirdBlobReadCache.getInstance().isStreamBlob(connectionId,
blobHandle).orElse(false);
}