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..a46ae82ec17f4b599a82d66a11ab1bd8508407be 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;
+
+ /**
+ * Full name of the latest parentDataContainer. It is used for detection if the underlying data container has changed.
+ * See this ticket.
+ *
+ */
+ @Nullable
+ private String parentContainerFullName;
+
private DBSDataContainer dataContainer;
private final List referenceKeys = new ArrayList<>();
@@ -164,16 +173,24 @@ 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();
+ if (newParentContainer != parentDataContainer || !Objects.equals(getDataContainerFullName(newParentContainer), parentContainerFullName)) {
refreshReferenceKeyList();
} else if (dataContainer != null) {
refreshKeyValues(false);
}
}
+ @Nullable
+ private static String getDataContainerFullName(@Nullable DBSDataContainer dataContainer) {
+ if (dataContainer == null) {
+ return null;
+ }
+ return DBUtils.getObjectFullName(dataContainer, DBPEvaluationContext.DDL);
+ }
+
/**
* Load list of referencing keys
*/
@@ -192,9 +209,11 @@ class ReferencesResultsContainer implements IResultSetContainer {
}
parentDataContainer = parentController.getDataContainer();
+ parentContainerFullName = getDataContainerFullName(parentDataContainer);
if (parentDataContainer == null) {
return;
}
+
Set allEntities = new LinkedHashSet<>();
for (DBDAttributeBinding attr : visibleAttributes) {
DBSEntityAttribute entityAttribute = attr.getEntityAttribute();