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 03fd85c6e1..46d46667bd 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 @@ -273,6 +273,8 @@ public class WebSQLProcessor { DBSDataManipulator dataManipulator = generateUpdateResultsDataBatch( monitor, contextInfo, resultsId, updatedRows, deletedRows, addedRows, dataFormat, resultBatches, keyReceiver); + WebSQLResultsInfo resultsInfo = contextInfo.getResults(resultsId); + long totalUpdateCount = 0; WebSQLExecuteInfo result = new WebSQLExecuteInfo(); @@ -296,7 +298,7 @@ public class WebSQLProcessor { // Patch result rows (adapt to web format) for (int i = 0; i < rowValues.length; i++) { - rowValues[i] = WebSQLUtils.makeWebCellValue(webSession, null, rowValues[i], dataFormat); + rowValues[i] = WebSQLUtils.makeWebCellValue(webSession, resultsInfo.getAttributeByPosition(i), rowValues[i], dataFormat); } totalUpdateCount += statistics.getRowsUpdated(); @@ -319,7 +321,6 @@ public class WebSQLProcessor { } WebSQLQueryResultSet updatedResultSet = new WebSQLQueryResultSet(); - WebSQLResultsInfo resultsInfo = contextInfo.getResults(resultsId); updatedResultSet.setResultsInfo(resultsInfo); updatedResultSet.setColumns(resultsInfo.getAttributes()); @@ -370,7 +371,8 @@ public class WebSQLProcessor { @Nullable List deletedRows, @Nullable List addedRows, @Nullable WebDataFormat dataFormat, - @NotNull Map resultBatches, DBDDataReceiver keyReceiver) + @NotNull Map resultBatches, + @Nullable DBDDataReceiver keyReceiver) throws DBException { WebSQLResultsInfo resultsInfo = contextInfo.getResults(resultsId); diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLResultsInfo.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLResultsInfo.java index c6eef050cd..ba31b68513 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLResultsInfo.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLResultsInfo.java @@ -24,6 +24,7 @@ import org.jkiss.dbeaver.model.data.DBDAttributeBinding; import org.jkiss.dbeaver.model.data.DBDRowIdentifier; import org.jkiss.dbeaver.model.struct.DBSAttributeBase; import org.jkiss.dbeaver.model.struct.DBSDataContainer; +import org.jkiss.dbeaver.model.struct.DBSTypedObject; import java.util.List; @@ -92,4 +93,14 @@ public class WebSQLResultsInfo { } return binding == null ? null : binding.getAttribute(); } + + public DBSTypedObject getAttributeByPosition(int pos) { + for (DBDAttributeBinding attr : attributes) { + if (attr.getOrdinalPosition() == pos) { + return attr; + } + } + return null; + } + }