Code

sysdb.git
9 years agoRelease SysDB 0.3.0. sysdb-0.3.0
Sebastian Harl [Fri, 1 Aug 2014 18:37:53 +0000 (20:37 +0200)]
Release SysDB 0.3.0.

9 years agounit tests: Fixed some -Werror=unused-result compiler errors.
Sebastian Harl [Fri, 1 Aug 2014 18:35:31 +0000 (20:35 +0200)]
unit tests: Fixed some -Werror=unused-result compiler errors.

9 years agoReleaseNotes: Added 0.3.0 release.
Sebastian Harl [Fri, 1 Aug 2014 18:26:30 +0000 (20:26 +0200)]
ReleaseNotes: Added 0.3.0 release.

9 years agodata: Support some arithmetic expressions on mismatching types.
Sebastian Harl [Fri, 1 Aug 2014 06:59:50 +0000 (08:59 +0200)]
data: Support some arithmetic expressions on mismatching types.

The following cases are now supported:
 - <integer> or <decimal> <mul> <datetime>
 - <datetime> <mul> or <div> or <mod> <integer> or <decimal>

Think of <datetime> having a time unit like seconds. It's perfectly fine to
multiply with or divide seconds by a number. However, since we don't have any
type having the unit Hertz, we cannot support numbers divided by <datetime>.

9 years agofrontend/grammar: Added support for field names in expressions.
Sebastian Harl [Thu, 31 Jul 2014 21:38:51 +0000 (23:38 +0200)]
frontend/grammar: Added support for field names in expressions.

9 years agostore_expr: Added support to include field values in an expression.
Sebastian Harl [Thu, 31 Jul 2014 21:09:29 +0000 (23:09 +0200)]
store_expr: Added support to include field values in an expression.

Added sdb_store_expr_fieldvalue() to create such an expression object and pass
a stored object to sdb_store_expr_eval() to be able to extract the field value
when evaluation the expression.

9 years agostore: Added sdb_store_get_field().
Sebastian Harl [Thu, 31 Jul 2014 21:07:30 +0000 (23:07 +0200)]
store: Added sdb_store_get_field().

This function may be used to retrieve the value of queryable fields of objects
in the store.

For now, all fields except the backend(s) are supported.

9 years agosysdbql(7): Document FILTER clauses.
Sebastian Harl [Wed, 30 Jul 2014 19:22:24 +0000 (21:22 +0200)]
sysdbql(7): Document FILTER clauses.

9 years agofrontend: Added 'FILTER' support to the 'LOOKUP' command.
Sebastian Harl [Wed, 30 Jul 2014 19:02:35 +0000 (21:02 +0200)]
frontend: Added 'FILTER' support to the 'LOOKUP' command.

The new syntax is 'LOOKUP <obj> MATCHING <cond> [FILTER <cond>]'.

9 years agot/integration: Execute test scripts using 'set -x'.
Sebastian Harl [Wed, 30 Jul 2014 19:01:11 +0000 (21:01 +0200)]
t/integration: Execute test scripts using 'set -x'.

A lot of tests fail rather silently. This helps identify the failing test.

9 years agofrontend/scanner: Simplified handling of reserved words.
Sebastian Harl [Wed, 30 Jul 2014 09:44:06 +0000 (11:44 +0200)]
frontend/scanner: Simplified handling of reserved words.

9 years agostore, frontend: Parse object field matchers.
Sebastian Harl [Wed, 30 Jul 2014 08:48:23 +0000 (10:48 +0200)]
store, frontend: Parse object field matchers.

Field names are identified as ":<field-name>" and all conditional operators
are supported to compare them against an expression.

9 years agofrontend/parser: Added support for time interval values.
Sebastian Harl [Wed, 30 Jul 2014 08:31:39 +0000 (10:31 +0200)]
frontend/parser: Added support for time interval values.

9 years agotime: Added sdb_strpunit() to parse a time unit.
Sebastian Harl [Wed, 30 Jul 2014 08:24:30 +0000 (10:24 +0200)]
time: Added sdb_strpunit() to parse a time unit.

9 years agotime: Renamed PRIscTIME to PRIsdbTIME.
Sebastian Harl [Wed, 30 Jul 2014 07:30:35 +0000 (09:30 +0200)]
time: Renamed PRIscTIME to PRIsdbTIME.

Another remnant of the “syscollector” days ;-)

9 years agofrontend: Let FETCH/LIST/LOOKUP implementations accept filters.
Sebastian Harl [Tue, 29 Jul 2014 20:59:28 +0000 (22:59 +0200)]
frontend: Let FETCH/LIST/LOOKUP implementations accept filters.

This is in preparation for letting the parser support filters. It's not
actually used yet.

9 years agostore: Fixed JSON serialization when skipping hosts due to filters.
Sebastian Harl [Tue, 29 Jul 2014 20:49:44 +0000 (22:49 +0200)]
store: Fixed JSON serialization when skipping hosts due to filters.

Previously, it might have happened that a comma was appended to a list of
hosts even though all subsequent hosts were filtered out. This created invalid
JSON. Now, don't let sdb_store_host_tojson ignore hosts entirely. Instead,
always let it serialize the host passed to the function and only pass on the
filter to child objects. The caller is now responsible for calling the filter
and, at the same time, the caller is able to correctly handle skipped hosts.

Fixed the unit-test which should have caught this.

9 years agostore: Let JSON serializers support (object) filters.
Sebastian Harl [Tue, 29 Jul 2014 20:18:14 +0000 (22:18 +0200)]
store: Let JSON serializers support (object) filters.

Only objects covered by the specified filter will be included in the JSON
output.

9 years agoliboconfig: Relicensed to MIT license.
Sebastian Harl [Tue, 29 Jul 2014 19:14:34 +0000 (21:14 +0200)]
liboconfig: Relicensed to MIT license.

Florian Forster relicensed the code in collectd's Git commit
633c3966f770e4d46651a2fe219a18d8a9907a9f.

<https://github.com/collectd/collectd/commit/633c3966f770e4d46651a2fe219a18d8a9907a9f>

9 years agostore_lookup: Added conditional for accessing store-object fields.
Sebastian Harl [Tue, 29 Jul 2014 18:49:24 +0000 (20:49 +0200)]
store_lookup: Added conditional for accessing store-object fields.

Fields are "last-update", "age", "interval", and "backend".

"backend" only supports the lookup of objects provided by a named backend but
no conditional checks.

9 years agostore_lookup: Make sure to always initialize the buffer in tostring().
Sebastian Harl [Tue, 29 Jul 2014 16:58:37 +0000 (18:58 +0200)]
store_lookup: Make sure to always initialize the buffer in tostring().

9 years agostore: Make matchers more generic and applicable to non-hosts as well.
Sebastian Harl [Mon, 28 Jul 2014 21:36:05 +0000 (23:36 +0200)]
store: Make matchers more generic and applicable to non-hosts as well.

Most of the matchers are actually not specific to hosts and may be re-used for
different purposes (e.g. filters). Make them applicable to arbitrary object
types (again) and only check for the right object type when actually needed.

Added simple unit-tests covering filters applied to all types of objects.

9 years agostore: Introduced the concept of query filters.
Sebastian Harl [Mon, 28 Jul 2014 20:25:04 +0000 (22:25 +0200)]
store: Introduced the concept of query filters.

A filter may be used to preselect objects when evaluating a query. Any object
that's used during the evaluation of a matcher will be compared against the
filter. Only matching objects will be considered further.

9 years agostore, frontend: Let lookups support arbitrary expressions for comparison.
Sebastian Harl [Mon, 28 Jul 2014 19:16:14 +0000 (21:16 +0200)]
store, frontend: Let lookups support arbitrary expressions for comparison.

… rather than simple values.

When comparing object names, the expression has to evaluate to a (constant)
string but conditional attribute comparison supports arbitrary expressions.

Expressions are only evaluated when using them during a comparison even though
we only support constant expressions so far. This will be optimized in the
future.

9 years agostore_lookup: Catch invalid values when parsing a matcher.
Sebastian Harl [Mon, 28 Jul 2014 07:15:19 +0000 (09:15 +0200)]
store_lookup: Catch invalid values when parsing a matcher.

Added a unit-test exposing the segfault we would have seen previously.

9 years agofrontend: Added a parser for arithmetic expressions.
Sebastian Harl [Sun, 27 Jul 2014 22:27:12 +0000 (00:27 +0200)]
frontend: Added a parser for arithmetic expressions.

For now, the expressions are used in place of a datum but the parser will
actually evaluate the expression before passing it on to the store during
lookup. Since expressions currently cover constant results only, this is not a
limitation for now.

9 years agostore_expr: Added framework for arithmetic expressions.
Sebastian Harl [Sun, 27 Jul 2014 22:25:16 +0000 (00:25 +0200)]
store_expr: Added framework for arithmetic expressions.

A store expression describes the parse tree of an arithmetic expression and
provides means to execute it (based on sdb_data_expr_eval()).

9 years agodata: Added sdb_data_expr_eval().
Sebastian Harl [Sun, 27 Jul 2014 21:06:03 +0000 (23:06 +0200)]
data: Added sdb_data_expr_eval().

This function may be used to evaluate simple operation expressions on data
values. Supported operators are +, -, *, /, %, and (for string and binary
values) concatenation.

9 years agoMerged branch 'master' of git://git.tokkee.org/sysdb.
Sebastian Harl [Sun, 27 Jul 2014 17:09:01 +0000 (19:09 +0200)]
Merged branch 'master' of git://git.tokkee.org/sysdb.

Conflicts:
src/frontend/grammar.y

9 years agoQuery language: Changed 'LOOKUP .. WHERE' to 'LOOKUP .. MATCHING'.
Sebastian Harl [Sun, 27 Jul 2014 16:42:23 +0000 (18:42 +0200)]
Query language: Changed 'LOOKUP .. WHERE' to 'LOOKUP .. MATCHING'.

'WHERE' was too SQL-like while it has somewhat different semantics. Using a
different keyword will hopefully avoid any confusion.

9 years agoMerged branch 'master' of git://git.tokkee.org/sysdb.
Sebastian Harl [Sun, 27 Jul 2014 16:13:55 +0000 (18:13 +0200)]
Merged branch 'master' of git://git.tokkee.org/sysdb.

9 years agostore, frontend: Renamed sdb_store_lookup() to sdb_store_scan().
Sebastian Harl [Sun, 27 Jul 2014 15:35:38 +0000 (17:35 +0200)]
store, frontend: Renamed sdb_store_lookup() to sdb_store_scan().

It does a full scan of the entire store, so lookup sounds a bit euphemistic.

9 years agoAdded the SysDB homepage to all manpages.
Sebastian Harl [Sun, 27 Jul 2014 13:36:46 +0000 (15:36 +0200)]
Added the SysDB homepage to all manpages.

9 years agoREADME: Added links to documentation and "getting help".
Sebastian Harl [Wed, 23 Jul 2014 08:16:11 +0000 (10:16 +0200)]
README: Added links to documentation and "getting help".

9 years agoCleaned up nomenclature in the parser.
Sebastian Harl [Tue, 22 Jul 2014 06:17:20 +0000 (08:17 +0200)]
Cleaned up nomenclature in the parser.

Replace the generic "expression" with "condition".

9 years agoAdded upstream homepages to backend manpages.
Sebastian Harl [Mon, 21 Jul 2014 20:19:18 +0000 (22:19 +0200)]
Added upstream homepages to backend manpages.

9 years agosysdbql(7): Updated based on latest changes to the query language.
Sebastian Harl [Mon, 21 Jul 2014 17:42:56 +0000 (19:42 +0200)]
sysdbql(7): Updated based on latest changes to the query language.

9 years agostore, frontend: Switch from <obj>.name to <obj>.
Sebastian Harl [Mon, 21 Jul 2014 16:51:48 +0000 (18:51 +0200)]
store, frontend: Switch from <obj>.name to <obj>.

This feels a bit more natural and no longer shadows attributes called "name".

9 years agostore_lookup: Don't allow 'IS <non-NULL>'.
Sebastian Harl [Mon, 21 Jul 2014 07:16:44 +0000 (09:16 +0200)]
store_lookup: Don't allow 'IS <non-NULL>'.

This would have been silently treated as 'IS NULL'.

9 years agosysdb: Fixed a memory leak in an error condition.
Sebastian Harl [Sun, 20 Jul 2014 20:34:42 +0000 (22:34 +0200)]
sysdb: Fixed a memory leak in an error condition.

Thanks to clang-analyze for identifying this!

9 years agovalgrind.suppress: Added a leak inside libnss as seen on Travis CI.
Sebastian Harl [Sun, 20 Jul 2014 19:47:36 +0000 (21:47 +0200)]
valgrind.suppress: Added a leak inside libnss as seen on Travis CI.

9 years agotest_lib.sh: Let integration tests use valgrind.suppress as well.
Sebastian Harl [Sun, 20 Jul 2014 19:43:52 +0000 (21:43 +0200)]
test_lib.sh: Let integration tests use valgrind.suppress as well.

9 years agostore_lookup_test: Added some tests for attribute.FOO IS NULL.
Sebastian Harl [Sun, 20 Jul 2014 19:24:42 +0000 (21:24 +0200)]
store_lookup_test: Added some tests for attribute.FOO IS NULL.

9 years agostore, frontend: Added support for matching NULL attributes.
Sebastian Harl [Sun, 20 Jul 2014 18:55:44 +0000 (20:55 +0200)]
store, frontend: Added support for matching NULL attributes.

This matches any hosts which are missing the specified attribute.

9 years agot/integration/simple_config.sh: Test some more invalid settings.
Sebastian Harl [Sat, 19 Jul 2014 12:51:58 +0000 (14:51 +0200)]
t/integration/simple_config.sh: Test some more invalid settings.

9 years agot/integration/simple_config.sh: Test reconfiguration.
Sebastian Harl [Sat, 19 Jul 2014 12:42:46 +0000 (14:42 +0200)]
t/integration/simple_config.sh: Test reconfiguration.

9 years agot/integration/simple_config.sh: Run the tools using -h and -V.
Sebastian Harl [Sat, 19 Jul 2014 12:36:44 +0000 (14:36 +0200)]
t/integration/simple_config.sh: Run the tools using -h and -V.

9 years agot/integration/simple_query.sh: Pass in queries through stdin as well.
Sebastian Harl [Sat, 19 Jul 2014 12:25:55 +0000 (14:25 +0200)]
t/integration/simple_query.sh: Pass in queries through stdin as well.

This covers some more code.

9 years agosysdb: Fixed a memory leak on EOF from the server.
Sebastian Harl [Sat, 19 Jul 2014 12:20:03 +0000 (14:20 +0200)]
sysdb: Fixed a memory leak on EOF from the server.

9 years agosysdb: Use non-callback readline mode when non-interactive.
Sebastian Harl [Sat, 19 Jul 2014 12:06:33 +0000 (14:06 +0200)]
sysdb: Use non-callback readline mode when non-interactive.

libedit's implementation of the callback-mode does not play well in
non-interactive mode (e.g. it does not correctly detect EOF) but works fine
when using readline().

Also, there's no need for the somewhat more complex callback mode in
non-interactive operation anyway.

9 years agoplugin: Report an error if a collector's interval cannot be determined.
Sebastian Harl [Sat, 19 Jul 2014 11:45:12 +0000 (13:45 +0200)]
plugin: Report an error if a collector's interval cannot be determined.

Else, we'll get weird behavior when, for example, using LoadPlugin instead of
LoadBackend in sysdbd.

9 years agot/coverage.sh: Output the content of t/test-suite.log in case of a failure.
Sebastian Harl [Sat, 19 Jul 2014 11:36:03 +0000 (13:36 +0200)]
t/coverage.sh: Output the content of t/test-suite.log in case of a failure.

9 years agot/testwrapper: Let valgrind generate suppressions for all failures.
Sebastian Harl [Sat, 19 Jul 2014 11:35:19 +0000 (13:35 +0200)]
t/testwrapper: Let valgrind generate suppressions for all failures.

These are printed to stdout.

9 years agot/valgrind.suppress: Updated existing suppression for newer check version.
Sebastian Harl [Sat, 19 Jul 2014 11:34:18 +0000 (13:34 +0200)]
t/valgrind.suppress: Updated existing suppression for newer check version.

(Keeping the old around for people using the old version of check, e.g.
Travis.)

9 years agot/: Include testwrapper.sh in the distribution tarball.
Sebastian Harl [Sat, 19 Jul 2014 11:28:28 +0000 (13:28 +0200)]
t/: Include testwrapper.sh in the distribution tarball.

9 years agot/valgrind.suppress: Suppress another error in check.
Sebastian Harl [Sat, 19 Jul 2014 11:21:48 +0000 (13:21 +0200)]
t/valgrind.suppress: Suppress another error in check.

9 years agot/cibuild.sh: Still use TESTS_ENVIRONMENT="./testwrapper.sh".
Sebastian Harl [Sat, 19 Jul 2014 06:30:43 +0000 (08:30 +0200)]
t/cibuild.sh: Still use TESTS_ENVIRONMENT="./testwrapper.sh".

LOG_COMPILER is not supported by older automake versions.

9 years agot/: Always use testwrapper.sh for running tests.
Sebastian Harl [Fri, 18 Jul 2014 06:42:07 +0000 (08:42 +0200)]
t/: Always use testwrapper.sh for running tests.

… using automake's LOG_COMPILER variable.

9 years agodata_test: Fixed access to uninitialized memory.
Sebastian Harl [Fri, 11 Jul 2014 15:47:38 +0000 (17:47 +0200)]
data_test: Fixed access to uninitialized memory.

9 years agoavltree: Iterate through the tree depth-first when clearing it.
Sebastian Harl [Fri, 11 Jul 2014 15:42:33 +0000 (17:42 +0200)]
avltree: Iterate through the tree depth-first when clearing it.

Else, we cannot simple delete each node but we'd have to actually remove it
from the tree because we'd be removing non-leaf nodes.

Don't use recursion for iterating the tree. It's not needed and would
consume stack-space unnecessarily. The current approach limits the size of the
tree by heap memory only.

9 years agostore: Use AVL trees to store all objects.
Sebastian Harl [Fri, 11 Jul 2014 14:57:33 +0000 (16:57 +0200)]
store: Use AVL trees to store all objects.

9 years agoavltree: Always compare objects by name.
Sebastian Harl [Fri, 11 Jul 2014 06:06:45 +0000 (08:06 +0200)]
avltree: Always compare objects by name.

We don't need a custom compare function (for now) and correctly passing in a
const string when comparing based on objects is annoying to get right.

9 years agoavltree: Added documentation for all functions.
Sebastian Harl [Thu, 10 Jul 2014 06:26:10 +0000 (08:26 +0200)]
avltree: Added documentation for all functions.

9 years agoavltree: Added sdb_avltree_lookup().
Sebastian Harl [Wed, 9 Jul 2014 19:49:30 +0000 (21:49 +0200)]
avltree: Added sdb_avltree_lookup().

9 years agoobject: Added SDB_OBJECT_STATIC.
Sebastian Harl [Wed, 9 Jul 2014 19:36:49 +0000 (21:36 +0200)]
object: Added SDB_OBJECT_STATIC.

This is a helper to initialize static, named objects.

Replaced SSTRING_OBJ (which was basically the same) used by unit tests.

9 years agoobject: Static wrapper objects cannot have a destructor.
Sebastian Harl [Wed, 9 Jul 2014 19:33:27 +0000 (21:33 +0200)]
object: Static wrapper objects cannot have a destructor.

We cannot free the static memory and, thus, cannot destroy the object.

9 years agoavltree.h: Removed obsolete TODO note.
Sebastian Harl [Wed, 9 Jul 2014 19:26:52 +0000 (21:26 +0200)]
avltree.h: Removed obsolete TODO note.

AVL trees *are* balanced now :-)

9 years agoavltree: Added helper function sdb_avltree_valid().
Sebastian Harl [Wed, 9 Jul 2014 19:07:58 +0000 (21:07 +0200)]
avltree: Added helper function sdb_avltree_valid().

The function walks the entire tree and checks each node for problems (e.g.
unbalanced nodes, wrong height, missing child/parent links).

Use the function in the unit tests (which is the primary use for the function
anyway ;-)).

9 years agoerror.h: Removed long-unused constant.
Sebastian Harl [Wed, 9 Jul 2014 13:39:17 +0000 (15:39 +0200)]
error.h: Removed long-unused constant.

9 years agoavltree: Don't leak memory when clearing the tree.
Sebastian Harl [Wed, 9 Jul 2014 09:44:17 +0000 (11:44 +0200)]
avltree: Don't leak memory when clearing the tree.

Remove all nodes starting at the smallest instead of at the root.

9 years agoavltree: Added helper to determine smallest node.
Sebastian Harl [Wed, 9 Jul 2014 09:34:10 +0000 (11:34 +0200)]
avltree: Added helper to determine smallest node.

9 years agoavltree: Lock the tree during insertion.
Sebastian Harl [Wed, 9 Jul 2014 07:55:23 +0000 (09:55 +0200)]
avltree: Lock the tree during insertion.

9 years agoavltree: Rebalance the tree after inserting a new element.
Sebastian Harl [Wed, 9 Jul 2014 07:52:07 +0000 (09:52 +0200)]
avltree: Rebalance the tree after inserting a new element.

9 years agoavltree_test: Degenerate (unbalanced) test-tree even more.
Sebastian Harl [Tue, 8 Jul 2014 20:14:32 +0000 (22:14 +0200)]
avltree_test: Degenerate (unbalanced) test-tree even more.

9 years agoavltree: Removed some irrelevant special cases.
Sebastian Harl [Tue, 8 Jul 2014 20:08:55 +0000 (22:08 +0200)]
avltree: Removed some irrelevant special cases.

9 years agosysdb.h: Added helpers to compare two values.
Sebastian Harl [Tue, 8 Jul 2014 19:42:45 +0000 (21:42 +0200)]
sysdb.h: Added helpers to compare two values.

9 years agocoverage.sh: Ignore *.y / *.l files.
Sebastian Harl [Tue, 8 Jul 2014 18:41:03 +0000 (20:41 +0200)]
coverage.sh: Ignore *.y / *.l files.

lcov cannot handle them correctly.

9 years agoavltree_test: Test duplicate detection and clear() as well.
Sebastian Harl [Tue, 8 Jul 2014 18:40:33 +0000 (20:40 +0200)]
avltree_test: Test duplicate detection and clear() as well.

9 years agoutils avltree: Started implementation of an AVL tree.
Sebastian Harl [Tue, 8 Jul 2014 17:51:07 +0000 (19:51 +0200)]
utils avltree: Started implementation of an AVL tree.

So far, it's just an unbalanced binary tree, though ;-)

9 years agoMoved compare and lookup callback types from utils/llist to core/object.
Sebastian Harl [Sat, 5 Jul 2014 09:15:56 +0000 (11:15 +0200)]
Moved compare and lookup callback types from utils/llist to core/object.

9 years agoMakefile: Install utils/os.h as well.
Sebastian Harl [Sat, 5 Jul 2014 08:45:11 +0000 (10:45 +0200)]
Makefile: Install utils/os.h as well.

9 years agocollectd::unixsock backend: Store plugin identifier as service attributes.
Sebastian Harl [Sat, 5 Jul 2014 08:40:44 +0000 (10:40 +0200)]
collectd::unixsock backend: Store plugin identifier as service attributes.

9 years agocollectd::unixsock backend: Added support for spaces in identifiers.
Sebastian Harl [Sat, 5 Jul 2014 08:28:11 +0000 (10:28 +0200)]
collectd::unixsock backend: Added support for spaces in identifiers.

Don't treat space as a field separator for LISTVAL responses. Instead, split
of the update timestamp from the hostname after splitting at slash characters
only.

9 years agostore: Reduce logging about "old" values.
Sebastian Harl [Sat, 5 Jul 2014 08:25:31 +0000 (10:25 +0200)]
store: Reduce logging about "old" values.

Don't log, if the same timestamp was used to submit the value. This avoids
excessive noise in the logs on high sampling rates.

9 years agounixsock, data: Moved sdb_unixsock_parse_cell() to sdb_data_parse().
Sebastian Harl [Fri, 4 Jul 2014 20:48:44 +0000 (22:48 +0200)]
unixsock, data: Moved sdb_unixsock_parse_cell() to sdb_data_parse().

The function parses a string into a datum. For date-time values, floating
point seconds since the epoch are supported only.

Added unit tests.

9 years agostore: Include service attributes in JSON output.
Sebastian Harl [Fri, 4 Jul 2014 19:06:21 +0000 (21:06 +0200)]
store: Include service attributes in JSON output.

9 years agostore: Don't update unchanged attribute values.
Sebastian Harl [Fri, 4 Jul 2014 18:57:41 +0000 (20:57 +0200)]
store: Don't update unchanged attribute values.

When handling dynamically allocated data, this would generate unnecessary
memory churn.

9 years agodata: Pass const pointers to sdb_data_cmp().
Sebastian Harl [Fri, 4 Jul 2014 18:57:19 +0000 (20:57 +0200)]
data: Pass const pointers to sdb_data_cmp().

9 years agostore: Don't overwrite attribute values if the new timestamp is too old.
Sebastian Harl [Fri, 4 Jul 2014 18:42:58 +0000 (20:42 +0200)]
store: Don't overwrite attribute values if the new timestamp is too old.

Also, extended the unit tests to catch this error.

9 years agostore: Introduced service attributes.
Sebastian Harl [Fri, 4 Jul 2014 18:38:52 +0000 (20:38 +0200)]
store: Introduced service attributes.

9 years agostore: Consider objects too old if the new timestamp matches the old.
Sebastian Harl [Fri, 4 Jul 2014 18:35:26 +0000 (20:35 +0200)]
store: Consider objects too old if the new timestamp matches the old.

In theory, this doesn't make a big difference as either approach will let the
result depend on the order of update operations. However, considering more
cases as too old will allow to ignore more stuff and, thus, avoid some work.

9 years agodata: Improved memory handling in data_copy().
Sebastian Harl [Thu, 3 Jul 2014 16:38:13 +0000 (18:38 +0200)]
data: Improved memory handling in data_copy().

Ensure that dynamic memory in the destination is freed before copying the new
data. That'll avoid that the caller has to use data_free_datum() first and
destroy previous data even if the copy fails.

9 years agostore: Don't destroy an attribute if data_copy() failed.
Sebastian Harl [Thu, 3 Jul 2014 16:37:17 +0000 (18:37 +0200)]
store: Don't destroy an attribute if data_copy() failed.

Else, the store would reference invalid memory.

9 years agostore: Split internal store_obj() function into multiple functions.
Sebastian Harl [Thu, 3 Jul 2014 16:18:54 +0000 (18:18 +0200)]
store: Split internal store_obj() function into multiple functions.

This avoids a couple of unnecessary checks and will allow to reuse some parts.

9 years agoversion-gen.sh: Added .git suffix to default version again.
Sebastian Harl [Wed, 2 Jul 2014 05:57:14 +0000 (07:57 +0200)]
version-gen.sh: Added .git suffix to default version again.

9 years agoRelease SysDB 0.2.0. sysdb-0.2.0
Sebastian Harl [Wed, 2 Jul 2014 05:31:30 +0000 (07:31 +0200)]
Release SysDB 0.2.0.

9 years agosysdbql(7): Documented conditional attribute matchers.
Sebastian Harl [Wed, 2 Jul 2014 05:26:35 +0000 (07:26 +0200)]
sysdbql(7): Documented conditional attribute matchers.

9 years agoReleaseNotes: Added release 0.2.0.
Sebastian Harl [Tue, 1 Jul 2014 20:27:11 +0000 (22:27 +0200)]
ReleaseNotes: Added release 0.2.0.

9 years agoMerged branch 'master' of git://git.tokkee.org/sysdb.
Sebastian Harl [Tue, 1 Jul 2014 20:01:13 +0000 (22:01 +0200)]
Merged branch 'master' of git://git.tokkee.org/sysdb.

9 years agostore: Include backend information in the JSON serialization.
Sebastian Harl [Tue, 1 Jul 2014 19:59:29 +0000 (21:59 +0200)]
store: Include backend information in the JSON serialization.