diff options
Diffstat (limited to 'modules/database/db_sql_live.cpp')
-rw-r--r-- | modules/database/db_sql_live.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/modules/database/db_sql_live.cpp b/modules/database/db_sql_live.cpp index 7ef0528a8..f74933b98 100644 --- a/modules/database/db_sql_live.cpp +++ b/modules/database/db_sql_live.cpp @@ -216,11 +216,13 @@ class DBMySQL : public Module, public Pipe new_s->id = id; obj->objects[id] = new_s; + /* The Unserialize operation is destructive so rebuild the data for UpdateCache. + * Also the old data may contain columns that we don't use, so we reserialize the + * object to know for sure our cache is consistent + */ + Data data2; - /* The Unserialize operation is destructive so rebuild the data for UpdateCache */ - for (std::map<Anope::string, Anope::string>::const_iterator rit = row.begin(), rit_end = row.end(); rit != rit_end; ++rit) - if (rit->first != "id" && rit->first != "timestamp") - data2[rit->first] << rit->second; + new_s->Serialize(data2); new_s->UpdateCache(data2); /* We know this is the most up to date copy */ } } |