| 116 | |
| 117 | |
| 118 | Request* TRA_get_prior_request(thread_db* tdbb) |
| 119 | { |
| 120 | // See if there is any request right above us in the call stack |
| 121 | Request* org_request; |
| 122 | thread_db* jrd_ctx = tdbb; |
| 123 | do |
| 124 | { |
| 125 | // Check regular request call stack |
| 126 | org_request = jrd_ctx->getRequest(); |
| 127 | if (org_request) |
| 128 | break; |
| 129 | |
| 130 | // Check for engine context switch (EXECUTE STATEMENT, etc) |
| 131 | ThreadData* ctx = jrd_ctx; |
| 132 | jrd_ctx = NULL; |
| 133 | while( (ctx = ctx->getPriorContext()) ) |
| 134 | { |
| 135 | if (ctx->getType() == ThreadData::tddDBB) |
| 136 | { |
| 137 | jrd_ctx = static_cast<thread_db*>(ctx); |
| 138 | break; |
| 139 | } |
| 140 | } |
| 141 | } while (jrd_ctx); |
| 142 | |
| 143 | return org_request; |
| 144 | } |
| 145 | |
| 146 | void TRA_setup_request_snapshot(Jrd::thread_db* tdbb, Jrd::Request* request) |
| 147 | { |
no test coverage detected