提交 a83bf665 编写于 作者: S Serge Rider 提交者: GitHub

Merge pull request #12242 from dbeaver/ref-panel-2#11201

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

Former-commit-id: 204aeb12
...@@ -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;
/**
* Full name of 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 parentContainerFullName;
private DBSDataContainer dataContainer; private DBSDataContainer dataContainer;
private final List<ReferenceKey> referenceKeys = new ArrayList<>(); private final List<ReferenceKey> referenceKeys = new ArrayList<>();
...@@ -164,16 +173,24 @@ class ReferencesResultsContainer implements IResultSetContainer { ...@@ -164,16 +173,24 @@ 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) { if (newParentContainer != parentDataContainer || !Objects.equals(getDataContainerFullName(newParentContainer), parentContainerFullName)) {
refreshReferenceKeyList(); refreshReferenceKeyList();
} else if (dataContainer != null) { } else if (dataContainer != null) {
refreshKeyValues(false); 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 * Load list of referencing keys
*/ */
...@@ -192,9 +209,11 @@ class ReferencesResultsContainer implements IResultSetContainer { ...@@ -192,9 +209,11 @@ class ReferencesResultsContainer implements IResultSetContainer {
} }
parentDataContainer = parentController.getDataContainer(); parentDataContainer = parentController.getDataContainer();
parentContainerFullName = getDataContainerFullName(parentDataContainer);
if (parentDataContainer == null) { if (parentDataContainer == null) {
return; return;
} }
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.
先完成此消息的编辑!
想要评论请 注册