diff --git a/libstuff/libstuff.cpp b/libstuff/libstuff.cpp index 095d8e08e..42544bcb6 100644 --- a/libstuff/libstuff.cpp +++ b/libstuff/libstuff.cpp @@ -2535,7 +2535,7 @@ void SQueryLogClose() { // -------------------------------------------------------------------------- // Executes a SQLite query -int SQuery(sqlite3* db, const char* e, const string& sql, SQResult& result, int64_t warnThreshold, bool skipWarn) { +int SQuery(sqlite3* db, const char* e, const string& sql, SQResult& result, int64_t warnThreshold, bool skipInfoWarn) { #define MAX_TRIES 3 // Execute the query and get the results uint64_t startTime = STimeNow(); @@ -2666,7 +2666,7 @@ int SQuery(sqlite3* db, const char* e, const string& sql, SQResult& result, int6 } uint64_t elapsed = STimeNow() - startTime; - if ((int64_t)elapsed > warnThreshold || (int64_t)elapsed > 10000) { + if (!skipInfoWarn && ((int64_t)elapsed > warnThreshold || (int64_t)elapsed > 10000)) { // Avoid logging queries so long that we need dozens of lines to log them. string sqlToLog = sql.substr(0, 20000); SRedactSensitiveValues(sqlToLog); @@ -2703,7 +2703,7 @@ int SQuery(sqlite3* db, const char* e, const string& sql, SQResult& result, int6 // Only OK and commit conflicts are allowed without warning because they're the only "successful" results that we expect here. // OK means it succeeds, conflicts will get retried further up the call stack. - if (error != SQLITE_OK && extErr != SQLITE_BUSY_SNAPSHOT && !skipWarn) { + if (error != SQLITE_OK && extErr != SQLITE_BUSY_SNAPSHOT && !skipInfoWarn) { string sqlToLog = sql.substr(0, 20000); SRedactSensitiveValues(sqlToLog); @@ -3062,9 +3062,9 @@ string SQ(double val) { return SToStr(val); } -int SQuery(sqlite3* db, const char* e, const string& sql, int64_t warnThreshold, bool skipWarn) { +int SQuery(sqlite3* db, const char* e, const string& sql, int64_t warnThreshold, bool skipInfoWarn) { SQResult ignore; - return SQuery(db, e, sql, ignore, warnThreshold, skipWarn); + return SQuery(db, e, sql, ignore, warnThreshold, skipInfoWarn); } string SUNQUOTED_TIMESTAMP(uint64_t when) { diff --git a/libstuff/libstuff.h b/libstuff/libstuff.h index bdd503b60..5a3cd5af2 100644 --- a/libstuff/libstuff.h +++ b/libstuff/libstuff.h @@ -591,8 +591,8 @@ void SQueryLogOpen(const string& logFilename); void SQueryLogClose(); // Returns an SQLite result code. -int SQuery(sqlite3* db, const char* e, const string& sql, SQResult& result, int64_t warnThreshold = 2000 * STIME_US_PER_MS, bool skipWarn = false); -int SQuery(sqlite3* db, const char* e, const string& sql, int64_t warnThreshold = 2000 * STIME_US_PER_MS, bool skipWarn = false); +int SQuery(sqlite3* db, const char* e, const string& sql, SQResult& result, int64_t warnThreshold = 2000 * STIME_US_PER_MS, bool skipInfoWarn = false); +int SQuery(sqlite3* db, const char* e, const string& sql, int64_t warnThreshold = 2000 * STIME_US_PER_MS, bool skipInfoWarn = false); bool SQVerifyTable(sqlite3* db, const string& tableName, const string& sql); bool SQVerifyTableExists(sqlite3* db, const string& tableName); diff --git a/sqlitecluster/SQLite.cpp b/sqlitecluster/SQLite.cpp index bbe69c248..738e1a846 100644 --- a/sqlitecluster/SQLite.cpp +++ b/sqlitecluster/SQLite.cpp @@ -475,7 +475,7 @@ string SQLite::read(const string& query) const { return result[0][0]; } -bool SQLite::read(const string& query, SQResult& result) const { +bool SQLite::read(const string& query, SQResult& result, bool skipInfoWarn) const { uint64_t before = STimeNow(); bool queryResult = false; _queryCount++; @@ -486,7 +486,7 @@ bool SQLite::read(const string& query, SQResult& result) const { queryResult = true; } else { _isDeterministicQuery = true; - queryResult = !SQuery(_db, "read only query", query, result); + queryResult = !SQuery(_db, "read only query", query, result, 2000 * STIME_US_PER_MS, skipInfoWarn); if (_isDeterministicQuery && queryResult) { _queryCache.emplace(make_pair(query, result)); } diff --git a/sqlitecluster/SQLite.h b/sqlitecluster/SQLite.h index 509ff47fb..ae9e7b711 100644 --- a/sqlitecluster/SQLite.h +++ b/sqlitecluster/SQLite.h @@ -75,7 +75,7 @@ class SQLite { // Performs a read-only query (eg, SELECT). This can be done inside or outside a transaction. Returns true on // success, and fills the 'result' with the result of the query. - bool read(const string& query, SQResult& result) const; + bool read(const string& query, SQResult& result, bool skipInfoWarn = false) const; // Performs a read-only query (eg, SELECT) that returns a single value. string read(const string& query) const;