提交 85d0bae5 编写于 作者: N Nikita Akilov

#11201 use result of toString() method to differentiate different underlying...

#11201 use result of toString() method to differentiate different underlying queries in parent data container in references result container


Former-commit-id: 029f71fd
上级 f67d19cd
...@@ -63,6 +63,15 @@ class ReferencesResultsContainer implements IResultSetContainer { ...@@ -63,6 +63,15 @@ class ReferencesResultsContainer implements IResultSetContainer {
private ResultSetViewer dataViewer; private ResultSetViewer dataViewer;
private DBSDataContainer parentDataContainer; 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 <a href="https://github.com/dbeaver/dbeaver/issues/11201">this ticket.</a>
*
*/
@Nullable
private String parentContainerStringDigest;
private DBSDataContainer dataContainer; private DBSDataContainer dataContainer;
private final List<ReferenceKey> referenceKeys = new ArrayList<>(); private final List<ReferenceKey> referenceKeys = new ArrayList<>();
...@@ -164,10 +173,11 @@ class ReferencesResultsContainer implements IResultSetContainer { ...@@ -164,10 +173,11 @@ class ReferencesResultsContainer implements IResultSetContainer {
return mainComposite; return mainComposite;
} }
public void refreshReferences() { void refreshReferences() {
dataViewer.resetHistory(); dataViewer.resetHistory();
DBSDataContainer newParentContainer = this.parentController.getDataContainer(); DBSDataContainer newParentContainer = parentController.getDataContainer();
if (newParentContainer != parentDataContainer) { String newParentContainerDigest = newParentContainer != null ? newParentContainer.toString() : null;
if (newParentContainer != parentDataContainer || !Objects.equals(newParentContainerDigest, parentContainerStringDigest)) {
refreshReferenceKeyList(); refreshReferenceKeyList();
} else if (dataContainer != null) { } else if (dataContainer != null) {
refreshKeyValues(false); refreshKeyValues(false);
...@@ -193,8 +203,11 @@ class ReferencesResultsContainer implements IResultSetContainer { ...@@ -193,8 +203,11 @@ class ReferencesResultsContainer implements IResultSetContainer {
parentDataContainer = parentController.getDataContainer(); parentDataContainer = parentController.getDataContainer();
if (parentDataContainer == null) { if (parentDataContainer == null) {
parentContainerStringDigest = null;
return; return;
} }
parentContainerStringDigest = parentDataContainer.toString();
Set<DBSEntity> allEntities = new LinkedHashSet<>(); Set<DBSEntity> allEntities = new LinkedHashSet<>();
for (DBDAttributeBinding attr : visibleAttributes) { for (DBDAttributeBinding attr : visibleAttributes) {
DBSEntityAttribute entityAttribute = attr.getEntityAttribute(); DBSEntityAttribute entityAttribute = attr.getEntityAttribute();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册