sql: Integrate SqliteResultCode with sql::Statement.
Bug: 1308290
Change-Id: Idec3754173581b72452bc0e0ca4b0aab82562bef
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3538833
Auto-Submit: Victor Costan <[email protected]>
Reviewed-by: Austin Sullivan <[email protected]>
Commit-Queue: Austin Sullivan <[email protected]>
Cr-Commit-Position: refs/heads/main@{#983682}
diff --git a/sql/sqlite_result_code.cc b/sql/sqlite_result_code.cc
index e8b2d57..0d9ca88 100644
--- a/sql/sqlite_result_code.cc
+++ b/sql/sqlite_result_code.cc
@@ -359,6 +359,31 @@
#endif // DCHECK_IS_ON()
+bool IsSqliteSuccessCode(SqliteResultCode sqlite_result_code) {
+ // https://www.sqlite.org/rescode.html lists the result codes that are not
+ // errors.
+ bool is_success = (sqlite_result_code == SqliteResultCode::kOk) ||
+ (sqlite_result_code == SqliteResultCode::kRow) ||
+ (sqlite_result_code == SqliteResultCode::kDone);
+
+#if DCHECK_IS_ON()
+ SqliteLoggedResultCode logged_code = static_cast<SqliteLoggedResultCode>(
+ FindResultCode(static_cast<int>(sqlite_result_code)).logged_code);
+
+ DCHECK_EQ(is_success, logged_code == SqliteLoggedResultCode::kNoError)
+ << __func__ << " logic disagrees with the code mapping for "
+ << sqlite_result_code;
+
+ DCHECK_NE(logged_code, SqliteLoggedResultCode::kUnusedSqlite)
+ << "SQLite reported code marked for internal use: " << sqlite_result_code;
+ DCHECK_NE(logged_code, SqliteLoggedResultCode::kUnusedChrome)
+ << "SQLite reported code that should never show up in Chrome: "
+ << sqlite_result_code;
+#endif // DCHECK_IS_ON()
+
+ return is_success;
+}
+
SqliteLoggedResultCode ToSqliteLoggedResultCode(int sqlite_result_code) {
SqliteLoggedResultCode logged_code = static_cast<SqliteLoggedResultCode>(
FindResultCode(sqlite_result_code).logged_code);