From 370bef2f07f2e6ed262516bda8c70bd1145e053e Mon Sep 17 00:00:00 2001 From: Stefan Hardegger Date: Thu, 31 Jul 2025 07:38:05 +0200 Subject: [PATCH] DB Backup Bug --- .../service/DatabaseManagementService.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/com/storycove/service/DatabaseManagementService.java b/backend/src/main/java/com/storycove/service/DatabaseManagementService.java index da0f9e7..1a2044d 100644 --- a/backend/src/main/java/com/storycove/service/DatabaseManagementService.java +++ b/backend/src/main/java/com/storycove/service/DatabaseManagementService.java @@ -92,8 +92,27 @@ public class DatabaseManagementService { sqlDump.append(value.toString()); } else { // Handle all other types as strings (String, UUID, Timestamp, CLOB, TEXT, etc.) - // Escape single quotes and wrap in quotes - String escapedValue = value.toString().replace("'", "''"); + String stringValue; + + // Special handling for CLOB types + if (value instanceof Clob) { + Clob clob = (Clob) value; + try { + stringValue = clob.getSubString(1, (int) clob.length()); + } catch (SQLException e) { + stringValue = value.toString(); + } + } else { + stringValue = value.toString(); + } + + // Debug: log if we're dealing with a large content field + if (stringValue.length() > 1000) { + System.out.println("Processing large field (length: " + stringValue.length() + ") with quotes: " + stringValue.contains("'") + " type: " + value.getClass().getSimpleName()); + } + + // Escape single quotes by replacing ' with '' + String escapedValue = stringValue.replace("'", "''"); sqlDump.append("'").append(escapedValue).append("'"); } }