https://bugs.freedesktop.org/show_bug.cgi?id=88695
Bug ID: 88695
Summary: RowSet and its cloens share a cache: can lead to cache
trashing
Product: LibreOffice
Version: unspecified
Hardware: Other
OS: All
Status: NEW
Severity: normal
Priority: medium
Component: Database
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected]
A RowSet (dbaccess::ORowSet in dbaccess/source/core/api/RowSet.[ch]xx) and its
clones (created by member function createResultSet, type dbaccess:ORowSetClone)
share a cache (dbaccess::ORowSetCache).
This can lead to constant cache trashing when the rowset and its clone (or two
clones) are in very different positions and operations on them are interleaved,
so that the cache's window is constantly moved back and forth.
What can we do about that?
1) They each have their own cache. That's a no-go because then one rowset/clone
becomes blind to the inserts, updates and deletes of the other rowset/clone.
2) They each have their own cache, but the caches cooperate. Complex.
3) We improve dbaccess::ORowSetCache to manage *several* windows instead of
only one, so that at all times least one window serves each ORowSet(Clone). If
two ORowSet(Clone)s can be served by the same window, all the better. A window
"dies" when all ORowSet(Clone)s move out of it. That looks like the most
reasonable solution. For simplicity, windows never overlap; if they do, they
get merged?
--
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
Libreoffice-bugs mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice-bugs