Let the JSON formatter include a metric's data_names. For that purpose, let the metric store provide a reference to the timeseries information object (to be populated on read). The JSON formatter compiles a list of unique data_names and outputs that alongside the other metric metadata.
Let the network protocol and SysQL support last_update for metric stores.
Store a separate last_update timestamp for metric stores. Currently, it is (at least) the same as the metric's last_update timestamp. We'll need this later when supporting multiple metric stores.
Handle last_update/interval in the core rather than in memstore. For this purpose, let the sdb_plugin_store_* functions fetch the latest revision of the object to determine the last update interval and last recorded interval. The memstore now expects both values to be passed in whenever storing/updating an object.
memstore: Let get_child() support arbitrary parent and child elements.
Split the memstore module from the store module.
Renamed in-memory store types and functions to sdb_memstore*.
store: All store functions now accept a store object. That is, instead of operating on a global, shared instance.
Drop sdb_store_get_host() from tests.
Replaced sdb_store_<type> with sdb_plugin_store_<type>. That is, all store updates will now directly go through the plugin API and be distributed to all store-writer plugins from there.
store: Make the actual store a separate object. That'll allow us to use different store objects in multiple places in the future.
store: Added field type VALUE for attribute values.
store: Test get_field() more extensively and fix a small bug. Use a table-driven test now.
t/unit/: Create one test binary for each *_test.c file. That'll allow to run more stuff in parallel or single tests more selectively.
store: Don't report an error in scan() if the store is still empty.
store: Added sdb_store_get_child(). This function may be used to retrieve a host's child object (service, metric, attribute) by it's name.
store: Removed now unused tojson functions.
store: Let sdb_store_scan() pass on filters to callback functions. The callback function needs access to the filter anyway, so let's handle this centrally.
store: Let sdb_store_scan() support other object types besides hosts.
store: Merged sdb_store_iterate() into sdb_store_scan(). These functions are really the same when using a NULL matcher and filter.