diff options
author | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2019-06-10 08:45:44 +0300 |
---|---|---|
committer | Gluzskiy Alexandr <sss@sss.chaoslab.ru> | 2019-06-10 08:47:55 +0300 |
commit | fceec22e76927745f74b9853db9c4975d2680bf7 (patch) | |
tree | a2ed2492d69e50bad8497ebf0119acdb36dafe34 /plugins/Dbx_sqlite/src/dbevents.cpp | |
parent | 9e9d67e4c600277cc073b706a8d7a158e71a2b2e (diff) |
dbx_sqlite: dropped first/last event cache (broken by reimplementation)
Diffstat (limited to 'plugins/Dbx_sqlite/src/dbevents.cpp')
-rwxr-xr-x | plugins/Dbx_sqlite/src/dbevents.cpp | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/plugins/Dbx_sqlite/src/dbevents.cpp b/plugins/Dbx_sqlite/src/dbevents.cpp index e4492410cd..77aee3f4e4 100755 --- a/plugins/Dbx_sqlite/src/dbevents.cpp +++ b/plugins/Dbx_sqlite/src/dbevents.cpp @@ -32,9 +32,9 @@ static char *evt_stmts[SQL_EVT_STMT_NUM] = { "select flags from events where id = ? limit 1;", "update events set flags = ? where id = ?;", "select contact_id from events where id = ? limit 1;", - "select id, timestamp from events_srt where contact_id = ? order by timestamp;", + "select id from events_srt where contact_id = ? order by timestamp;", "select id, timestamp from events where contact_id = ? and (flags & ?) = 0 order by timestamp, id limit 1;", - "select id, timestamp from events_srt where contact_id = ? order by timestamp desc, id desc;", + "select id from events_srt where contact_id = ? order by timestamp desc, id desc;", "select id, timestamp from events where module = ? and server_id = ? limit 1;", "update events set server_id = ? where id = ?;", "insert into events_srt(id, contact_id, timestamp) values (?, ?, ?);", @@ -427,8 +427,6 @@ MEVENT CDbxSQLite::FindFirstEvent(MCONTACT hContact) if (cc == nullptr) return 0; - if (cc->m_first) - return cc->m_first; evt_cnt_fwd = hContact; @@ -441,16 +439,19 @@ MEVENT CDbxSQLite::FindFirstEvent(MCONTACT hContact) evt_cur_fwd = evt_stmts_prep[SQL_EVT_STMT_FINDFIRST]; sqlite3_bind_int64(evt_cur_fwd, 1, hContact); + int rc = sqlite3_step(evt_cur_fwd); assert(rc == SQLITE_ROW || rc == SQLITE_DONE); if (rc != SQLITE_ROW) { + //empty response + //reset sql cursor sqlite3_reset(evt_cur_fwd); evt_cur_fwd = 0; + //reset current contact + evt_cnt_fwd = 0; return 0; } - cc->m_first = sqlite3_column_int64(evt_cur_fwd, 0); - cc->m_firstTimestamp = sqlite3_column_int64(evt_cur_fwd, 1); - return cc->m_first; + return sqlite3_column_int64(evt_cur_fwd, 0); } MEVENT CDbxSQLite::FindFirstUnreadEvent(MCONTACT hContact) @@ -516,9 +517,6 @@ MEVENT CDbxSQLite::FindLastEvent(MCONTACT hContact) if (cc == nullptr) return 0; - if (cc->m_last) - return cc->m_last; - evt_cnt_backwd = hContact; mir_cslock lock(m_csDbAccess); @@ -533,13 +531,15 @@ MEVENT CDbxSQLite::FindLastEvent(MCONTACT hContact) int rc = sqlite3_step(evt_cur_backwd); assert(rc == SQLITE_ROW || rc == SQLITE_DONE); if (rc != SQLITE_ROW) { + //empty response + //reset sql cursor sqlite3_reset(evt_cur_backwd); evt_cur_backwd = 0; + //reset current contact + evt_cnt_backwd = 0; return 0; } - cc->m_last = sqlite3_column_int64(evt_cur_backwd, 0); - cc->m_lastTimestamp = sqlite3_column_int64(evt_cur_backwd, 1); - return cc->m_last; + return sqlite3_column_int64(evt_cur_backwd, 0); } MEVENT CDbxSQLite::FindNextEvent(MCONTACT hContact, MEVENT hDbEvent) @@ -566,8 +566,11 @@ MEVENT CDbxSQLite::FindNextEvent(MCONTACT hContact, MEVENT hDbEvent) assert(rc == SQLITE_ROW || rc == SQLITE_DONE); if (rc == SQLITE_DONE) { + //reset sql cursor sqlite3_reset(evt_cur_fwd); evt_cur_fwd = 0; + //reset current contact + evt_cnt_fwd = 0; return 0; } } @@ -575,8 +578,11 @@ MEVENT CDbxSQLite::FindNextEvent(MCONTACT hContact, MEVENT hDbEvent) int rc = sqlite3_step(evt_cur_fwd); assert(rc == SQLITE_ROW || rc == SQLITE_DONE); if (rc != SQLITE_ROW) { + //reset sql cursor sqlite3_reset(evt_cur_fwd); evt_cur_fwd = 0; + //reset current contact + evt_cnt_fwd = 0; return 0; } hDbEvent = sqlite3_column_int64(evt_cur_fwd, 0); @@ -608,8 +614,11 @@ MEVENT CDbxSQLite::FindPrevEvent(MCONTACT hContact, MEVENT hDbEvent) assert(rc == SQLITE_ROW || rc == SQLITE_DONE); if (rc == SQLITE_DONE) { + //reset sql cursor sqlite3_reset(evt_cur_backwd); evt_cur_backwd = 0; + //reset current contact + evt_cnt_backwd = 0; return 0; } } @@ -617,8 +626,11 @@ MEVENT CDbxSQLite::FindPrevEvent(MCONTACT hContact, MEVENT hDbEvent) int rc = sqlite3_step(evt_cur_backwd); assert(rc == SQLITE_ROW || rc == SQLITE_DONE); if (rc != SQLITE_ROW) { + //reset sql cursor sqlite3_reset(evt_cur_backwd); evt_cur_backwd = 0; + //reset current contact + evt_cnt_backwd = 0; return 0; } hDbEvent = sqlite3_column_int64(evt_cur_backwd, 0); |