From 718a2835a2420a4f0e41a62a781fb4999230b5c8 Mon Sep 17 00:00:00 2001 From: Nikita Akilov Date: Mon, 26 Apr 2021 12:30:28 +0300 Subject: [PATCH] #11201 use object full name to differentiate different underlying queries in parent data container in references result container #12242 --- .../references/ReferencesResultsContainer.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) 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 9ed23bfa74..a46ae82ec1 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 @@ -65,12 +65,12 @@ class ReferencesResultsContainer implements IResultSetContainer { private DBSDataContainer parentDataContainer; /** - * Result of the toString() call on the latest parentDataContainer. It is used for detection if the underlying data container has changed. + * Full name of the latest parentDataContainer. It is used for detection if the underlying data container has changed. * See this ticket. * */ @Nullable - private String parentContainerStringDigest; + private String parentContainerFullName; private DBSDataContainer dataContainer; @@ -176,14 +176,21 @@ class ReferencesResultsContainer implements IResultSetContainer { void refreshReferences() { dataViewer.resetHistory(); DBSDataContainer newParentContainer = parentController.getDataContainer(); - String newParentContainerDigest = newParentContainer != null ? newParentContainer.toString() : null; - if (newParentContainer != parentDataContainer || !Objects.equals(newParentContainerDigest, parentContainerStringDigest)) { + 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 */ @@ -202,11 +209,10 @@ class ReferencesResultsContainer implements IResultSetContainer { } parentDataContainer = parentController.getDataContainer(); + parentContainerFullName = getDataContainerFullName(parentDataContainer); if (parentDataContainer == null) { - parentContainerStringDigest = null; return; } - parentContainerStringDigest = parentDataContainer.toString(); Set allEntities = new LinkedHashSet<>(); for (DBDAttributeBinding attr : visibleAttributes) { -- GitLab