Include extended error codes in error messages#6321
Include extended error codes in error messages#6321zachlefevre wants to merge 2 commits intomainfrom
Conversation
There was a problem hiding this comment.
I'm Bonk, and I've done a quick review of your PR.
This PR adds the SQLite extended error code to error messages in dbErrorMessage(). A few issues:
-
[MEDIUM] Extended error code is appended as a raw integer.
sqlite3_extended_errcode()returns anint— appending it directly produces something likeSQLITE_CONSTRAINT- 19(orSQLITE_CONSTRAINT- 2067forSQLITE_CONSTRAINT_UNIQUE). The raw number isn't useful for debugging. Consider usingsqlite3_errstr()which accepts extended error codes and returns a human-readable string (e.g.,"UNIQUE constraint failed"). -
[LOW] Missing space before dash. The format string
"- "producesSQLITE_ERROR- 1— there should be a space before the dash for readability. -
[LOW] Variable naming.
extendedErrorMessageis misleading sincesqlite3_extended_errcode()returns anint, not a message string. Something likeextendedErrorCodewould be more accurate.
These comments were generated by an AI code review assistant and may not be perfect.
| auto extendedErrorMessage = sqlite3_extended_errcode(db); | ||
| if (int offset = sqlite3_error_offset(db); offset != -1) { | ||
| msg = kj::strTree(kj::mv(msg), " at offset ", offset); | ||
| } | ||
| msg = kj::strTree(kj::mv(msg), ": ", namedErrorCode(errorCode)); | ||
| msg = kj::strTree(kj::mv(msg), ": ", namedErrorCode(errorCode), "- ", extendedErrorMessage); |
There was a problem hiding this comment.
A few issues with these lines:
sqlite3_extended_errcode()returns anint, but the variable is namedextendedErrorMessage— this is misleading.- The extended error code is appended as a raw integer, which isn't very useful for debugging. The codebase already uses
sqlite3_errstr()elsewhere (e.g., inSQLITE_CALL_NODB) which handles extended codes and returns a human-readable string. - There's a missing space before the dash:
"- "should be" - "(or use" (extended: ...)"to clearly delineate it). - When there is no extended info,
sqlite3_extended_errcode()returns the same value as the primary code, so you'd get redundant output likeSQLITE_ERROR - SQLITE_ERROR. Consider only appending when the extended code differs from the primary code.
| auto extendedErrorMessage = sqlite3_extended_errcode(db); | |
| if (int offset = sqlite3_error_offset(db); offset != -1) { | |
| msg = kj::strTree(kj::mv(msg), " at offset ", offset); | |
| } | |
| msg = kj::strTree(kj::mv(msg), ": ", namedErrorCode(errorCode)); | |
| msg = kj::strTree(kj::mv(msg), ": ", namedErrorCode(errorCode), "- ", extendedErrorMessage); | |
| auto extendedErrorCode = sqlite3_extended_errcode(db); | |
| if (int offset = sqlite3_error_offset(db); offset != -1) { | |
| msg = kj::strTree(kj::mv(msg), " at offset ", offset); | |
| } | |
| msg = kj::strTree(kj::mv(msg), ": ", namedErrorCode(errorCode)); | |
| if (extendedErrorCode != errorCode) { | |
| msg = kj::strTree(kj::mv(msg), " (extended: ", sqlite3_errstr(extendedErrorCode), ")"); | |
| } |
Co-authored-by: zachlefevre <zachlefevre@users.noreply.github.com>
|
Review posted successfully on PR #6321. Here's a summary of the findings:
I also included a concrete suggestion that only appends the extended code when it differs from the primary code (to avoid redundant output like |
SQLITE error logs should include that error's extended error code.