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();