Search in sources :

Example 1 with QMMStatementExecuteInfo

use of org.jkiss.dbeaver.model.qm.meta.QMMStatementExecuteInfo in project dbeaver by serge-rider.

the class TransactionInfoDialog method createContextFilter.

protected QMEventFilter createContextFilter(DBCExecutionContext executionContext) {
    if (executionContext == null) {
        return VOID_FILTER;
    }
    final boolean showAll = showAllCheck != null && showAllCheck.getSelection();
    final boolean showPrevious = showPreviousCheck != null && showPreviousCheck.getSelection();
    final QMMSessionInfo currentSession = QMUtils.getCurrentSession(executionContext);
    final QMMTransactionSavepointInfo currentSP = QMUtils.getCurrentTransaction(executionContext);
    QMEventFilter filter = new QMEventFilter() {

        @Override
        public boolean accept(QMMetaEvent event) {
            QMMObject object = event.getObject();
            if (object instanceof QMMStatementExecuteInfo) {
                QMMStatementExecuteInfo exec = (QMMStatementExecuteInfo) object;
                if (!showPrevious && exec.getSavepoint() != currentSP) {
                    return false;
                }
                if (exec.getStatement().getSession() != currentSession) {
                    return false;
                }
                return (showAll || exec.isTransactional());
            }
            return false;
        }
    };
    return filter;
}
Also used : QMMSessionInfo(org.jkiss.dbeaver.model.qm.meta.QMMSessionInfo) QMEventFilter(org.jkiss.dbeaver.model.qm.QMEventFilter) QMMetaEvent(org.jkiss.dbeaver.model.qm.QMMetaEvent) QMMStatementExecuteInfo(org.jkiss.dbeaver.model.qm.meta.QMMStatementExecuteInfo) QMMObject(org.jkiss.dbeaver.model.qm.meta.QMMObject) QMMTransactionSavepointInfo(org.jkiss.dbeaver.model.qm.meta.QMMTransactionSavepointInfo)

Example 2 with QMMStatementExecuteInfo

use of org.jkiss.dbeaver.model.qm.meta.QMMStatementExecuteInfo in project dbeaver by serge-rider.

the class QMUtils method getTransactionState.

public static QMTransactionState getTransactionState(DBCExecutionContext executionContext) {
    int execCount = 0, updateCount = 0;
    final boolean txnMode;
    long txnStartTime = 0;
    if (executionContext == null || application == null) {
        txnMode = false;
    } else {
        QMMSessionInfo sessionInfo = getCurrentSession(executionContext);
        if (sessionInfo == null || sessionInfo.isClosed()) {
            txnMode = false;
        } else if (sessionInfo.isTransactional()) {
            QMMTransactionInfo txnInfo = sessionInfo.getTransaction();
            if (txnInfo != null) {
                txnMode = true;
                QMMTransactionSavepointInfo sp = txnInfo.getCurrentSavepoint();
                QMMStatementExecuteInfo execInfo = sp.getLastExecute();
                for (QMMStatementExecuteInfo exec = execInfo; exec != null && exec.getSavepoint() == sp; exec = exec.getPrevious()) {
                    execCount++;
                    if (exec.isTransactional() && !exec.hasError()) {
                        txnStartTime = exec.getOpenTime();
                        updateCount++;
                    }
                }
            } else {
                // No active transaction?
                txnMode = false;
            }
        } else {
            txnMode = false;
        }
    }
    return new QMTransactionState(execCount, updateCount, txnMode, txnStartTime);
}
Also used : QMMSessionInfo(org.jkiss.dbeaver.model.qm.meta.QMMSessionInfo) QMMStatementExecuteInfo(org.jkiss.dbeaver.model.qm.meta.QMMStatementExecuteInfo) QMMTransactionSavepointInfo(org.jkiss.dbeaver.model.qm.meta.QMMTransactionSavepointInfo) QMMTransactionInfo(org.jkiss.dbeaver.model.qm.meta.QMMTransactionInfo)

Example 3 with QMMStatementExecuteInfo

use of org.jkiss.dbeaver.model.qm.meta.QMMStatementExecuteInfo in project dbeaver by serge-rider.

the class QMUtils method isTransactionActive.

public static boolean isTransactionActive(DBCExecutionContext executionContext) {
    if (executionContext == null || application == null) {
        return false;
    } else {
        QMMSessionInfo sessionInfo = getCurrentSession(executionContext);
        if (sessionInfo != null) {
            QMMTransactionInfo txnInfo = sessionInfo.getTransaction();
            if (txnInfo != null) {
                QMMTransactionSavepointInfo sp = txnInfo.getCurrentSavepoint();
                QMMStatementExecuteInfo execInfo = sp.getLastExecute();
                for (QMMStatementExecuteInfo exec = execInfo; exec != null && exec.getSavepoint() == sp; exec = exec.getPrevious()) {
                    if (exec.isTransactional()) {
                        return true;
                    }
                }
            }
        }
    }
    return false;
}
Also used : QMMSessionInfo(org.jkiss.dbeaver.model.qm.meta.QMMSessionInfo) QMMStatementExecuteInfo(org.jkiss.dbeaver.model.qm.meta.QMMStatementExecuteInfo) QMMTransactionSavepointInfo(org.jkiss.dbeaver.model.qm.meta.QMMTransactionSavepointInfo) QMMTransactionInfo(org.jkiss.dbeaver.model.qm.meta.QMMTransactionInfo)

Aggregations

QMMSessionInfo (org.jkiss.dbeaver.model.qm.meta.QMMSessionInfo)3 QMMStatementExecuteInfo (org.jkiss.dbeaver.model.qm.meta.QMMStatementExecuteInfo)3 QMMTransactionSavepointInfo (org.jkiss.dbeaver.model.qm.meta.QMMTransactionSavepointInfo)3 QMMTransactionInfo (org.jkiss.dbeaver.model.qm.meta.QMMTransactionInfo)2 QMEventFilter (org.jkiss.dbeaver.model.qm.QMEventFilter)1 QMMetaEvent (org.jkiss.dbeaver.model.qm.QMMetaEvent)1 QMMObject (org.jkiss.dbeaver.model.qm.meta.QMMObject)1