提交 587cf9bc 编写于 作者: S serge-rider

#3515 Links navigation fix (target container resolution)


Former-commit-id: fa2427fc
上级 2ac710fa
......@@ -51,6 +51,7 @@ class ResultSetDataReceiver implements DBDDataReceiver {
// All (unique) errors happened during fetch
private List<Throwable> errorList = new ArrayList<>();
private int focusRow;
private DBSDataContainer targetDataContainer;
ResultSetDataReceiver(ResultSetViewer resultSetViewer)
{
......@@ -69,6 +70,14 @@ class ResultSetDataReceiver implements DBDDataReceiver {
this.nextSegmentRead = nextSegmentRead;
}
public void setFocusRow(int focusRow) {
this.focusRow = focusRow;
}
public void setTargetDataContainer(DBSDataContainer targetDataContainer) {
this.targetDataContainer = targetDataContainer;
}
public List<Throwable> getErrorList() {
return errorList;
}
......@@ -143,7 +152,7 @@ class ResultSetDataReceiver implements DBDDataReceiver {
try {
// Read locators' metadata
DBSEntity entity = null;
DBSDataContainer dataContainer = resultSetViewer.getDataContainer();
DBSDataContainer dataContainer = targetDataContainer != null ? targetDataContainer : resultSetViewer.getDataContainer();
if (dataContainer instanceof DBSEntity) {
entity = (DBSEntity) dataContainer;
}
......@@ -181,8 +190,4 @@ class ResultSetDataReceiver implements DBDDataReceiver {
rows = new ArrayList<>();
}
public void setFocusRow(int focusRow) {
this.focusRow = focusRow;
}
}
......@@ -2349,12 +2349,13 @@ public class ResultSetViewer extends Viewer
if (newWindow) {
openResultsInNewWindow(monitor, targetEntity, newFilter);
} else {
DBSDataContainer targetDataContainer = (DBSDataContainer) targetEntity;
// Workaround for script results
// In script mode history state isn't updated so we check for it here
if (curState == null) {
setNewState(getDataContainer(), model.getDataFilter());
setNewState(targetDataContainer, model.getDataFilter());
}
runDataPump((DBSDataContainer) targetEntity, newFilter, 0, getSegmentMaxRows(), -1, true, false, null);
runDataPump(targetDataContainer, newFilter, 0, getSegmentMaxRows(), -1, true, false, null);
}
}
......@@ -2762,6 +2763,8 @@ public class ResultSetViewer extends Viewer
}
final Object presentationState = savePresentationState();
dataReceiver.setFocusRow(focusRow);
// Set explicit target container
dataReceiver.setTargetDataContainer(dataContainer);
dataPumpJob = new ResultSetJobDataRead(
dataContainer,
useDataFilter,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册