only PQcancel if DbResult::complete() is false #159
Merged
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.
The test at line 220:
... is a little ugly, though the const_cast was needed since
pCurrentResult_
is declared as aconst *DbResult
but the method implementations don't expect aconst
this
.Rather than re-write a lot of the other code, I thought this was the path of least resistance. (Especially since
complete()
doesn't change anything in theDbResult
, only gets a value; i.e. the const_cast is safe here.)I also cleaned up some of the logic in
set_current_result
, since if we're setting a new result, regardless of that new result's value (i.e. even if it's NULL) we should try to clean-up the previous result.Finally, I made a few changes to the
cancel_query()
function itself, as the comments didn't exactly reflect the documented pattern described here. (I also placed a link to those docs in the comments forcancel_query()
.)So far in my own testing, this change works and still behaves nicely if folks try to issue a new query prior to calling
dbCleanResult()
.