From 421b91fd383f7a3a1433955df0cf2ca07636f04b Mon Sep 17 00:00:00 2001 From: iroqueta Date: Wed, 23 Jul 2025 20:10:13 -0300 Subject: [PATCH] Implement support for returning embedding type with NULL value in the database Issue: 205544 --- .../main/java/com/genexus/db/GXEmbedding.java | 5 ++++- .../com/genexus/db/driver/GXResultSet.java | 18 ++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/java/src/main/java/com/genexus/db/GXEmbedding.java b/java/src/main/java/com/genexus/db/GXEmbedding.java index d935dffac..0565f37c5 100644 --- a/java/src/main/java/com/genexus/db/GXEmbedding.java +++ b/java/src/main/java/com/genexus/db/GXEmbedding.java @@ -33,7 +33,10 @@ public GXEmbedding(String model, int dimensions) { public GXEmbedding(Float[] embedding, String model, int dimensions) { this.model = model; this.dimensions = dimensions; - this.embedding = Arrays.asList(embedding); + if (embedding == null) + this.embedding = new ArrayList<>(Collections.nCopies(dimensions, 0.0f)); + else + this.embedding = Arrays.asList(embedding); } public GXEmbedding(List embedding) { diff --git a/java/src/main/java/com/genexus/db/driver/GXResultSet.java b/java/src/main/java/com/genexus/db/driver/GXResultSet.java index 166703275..b2fe00a64 100644 --- a/java/src/main/java/com/genexus/db/driver/GXResultSet.java +++ b/java/src/main/java/com/genexus/db/driver/GXResultSet.java @@ -837,10 +837,20 @@ public Float[] getGxembedding (int columnIndex) throws SQLException if (DEBUG ) log(GXDBDebug.LOG_MAX, "Warning: getEmbedding"); - if (con.getDBMS().getId() == GXDBMS.DBMS_POSTGRESQL) - return convertVectorStringToFloatArray(result.getArray(columnIndex).toString()); - else - return byteArrayToFloatObjectArray(result.getBytes(columnIndex)); + if (con.getDBMS().getId() == GXDBMS.DBMS_POSTGRESQL) { + Object array = result.getArray(columnIndex); + if (array == null) + return null; + else + return convertVectorStringToFloatArray(array.toString()); + } + else { + byte[] bytes = result.getBytes(columnIndex); + if (bytes == null) + return null; + else + return byteArrayToFloatObjectArray(bytes); + } } private static Float[] byteArrayToFloatObjectArray(byte[] bytes) {