From 15f4c513d8dc2ee0f46134095b102342339078cb Mon Sep 17 00:00:00 2001 From: Dmitrii Barnukov Date: Thu, 25 Dec 2025 10:13:57 +0100 Subject: [PATCH 1/2] dbeaver/pro#7693 added key attributes row id check --- .../src/io/cloudbeaver/service/sql/WebSQLProcessor.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLProcessor.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLProcessor.java index 868f1b14e00..ae5811934bc 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLProcessor.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLProcessor.java @@ -967,9 +967,7 @@ private void addKeyAttributes( @NotNull DBDDataFilter dataFilter ) throws DBException { DBDRowIdentifier rowIdentifier = resultsInfo.getDefaultRowIdentifier(); - if (rowIdentifier == null || rowIdentifier.isIncomplete()) { - return; - } + checkRowIdentifier(resultsInfo, rowIdentifier); DBDAttributeBinding[] keyAttributes = rowIdentifier.getAttributes().toArray(new DBDAttributeBinding[0]); Object[] rowValues = new Object[keyAttributes.length]; List constraints = new ArrayList<>(); From cf40178f3f434d824b651896a8e6d28eed9a5431 Mon Sep 17 00:00:00 2001 From: Dmitrii Barnukov Date: Fri, 26 Dec 2025 15:59:26 +0100 Subject: [PATCH 2/2] dbeaver/pro#7693 added fix for single row tables --- .../src/io/cloudbeaver/service/sql/WebSQLProcessor.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLProcessor.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLProcessor.java index ae5811934bc..8098ef2fe0f 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLProcessor.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLProcessor.java @@ -951,7 +951,7 @@ private void readCellDataValue( DBCExecutionContext executionContext = getExecutionContext(dataContainer); try (DBCSession session = executionContext.openSession(monitor, DBCExecutionPurpose.USER, "Generate data update batches")) { DBDDataFilter dataFilter = new DBDDataFilter(); - addKeyAttributes(resultsInfo, row, dataContainer, session, dataFilter); + addKeyAttributes(monitor, resultsInfo, row, dataContainer, session, dataFilter); WebExecutionSource executionSource = new WebExecutionSource(dataContainer, executionContext, this); dataContainer.readData( executionSource, session, dataReceiver, dataFilter, @@ -960,12 +960,19 @@ private void readCellDataValue( } private void addKeyAttributes( + @NotNull DBRProgressMonitor monitor, @NotNull WebSQLResultsInfo resultsInfo, @NotNull WebSQLResultsRow row, @NotNull DBSDataContainer dataContainer, @NotNull DBCSession session, @NotNull DBDDataFilter dataFilter ) throws DBException { + if (resultsInfo.isSingleRow()) { + long rowCount = DBUtils.readRowCount(monitor, session.getExecutionContext(), dataContainer, null, this); + if (rowCount == 1) { + return; + } + } DBDRowIdentifier rowIdentifier = resultsInfo.getDefaultRowIdentifier(); checkRowIdentifier(resultsInfo, rowIdentifier); DBDAttributeBinding[] keyAttributes = rowIdentifier.getAttributes().toArray(new DBDAttributeBinding[0]);