void SQLTransaction::deliverStatementCallback() { // Spec 4.3.2.6.6 and 4.3.2.6.3: If the statement callback went wrong, jump to the transaction error callback // Otherwise, continue to loop through the statement queue m_executeSqlAllowed = true; SQLStatement* currentStatement = m_backend->currentStatement(); ASSERT(currentStatement); bool result = currentStatement->performCallback(this); m_executeSqlAllowed = false; if (result) { m_transactionError = SQLError::create(SQLError::UNKNOWN_ERR, "the statement callback raised an exception or statement error callback did not return false"); if (m_errorCallbackWrapper.hasCallback()) return deliverTransactionErrorCallback(); // No error callback, so fast-forward to: // Transaction Step 11 - Rollback the transaction. m_backend->requestTransitToState(SQLTransactionState::CleanupAfterTransactionErrorCallback); return; } m_backend->requestTransitToState(SQLTransactionState::RunStatements); }
SQLTransactionState SQLTransaction::deliverStatementCallback() { // Spec 4.3.2.6.6 and 4.3.2.6.3: If the statement callback went wrong, jump to the transaction error callback // Otherwise, continue to loop through the statement queue m_executeSqlAllowed = true; SQLStatement* currentStatement = m_backend->currentStatement(); ASSERT(currentStatement); bool result = currentStatement->performCallback(this); m_executeSqlAllowed = false; if (result) { m_database->reportCommitTransactionResult(2, SQLError::UNKNOWN_ERR, 0); m_transactionError = SQLErrorData::create(SQLError::UNKNOWN_ERR, "the statement callback raised an exception or statement error callback did not return false"); return nextStateForTransactionError(); } return SQLTransactionState::RunStatements; }