feat: uniform rendering of stack trace from failed DB operations #9364
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Closes #9338
All DB drivers except SQL Server logs (with 'error' level) a full stack trace of any failed DB executions via the thrown exception. For SQL Server, the log only includes the message produced by
sqlsrv_errors()
. Moreover, there's inconsistency with regard to Postgre and OCI8 drivers. Sincepg_query()
andoci8_execute()
only throws because of our error handler, the stack trace also includes the error handler (the[internal function]
stack).This PR aims to make consistent the log output of these drivers by using the same trace rendering. This is already achieved by the private
Exceptions::renderBacktrace()
method for the thrown exceptions, so this PR extracts it to a new functionrender_backtrace
and uses that to format the trace. Also, trace coming from the error handler are removed.Checklist: