From 48bb024acb92f77d2ac778de86ce1d76dbeca3c2 Mon Sep 17 00:00:00 2001 From: Thomasr Date: Mon, 10 Feb 2025 02:57:04 -0500 Subject: [PATCH 1/2] #1173: Implemented json serialization of oracle BLOB column type --- .../lowcoder/sdk/plugin/common/sql/ResultSetParser.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/server/api-service/lowcoder-sdk/src/main/java/org/lowcoder/sdk/plugin/common/sql/ResultSetParser.java b/server/api-service/lowcoder-sdk/src/main/java/org/lowcoder/sdk/plugin/common/sql/ResultSetParser.java index 3c2fdb3c7..eac808247 100644 --- a/server/api-service/lowcoder-sdk/src/main/java/org/lowcoder/sdk/plugin/common/sql/ResultSetParser.java +++ b/server/api-service/lowcoder-sdk/src/main/java/org/lowcoder/sdk/plugin/common/sql/ResultSetParser.java @@ -1,7 +1,9 @@ package org.lowcoder.sdk.plugin.common.sql; +import org.apache.commons.codec.binary.Base64; import org.jetbrains.annotations.Nullable; +import java.sql.Blob; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; @@ -25,6 +27,7 @@ public class ResultSetParser { public static final String DATETIME_COLUMN_TYPE_NAME = "datetime"; public static final String TIMESTAMP_COLUMN_TYPE_NAME = "timestamp"; public static final String YEAR_COLUMN_TYPE_NAME = "year"; + public static final String BLOB_COLUMN_TYPE_NAME = "blob"; public static List> parseRows(ResultSet resultSet) throws SQLException { ResultSetMetaData metaData = resultSet.getMetaData(); @@ -74,6 +77,12 @@ private static Object getValue(ResultSet resultSet, int i, String typeName) thro if (YEAR_COLUMN_TYPE_NAME.equalsIgnoreCase(typeName)) { return resultSet.getDate(i).toLocalDate().getYear(); } + if (BLOB_COLUMN_TYPE_NAME.equalsIgnoreCase(typeName)) { + //Convert binary data into base64 + Blob blob = resultSet.getBlob(i); + byte[] blobBytes = blob.getBytes(1, (int) blob.length()); + return Map.of("type", "BLOB", "length", blobBytes.length, "content", Base64.encodeBase64String(blobBytes)); + } return resultSet.getObject(i); } From 7eed7e29033c562466c399ca9ec068e28c24285e Mon Sep 17 00:00:00 2001 From: Thomasr Date: Mon, 10 Feb 2025 04:24:24 -0500 Subject: [PATCH 2/2] #1173: Change return type of BLOB column to base64 string --- .../org/lowcoder/sdk/plugin/common/sql/ResultSetParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/api-service/lowcoder-sdk/src/main/java/org/lowcoder/sdk/plugin/common/sql/ResultSetParser.java b/server/api-service/lowcoder-sdk/src/main/java/org/lowcoder/sdk/plugin/common/sql/ResultSetParser.java index eac808247..cae18e432 100644 --- a/server/api-service/lowcoder-sdk/src/main/java/org/lowcoder/sdk/plugin/common/sql/ResultSetParser.java +++ b/server/api-service/lowcoder-sdk/src/main/java/org/lowcoder/sdk/plugin/common/sql/ResultSetParser.java @@ -81,7 +81,7 @@ private static Object getValue(ResultSet resultSet, int i, String typeName) thro //Convert binary data into base64 Blob blob = resultSet.getBlob(i); byte[] blobBytes = blob.getBytes(1, (int) blob.length()); - return Map.of("type", "BLOB", "length", blobBytes.length, "content", Base64.encodeBase64String(blobBytes)); + return Base64.encodeBase64String(blobBytes); } return resultSet.getObject(i); }