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

#8416 Transaction check fixed

上级 f4032f5a
......@@ -90,7 +90,7 @@ public class PendingTransactionsDialog extends TransactionInfoDialog {
} else {
selectedContext = null;
}
boolean hasTransaction = selectedContext != null && QMUtils.isTransactionActive(selectedContext);
boolean hasTransaction = selectedContext != null && QMUtils.isTransactionActive(selectedContext, false);
commitButton.setEnabled(hasTransaction);
rollbackButton.setEnabled(hasTransaction);
logViewer.setFilter(createContextFilter(selectedContext));
......@@ -168,7 +168,7 @@ public class PendingTransactionsDialog extends TransactionInfoDialog {
}
List<DBCExecutionContext> txnContexts = new ArrayList<>();
for (DBCExecutionContext context : allContexts) {
if (showAllContexts || QMUtils.isTransactionActive(context)) {
if (showAllContexts || QMUtils.isTransactionActive(context, false)) {
txnContexts.add(context);
}
}
......
......@@ -79,6 +79,10 @@ public class QMUtils {
}
public static boolean isTransactionActive(DBCExecutionContext executionContext) {
return isTransactionActive(executionContext, true);
}
public static boolean isTransactionActive(DBCExecutionContext executionContext, boolean checkQueries) {
if (executionContext == null || application == null) {
return false;
} else {
......@@ -87,10 +91,17 @@ public class QMUtils {
QMMTransactionInfo txnInfo = sessionInfo.getTransaction();
if (txnInfo != null) {
QMMTransactionSavepointInfo sp = txnInfo.getCurrentSavepoint();
QMMStatementExecuteInfo execInfo = sp.getLastExecute();
if (execInfo != null) {
// If transaction was enabled all statements are transactional
return true;
if (sp != null) {
if (checkQueries) {
// If transaction was enabled all statements are transactional
for (QMMStatementExecuteInfo ei = sp.getLastExecute(); ei != null; ei = ei.getPrevious()) {
if (ei.isTransactional()) {
return true;
}
}
} else {
return sp.getLastExecute() != null;
}
}
// for (QMMStatementExecuteInfo exec = execInfo; exec != null && exec.getSavepoint() == sp; exec = exec.getPrevious()) {
// if (exec.isTransactional()) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册