summaryrefslogtreecommitdiffstats
path: root/common/storage/entitystore.cpp
Commit message (Collapse)AuthorAge
* Fixed getUids by type filtering.Christian Mollekopf2017-09-07
| | | | | We used to simply return all uids. Requires "sinksh upgrade"
* No return value needed here.Christian Mollekopf2017-07-16
|
* We don't need the layout just to check for existenceChristian Mollekopf2017-05-20
|
* Avoid redoing stuff over and over that we can easily avoid.Christian Mollekopf2017-05-12
|
* Avoid copyingChristian Mollekopf2017-05-12
|
* Don't store blobs in directories.Christian Mollekopf2017-05-11
| | | | | Creating the directories is way more expensive than searching through the files on removal.
* Fixed merge implementationChristian Mollekopf2017-05-08
|
* Gather required databases from index definitions.Christian Mollekopf2017-05-08
|
* A defined table layoutChristian Mollekopf2017-05-06
|
* CleanupChristian Mollekopf2017-05-04
|
* Sanity check db namesChristian Mollekopf2017-05-03
| | | | | | lmdb and sink deal badly with e.g. a string containing a null in the millde as db name. Thus we try to protect better against it. This is an actual problem we triggered: https://phabricator.kde.org/T5880
* Moved all preprocessing back into the pipelineChristian Mollekopf2017-04-11
|
* Move the preprocssing back out of entitystore into the pipeline.Christian Mollekopf2017-04-11
| | | | | This is where this really belongs, only the indexing is part of storage. This is necessary so preprocessors can move entities as well.
* Added uid indexChristian Mollekopf2017-04-10
|
* Fixed readAllUids and readAllChristian Mollekopf2017-04-10
|
* Move type implementations in one placeChristian Mollekopf2017-03-21
| | | | | | | Having them separated is rather pointless (since we need one for every type, and all types are the interface of sink, as one), and caused quite a bit of friction when adding new types. This will also make it easier to change things for all types.
* Make opening dbis non-racyChristian Mollekopf2017-02-27
| | | | | | | | | | | | | | Dbis can only be opened by one thread and should then be shared accross all threads after committing the transaction to create the dbi. This requires us to initially open all db's, which in turn requires us to know the correct flags. This patch stores the flags to open each db in a separate db, and then opens up all databases on initial start. If a new database is created that dbi is as well shared as soon as the transaction is committed (before the dbi is private to the transaction).
* Remember whether a blob property is external or not.Christian Mollekopf2017-02-16
| | | | | ...we used to accidentally move external blobs after the property was lost when storing the modificatoin in the queue.
* Ensure we don't accidentally spawn more transactions than necessary.Christian Mollekopf2017-01-23
|
* Debug outputChristian Mollekopf2017-01-23
|
* Fixed revision cleanupChristian Mollekopf2017-01-22
|
* Fixed build issues with pedantic enabledChristian Mollekopf2017-01-12
|
* Fixed revision cleanupChristian Mollekopf2017-01-10
|
* Introduced Log::ContextChristian Mollekopf2016-12-22
| | | | | | | To have hierarchical debug output we have to pass around something at run-time, there is no reasonable alternative. Log::Context provides the identifier to do just that and largely replaces the debug component idea.
* CleanupChristian Mollekopf2016-12-20
|
* Avoid unnecessary warnings if the db is not existing.Christian Mollekopf2016-12-16
| | | | | It is expected that a query returns nothing if the db is not existing yet.
* Move the BLOB property handling to the entitystore.Christian Mollekopf2016-12-09
| | | | | | This is really part of the storage, and will help us to cleanly implement features like moving properties into a temporary place when reading in a clean way as well.
* Wrap references in a Reerence type.Christian Mollekopf2016-12-08
| | | | | | | | This allows us to make sure that references are not taken out of context (the resource). Because we need to use the type-specific accessors more we also ran into a problem that we cannot "downcast" a reference with the change recording still working, for that we have the cast<T>() operator now.
* Debug outputChristian Mollekopf2016-12-06
|
* Copy command and proper moveChristian Mollekopf2016-12-04
|
* TypeHelper so we can centrally define the type dispatchChristian Mollekopf2016-11-30
| | | | | | Not pretty, but that at least allows us to centrally define the string to type dispatch (It's somehow very hard to do in C++ without repeating all types over and over in various interfaces).
* Deal with not using the implicit internal transaction.Christian Mollekopf2016-11-24
|
* Avoid unnecessary transactions.Christian Mollekopf2016-11-22
|
* User querybaseChristian Mollekopf2016-11-04
|
* CleanupChristian Mollekopf2016-10-21
|
* Get access to properties in indexes.Christian Mollekopf2016-10-21
|
* TypeImplementation cleanupChristian Mollekopf2016-10-21
|
* Removed the whole revision cleanup into the entitystoreChristian Mollekopf2016-10-21
|
* Ported the pipeline to the entitystoreChristian Mollekopf2016-10-21
|
* Use the ApplicationDomainType in the queries as well.Christian Mollekopf2016-10-21
| | | | | We have to access properties, so we need the mapper anyways, and the ApplicationDomainType type shouldn't be a large overhead anyways.
* Refactor how the storage is used.Christian Mollekopf2016-10-21
This is the initial refactoring to improve how we deal with the storage. It does a couple of things: * Rename Sink::Storage to Sink::Storage::DataStore to free up the Sink::Storage namespace * Introduce a Sink::ResourceContext to have a single object that can be passed around containing everything that is necessary to operate on a resource. This is a lot better than the multiple separate parameters that we used to pass around all over the place, while still allowing for dependency injection for tests. * Tie storage access together using the new EntityStore that directly works with ApplicationDomainTypes. This gives us a central place where main storage, indexes and buffer adaptors are tied together, which will also give us a place to implement external indexes, such as a fulltextindex using xapian. * Use ApplicationDomainTypes as the default way to pass around entities. Instead of using various ways to pass around entities (buffers, buffer adaptors, ApplicationDomainTypes), only use a single way. The old approach was confusing, and was only done as: * optimization; really shouldn't be necessary and otherwise I'm sure we can find better ways to optimize ApplicationDomainType itself. * a way to account for entities that have multiple buffers, a concept that I no longer deem relevant. While this commit does the bulk of the work to get there, the following commits will refactor more stuff to get things back to normal.