diff --git a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/panel/references/ReferencesResultsContainer.java b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/panel/references/ReferencesResultsContainer.java
index 489658a94ce27ec2765b28cc74c488eb3de207dd..9ed23bfa74204fe4235a5a3f87ce3a7ec0935d62 100644
--- a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/panel/references/ReferencesResultsContainer.java
+++ b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/controls/resultset/panel/references/ReferencesResultsContainer.java
@@ -63,6 +63,15 @@ class ReferencesResultsContainer implements IResultSetContainer {
private ResultSetViewer dataViewer;
private DBSDataContainer parentDataContainer;
+
+ /**
+ * Result of the toString() call on the latest parentDataContainer. It is used for detection if the underlying data container has changed.
+ * See this ticket.
+ *
+ */
+ @Nullable
+ private String parentContainerStringDigest;
+
private DBSDataContainer dataContainer;
private final List referenceKeys = new ArrayList<>();
@@ -164,10 +173,11 @@ class ReferencesResultsContainer implements IResultSetContainer {
return mainComposite;
}
- public void refreshReferences() {
+ void refreshReferences() {
dataViewer.resetHistory();
- DBSDataContainer newParentContainer = this.parentController.getDataContainer();
- if (newParentContainer != parentDataContainer) {
+ DBSDataContainer newParentContainer = parentController.getDataContainer();
+ String newParentContainerDigest = newParentContainer != null ? newParentContainer.toString() : null;
+ if (newParentContainer != parentDataContainer || !Objects.equals(newParentContainerDigest, parentContainerStringDigest)) {
refreshReferenceKeyList();
} else if (dataContainer != null) {
refreshKeyValues(false);
@@ -193,8 +203,11 @@ class ReferencesResultsContainer implements IResultSetContainer {
parentDataContainer = parentController.getDataContainer();
if (parentDataContainer == null) {
+ parentContainerStringDigest = null;
return;
}
+ parentContainerStringDigest = parentDataContainer.toString();
+
Set allEntities = new LinkedHashSet<>();
for (DBDAttributeBinding attr : visibleAttributes) {
DBSEntityAttribute entityAttribute = attr.getEntityAttribute();