未验证 提交 2d560a6a 编写于 作者: G George 提交者: GitHub

#15812 allow continuing fetching after cancelling, if data in ResultSet isn't dirty (#15874)

* #15812 allow continuing fetching after cancelling, if data in ResultSet isn't dirty

#15812 allow continuing fetching after cancelling, if data in ResultSet isn't dirty

* #15812 migrate flags to state machine

* #15812 remove IN_DIALOG status

* #15812 replace with one flag
上级 848d342e
......@@ -224,8 +224,8 @@ public class ResultSetViewer extends Viewer
// Theme listener
private IPropertyChangeListener themeChangeListener;
private long lastThemeUpdateTime;
private volatile boolean awaitsReadNextSegment;
private volatile boolean awaitsSavingData;
private volatile boolean nextSegmentReadingBlocked;
public ResultSetViewer(@NotNull Composite parent, @NotNull IWorkbenchPartSite site, @NotNull IResultSetContainer container)
{
......@@ -3563,7 +3563,6 @@ public class ResultSetViewer extends Viewer
@Override
public boolean checkForChanges() {
// Check if we are dirty
if (isDirty()) {
int checkResult = new UITask<Integer>() {
@Override
......@@ -3573,17 +3572,14 @@ public class ResultSetViewer extends Viewer
}.execute();
switch (checkResult) {
case ISaveablePart2.CANCEL:
dataReceiver.setHasMoreData(false);
UIUtils.asyncExec(() -> updatePanelsContent(true));
return false;
case ISaveablePart2.YES:
// Apply changes
awaitsSavingData = true;
saveChanges(null, new ResultSetSaveSettings(), success -> {
if (success) {
UIUtils.asyncExec(() -> refreshData(null));
}
awaitsSavingData = false;
});
return false;
default:
......@@ -3727,19 +3723,22 @@ public class ResultSetViewer extends Viewer
return true;
}
public void readNextSegment() {
if (!verifyQuerySafety()) {
return;
}
if (awaitsSavingData || awaitsReadNextSegment || !dataReceiver.isHasMoreData()) {
if (!dataReceiver.isHasMoreData()) {
return;
}
if (nextSegmentReadingBlocked && isDirty()) {
return;
}
nextSegmentReadingBlocked = true;
if (!checkForChanges()) {
return;
}
try {
awaitsReadNextSegment = true;
if (!checkForChanges()) {
return;
}
DBSDataContainer dataContainer = getDataContainer();
if (dataContainer != null && !model.isUpdateInProgress()) {
dataReceiver.setHasMoreData(false);
......@@ -3757,7 +3756,7 @@ public class ResultSetViewer extends Viewer
null);
}
} finally {
awaitsReadNextSegment = false;
nextSegmentReadingBlocked = false;
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册