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

#8416 Transaction check fixed

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