Code

sysdb.git
9 years agoconnection_test: Updated according to latest changes.
Sebastian Harl [Fri, 16 Jan 2015 20:15:20 +0000 (21:15 +0100)]
connection_test: Updated according to latest changes.

9 years agosysdbql(7): Document the STORE commands.
Sebastian Harl [Fri, 16 Jan 2015 13:52:27 +0000 (14:52 +0100)]
sysdbql(7): Document the STORE commands.

9 years agoconnection: Log peer information after accepting a connection.
Sebastian Harl [Fri, 16 Jan 2015 13:31:42 +0000 (14:31 +0100)]
connection: Log peer information after accepting a connection.

9 years agosysdb: Use the current user's homedir rather than the SysDB user.
Sebastian Harl [Fri, 16 Jan 2015 13:16:12 +0000 (14:16 +0100)]
sysdb: Use the current user's homedir rather than the SysDB user.

9 years agoconnection: Let sdb_connection_accept() handle all connection setup.
Sebastian Harl [Thu, 15 Jan 2015 08:05:57 +0000 (09:05 +0100)]
connection: Let sdb_connection_accept() handle all connection setup.

… rather than having it split up between the caller and accept().

9 years agoclient: Add support for TCP connections.
Sebastian Harl [Wed, 14 Jan 2015 21:51:38 +0000 (22:51 +0100)]
client: Add support for TCP connections.

9 years agofrontend: Add support for TCP connections.
Sebastian Harl [Wed, 14 Jan 2015 21:47:10 +0000 (22:47 +0100)]
frontend: Add support for TCP connections.

This is the new default listener type (unless the listen address starts with a
slash in which case a UNIXSOCK connection is used).

This does not support any kind of peer lookup yet. Instead, it'll fully trust
the client for now and accept any username. In the future, this will be
configurable and multiple mechanisms (e.g. ident, SSL cert) will be supported.

9 years agofrontend: Make peer detection more flexible.
Sebastian Harl [Wed, 14 Jan 2015 21:36:38 +0000 (22:36 +0100)]
frontend: Make peer detection more flexible.

It's now a property of a listener implementation.

Moved the unixsock implementation over from frontend/connection to
frontend/sock.

9 years agoos utils: Fixed a typo in the UDP resolver implementation.
Sebastian Harl [Wed, 14 Jan 2015 21:02:31 +0000 (22:02 +0100)]
os utils: Fixed a typo in the UDP resolver implementation.

9 years agofrontend/sock: Simplified internal address handling.
Sebastian Harl [Wed, 14 Jan 2015 21:01:03 +0000 (22:01 +0100)]
frontend/sock: Simplified internal address handling.

Strip the <type>: prefix early. Else, we'd have to strip it off over and over
again when working with the address string.

9 years agoconnection: Update the connection name as early as possible.
Sebastian Harl [Wed, 14 Jan 2015 20:56:22 +0000 (21:56 +0100)]
connection: Update the connection name as early as possible.

This is just to avoid weird error messages if setting up the connection
failed.

9 years agoos utils: Added sdb_resolve().
Sebastian Harl [Mon, 12 Jan 2015 17:43:35 +0000 (18:43 +0100)]
os utils: Added sdb_resolve().

This is a convenient wrapper around getaddrinfo().

9 years agoclient: Make I/O handling more flexible.
Sebastian Harl [Sun, 11 Jan 2015 13:43:14 +0000 (14:43 +0100)]
client: Make I/O handling more flexible.

9 years agofrontend: Make connection I/O handling more flexible.
Sebastian Harl [Sat, 10 Jan 2015 15:28:20 +0000 (16:28 +0100)]
frontend: Make connection I/O handling more flexible.

That'll allow to create connection objects which require special I/O
operations.

9 years agosysdb: Accept status=OK after sending a query.
Sebastian Harl [Sat, 10 Jan 2015 13:03:36 +0000 (14:03 +0100)]
sysdb: Accept status=OK after sending a query.

OK is sent back on successful STORE commands.

9 years agofrontend/grammar: Added 'STORE host|service|metric [attribute]' commands.
Sebastian Harl [Sat, 10 Jan 2015 13:02:31 +0000 (14:02 +0100)]
frontend/grammar: Added 'STORE host|service|metric [attribute]' commands.

This implements the STORE command in SysQL.

9 years agofrontend: Add support for SDB_CONNECTION_STORE.
Sebastian Harl [Sat, 10 Jan 2015 13:00:14 +0000 (14:00 +0100)]
frontend: Add support for SDB_CONNECTION_STORE.

The front-end now supports parsing and executing STORE commands.

9 years agostore: Let store_metric() accept non-NULL but empty metric-store.
Sebastian Harl [Sat, 10 Jan 2015 12:33:13 +0000 (13:33 +0100)]
store: Let store_metric() accept non-NULL but empty metric-store.

9 years agoproto: Added support for unmarshaling hosts/services/metrics/attributes.
Sebastian Harl [Fri, 2 Jan 2015 16:52:52 +0000 (17:52 +0100)]
proto: Added support for unmarshaling hosts/services/metrics/attributes.

9 years agoproto: Let unmarshaled string/binary data point into the provided buffer.
Sebastian Harl [Fri, 2 Jan 2015 15:09:14 +0000 (16:09 +0100)]
proto: Let unmarshaled string/binary data point into the provided buffer.

The caller may decide whether to keep a copy or not.

9 years agoutils unixsock: Avoid memory allocations in common cases.
Sebastian Harl [Fri, 2 Jan 2015 14:53:54 +0000 (15:53 +0100)]
utils unixsock: Avoid memory allocations in common cases.

9 years agodata: Let sdb_data_parse() accept a const string and copy it if necessary.
Sebastian Harl [Fri, 2 Jan 2015 14:47:24 +0000 (15:47 +0100)]
data: Let sdb_data_parse() accept a const string and copy it if necessary.

Given that we need a copy for regex values anyway, this is more consistent.

9 years agofrontend/scanner: Pass the right size to strncat.
Sebastian Harl [Fri, 2 Jan 2015 11:56:14 +0000 (12:56 +0100)]
frontend/scanner: Pass the right size to strncat.

Thanks to clang for identifying this :-)

9 years agosysdb/scanner.l: Include ctype.h; needed for isspace().
Sebastian Harl [Fri, 2 Jan 2015 11:55:53 +0000 (12:55 +0100)]
sysdb/scanner.l: Include ctype.h; needed for isspace().

9 years agoLink librt into libsysdbclient.
Sebastian Harl [Fri, 2 Jan 2015 11:44:03 +0000 (12:44 +0100)]
Link librt into libsysdbclient.

That's required for clock_gettime.

9 years agoproto: Added sdb_proto_unmarshal_data().
Sebastian Harl [Fri, 2 Jan 2015 11:35:28 +0000 (12:35 +0100)]
proto: Added sdb_proto_unmarshal_data().

This function decodes a datum from the wire format.

9 years agodata: Free binary and regex array values as well.
Sebastian Harl [Fri, 2 Jan 2015 11:33:50 +0000 (12:33 +0100)]
data: Free binary and regex array values as well.

9 years agodata: Let sdb_data_cmp() support all array types.
Sebastian Harl [Fri, 2 Jan 2015 10:51:37 +0000 (11:51 +0100)]
data: Let sdb_data_cmp() support all array types.

9 years agoproto: Let unmarshal functions return the number of bytes processed.
Sebastian Harl [Mon, 29 Dec 2014 15:53:44 +0000 (16:53 +0100)]
proto: Let unmarshal functions return the number of bytes processed.

That's a more flexible and straight-forward interface allowing callers to not
care about the size of the expected data.

9 years agoproto: Added support for marshaling attribute objects.
Sebastian Harl [Thu, 25 Dec 2014 17:21:02 +0000 (18:21 +0100)]
proto: Added support for marshaling attribute objects.

9 years agoproto: Use hton instead of ntoh functions in marshal functions.
Sebastian Harl [Wed, 24 Dec 2014 15:49:55 +0000 (16:49 +0100)]
proto: Use hton instead of ntoh functions in marshal functions.

D'oh!

9 years agoproto: Define a wire format for host/service/metric and add marshal functions.
Sebastian Harl [Wed, 24 Dec 2014 15:47:18 +0000 (16:47 +0100)]
proto: Define a wire format for host/service/metric and add marshal functions.

9 years agoproto: Don't include a string's length in the wire format.
Sebastian Harl [Wed, 24 Dec 2014 15:40:29 +0000 (16:40 +0100)]
proto: Don't include a string's length in the wire format.

That's not necessary given that all strings are null-terminated.

9 years agoAdd a suffix to integer marshal/unmarshal functions specifying the int size.
Sebastian Harl [Wed, 24 Dec 2014 11:58:02 +0000 (12:58 +0100)]
Add a suffix to integer marshal/unmarshal functions specifying the int size.

9 years agoproto: Add support for marshaling all data types.
Sebastian Harl [Tue, 23 Dec 2014 17:47:21 +0000 (18:47 +0100)]
proto: Add support for marshaling all data types.

9 years agoproto: Add support for marshaling regex types.
Sebastian Harl [Tue, 23 Dec 2014 17:25:57 +0000 (18:25 +0100)]
proto: Add support for marshaling regex types.

That is, marshal the regex's raw string to be recompiled by the receiver.

9 years agoproto: Added support for marshaling double-precision values.
Sebastian Harl [Tue, 23 Dec 2014 17:16:13 +0000 (18:16 +0100)]
proto: Added support for marshaling double-precision values.

For this, determine the memory layout of doubles in 'configure' and then use
IEEE-754 big-endian encoding on the wire. For now, only little- and big-endian
IEEE-754 doubles are supported but that'll cover the vast majority of all
systems.

9 years agoproto: Added sdb_proto_marshal_data.
Sebastian Harl [Sat, 20 Dec 2014 15:05:50 +0000 (16:05 +0100)]
proto: Added sdb_proto_marshal_data.

This function encodes a datum into the wire format.

9 years agoutils/proto: Let all unmarshal functions accept strings instead of strbufs.
Sebastian Harl [Wed, 17 Dec 2014 21:59:57 +0000 (22:59 +0100)]
utils/proto: Let all unmarshal functions accept strings instead of strbufs.

This is more consistent and flexible.

9 years agoutils/strbuf: Added SDB_STRBUF_STR.
Sebastian Harl [Wed, 17 Dec 2014 21:53:55 +0000 (22:53 +0100)]
utils/strbuf: Added SDB_STRBUF_STR.

This macro returns a tuple describing the buffer content and length. The idea
is that functions which operate on (binary) strings should accept two such
arguments and the macro will make it easier to pass them in.

9 years agoproto: Renamed sdb_proto_get_int to sdb_proto_unmarshal_int.
Sebastian Harl [Tue, 16 Dec 2014 08:54:58 +0000 (09:54 +0100)]
proto: Renamed sdb_proto_get_int to sdb_proto_unmarshal_int.

… to be consistent with the other functions.

9 years agoconnection: Use sdb_connection_close to close a connection.
Sebastian Harl [Mon, 15 Dec 2014 20:22:16 +0000 (21:22 +0100)]
connection: Use sdb_connection_close to close a connection.

9 years agoconnection: Use sdb_proto_unmarshal_header.
Sebastian Harl [Mon, 15 Dec 2014 09:46:25 +0000 (10:46 +0100)]
connection: Use sdb_proto_unmarshal_header.

9 years agoproto: Add sdb_proto_unmarshal_header().
Sebastian Harl [Mon, 15 Dec 2014 09:46:08 +0000 (10:46 +0100)]
proto: Add sdb_proto_unmarshal_header().

9 years agoMoved sdb_proto_send/sdb_proto_select to sdb_write/sdb_select.
Sebastian Harl [Mon, 15 Dec 2014 09:39:05 +0000 (10:39 +0100)]
Moved sdb_proto_send/sdb_proto_select to sdb_write/sdb_select.

These functions are not protocol-specific but rather simple wrappers around
system calls.

9 years agoconnection: Let sdb_connection_close not deallocate the connection.
Sebastian Harl [Mon, 15 Dec 2014 08:18:43 +0000 (09:18 +0100)]
connection: Let sdb_connection_close not deallocate the connection.

That'll allow for more flexible use.

9 years agoconnection: Renamed sdb_connection_read to sdb_connection_handle.
Sebastian Harl [Mon, 15 Dec 2014 08:12:10 +0000 (09:12 +0100)]
connection: Renamed sdb_connection_read to sdb_connection_handle.

The function does more than read from the connection, so the old name was a
bad choice.

9 years agoutils/proto: Replaced sdb_proto_send_msg with sdb_proto_marshal.
Sebastian Harl [Sun, 14 Dec 2014 15:30:20 +0000 (16:30 +0100)]
utils/proto: Replaced sdb_proto_send_msg with sdb_proto_marshal.

The new function won't actually send the message but write it into a provided
buffer in the wire format. This allows for more flexible use of the function.

9 years agoMerged branch 'master' of git://git.tokkee.org/sysdb.
Sebastian Harl [Fri, 12 Dec 2014 07:55:39 +0000 (08:55 +0100)]
Merged branch 'master' of git://git.tokkee.org/sysdb.

9 years agosysdb: Use sdb_log() instead of printf().
Sebastian Harl [Thu, 11 Dec 2014 23:24:20 +0000 (00:24 +0100)]
sysdb: Use sdb_log() instead of printf().

9 years agosysdb: Wait for the actual reply after sending a command.
Sebastian Harl [Thu, 11 Dec 2014 23:03:06 +0000 (00:03 +0100)]
sysdb: Wait for the actual reply after sending a command.

Otherwise, multiple replies (log messages) will be interleaved with input
prompts.

9 years agosysdb: Only try to reconnect before executing a command or on an empty line.
Sebastian Harl [Thu, 11 Dec 2014 22:42:14 +0000 (23:42 +0100)]
sysdb: Only try to reconnect before executing a command or on an empty line.

9 years agosysdb: Fixed check for duplicate history entries.
Sebastian Harl [Thu, 11 Dec 2014 21:42:39 +0000 (22:42 +0100)]
sysdb: Fixed check for duplicate history entries.

current_history() returns the currently *selected* history entry. Rather, we
want the latest entry, that is, the one added last.

9 years agosysdb: Store all commands in the history; even if they failed.
Sebastian Harl [Thu, 11 Dec 2014 21:17:37 +0000 (22:17 +0100)]
sysdb: Store all commands in the history; even if they failed.

9 years agosysdb: Parse strings correctly.
Sebastian Harl [Thu, 11 Dec 2014 21:06:49 +0000 (22:06 +0100)]
sysdb: Parse strings correctly.

… and focus only on syntax elements that may include semicolons and escape
their meaning as a query terminator.

9 years agosysdb: Do an attempt to reconnect on all user input.
Sebastian Harl [Thu, 11 Dec 2014 08:57:49 +0000 (09:57 +0100)]
sysdb: Do an attempt to reconnect on all user input.

9 years agosysdb: Don't exit if the server closed the connection.
Sebastian Harl [Thu, 11 Dec 2014 08:47:56 +0000 (09:47 +0100)]
sysdb: Don't exit if the server closed the connection.

Instead, notify the user an try to reconnect before executing the next
command.

9 years agosysdb: Make sure to properly reset term attributes.
Sebastian Harl [Thu, 11 Dec 2014 08:45:41 +0000 (09:45 +0100)]
sysdb: Make sure to properly reset term attributes.

Don't record the "old" settings on each call to rawmode since we do that a lot
of times. Also, don't use up all atexit handler slots this way.

9 years agosysdb: Clear the current command from the buffer after error.
Sebastian Harl [Thu, 11 Dec 2014 08:44:35 +0000 (09:44 +0100)]
sysdb: Clear the current command from the buffer after error.

9 years agostore.h: Make it such that HOST/SERVICE/METRIC don't share bits with ATTRIBUTE
Sebastian Harl [Wed, 10 Dec 2014 23:15:55 +0000 (00:15 +0100)]
store.h: Make it such that HOST/SERVICE/METRIC don't share bits with ATTRIBUTE

An attribute can be assigned to any of the other types. This approach allows
to represent host-, service-, and metric-attributes in one byte.

9 years agofrontend: Get the username of the remote peer from a UNIX socket.
Sebastian Harl [Tue, 9 Dec 2014 14:19:47 +0000 (15:19 +0100)]
frontend: Get the username of the remote peer from a UNIX socket.

Then, only allow that user to authenticate against the daemon. That is, use
the same as PostgreSQL's "peer" authentication for all connections.

9 years agoutils/os: Added sdb_get_current_user().
Sebastian Harl [Tue, 9 Dec 2014 14:18:04 +0000 (15:18 +0100)]
utils/os: Added sdb_get_current_user().

… copied from sysdb/main.c which now uses this new function.

9 years agoREADME: Added libfacter and librrd to list of prerequisites.
Sebastian Harl [Sun, 7 Dec 2014 22:41:04 +0000 (23:41 +0100)]
README: Added libfacter and librrd to list of prerequisites.

9 years agoAdded documentation and sample configuration for the facter backend.
Sebastian Harl [Thu, 4 Dec 2014 20:10:01 +0000 (21:10 +0100)]
Added documentation and sample configuration for the facter backend.

9 years agofacter plugin: Added a plugin collecting local facter values.
Sebastian Harl [Thu, 4 Dec 2014 19:55:00 +0000 (20:55 +0100)]
facter plugin: Added a plugin collecting local facter values.

The plugin uses libfacter from the cfacter project. libfacter is a C++
library, so the plugin is implemented in C++ as well using a small shim to
talk to SysDB.

9 years agoBootstrap the build system for C++ as well.
Sebastian Harl [Thu, 4 Dec 2014 16:35:45 +0000 (17:35 +0100)]
Bootstrap the build system for C++ as well.

That is, check CXX support for strict compiler flags.

Also, use all configured strict flags when checking for other strict flags.
This way, we detect problems when using flags that are not supported in C++
mode.

9 years agoUse stdbool.h's bool type instead of _Bool.
Sebastian Harl [Wed, 3 Dec 2014 21:20:45 +0000 (22:20 +0100)]
Use stdbool.h's bool type instead of _Bool.

That'll work with C++ as well.

9 years agoanalyzer: Analyze expressions as well; validate typed expressions.
Sebastian Harl [Tue, 2 Dec 2014 17:31:48 +0000 (18:31 +0100)]
analyzer: Analyze expressions as well; validate typed expressions.

Also, added various tests for typed expressions.

9 years agofrontend/grammar: Added support for <obj_type> . <obj_expression>.
Sebastian Harl [Mon, 1 Dec 2014 16:36:29 +0000 (17:36 +0100)]
frontend/grammar: Added support for <obj_type> . <obj_expression>.

… where <obj_expression> may be an arbitrary expression accessing an object's
fields or attributes.

9 years agostore: Added sdb_store_expr_typed.
Sebastian Harl [Mon, 1 Dec 2014 16:34:59 +0000 (17:34 +0100)]
store: Added sdb_store_expr_typed.

This function creates an expression which evaluates another expression in the
context of an object's sibling. The sibling is specified by type and refers to
a parent or child node of the specified type.

9 years agostore.h: Fixed a typo.
Sebastian Harl [Mon, 1 Dec 2014 08:03:05 +0000 (09:03 +0100)]
store.h: Fixed a typo.

9 years agocore/store.h: Reordered file to group related functions better.
Sebastian Harl [Fri, 28 Nov 2014 07:15:28 +0000 (08:15 +0100)]
core/store.h: Reordered file to group related functions better.

10 years agofrontend/scanner: Fixed parsing of time values.
Sebastian Harl [Sun, 23 Nov 2014 18:01:17 +0000 (19:01 +0100)]
frontend/scanner: Fixed parsing of time values.

It turns out, mktime() cannot be used to parse a time (at day 0). Let's do it
manually then, it's no big magic anyway ;-)

10 years agotimeseries::rrdtool: Limit to 1000 data-points for now.
Sebastian Harl [Sun, 23 Nov 2014 15:56:08 +0000 (16:56 +0100)]
timeseries::rrdtool: Limit to 1000 data-points for now.

That's good enough for most use cases (ought to be enough for anybody!) and
avoids excessive memory use when requesting data.

10 years agostore: Include in metric JSON whether access to time-series is available.
Sebastian Harl [Sat, 22 Nov 2014 10:24:53 +0000 (11:24 +0100)]
store: Include in metric JSON whether access to time-series is available.

… based on whether a time-series store is configured for the metric.

10 years agostore_json: Escape special characters in strings.
Sebastian Harl [Fri, 21 Nov 2014 23:03:49 +0000 (00:03 +0100)]
store_json: Escape special characters in strings.

10 years agoversion-gen.sh: Added .git suffix to default version again.
Sebastian Harl [Mon, 17 Nov 2014 20:32:45 +0000 (21:32 +0100)]
version-gen.sh: Added .git suffix to default version again.

10 years agoRelease SysDB 0.6.0. sysdb-0.6.0
Sebastian Harl [Mon, 17 Nov 2014 20:01:12 +0000 (21:01 +0100)]
Release SysDB 0.6.0.

10 years agoMake sure to print non-a-number as 'nan'.
Sebastian Harl [Mon, 17 Nov 2014 18:41:40 +0000 (19:41 +0100)]
Make sure to print non-a-number as 'nan'.

Some versions of GNU libc use '-nan' instead which we don't want. For example,
Go's JSON package doesn't support that at all.

10 years agosysdbql(7): Documented arrays.
Sebastian Harl [Fri, 14 Nov 2014 18:30:46 +0000 (19:30 +0100)]
sysdbql(7): Documented arrays.

10 years agoDrafted release notes for 0.6.0.
Sebastian Harl [Fri, 14 Nov 2014 07:43:42 +0000 (08:43 +0100)]
Drafted release notes for 0.6.0.

10 years agodata: Let concat support empty arrays; add various tests for empty arrays.
Sebastian Harl [Wed, 12 Nov 2014 21:59:03 +0000 (22:59 +0100)]
data: Let concat support empty arrays; add various tests for empty arrays.

10 years agoMerged branch 'master' of git://git.tokkee.org/sysdb.
Sebastian Harl [Wed, 12 Nov 2014 21:16:35 +0000 (22:16 +0100)]
Merged branch 'master' of git://git.tokkee.org/sysdb.

10 years agosysdbql(7): Documented <array> IN <array>.
Sebastian Harl [Wed, 12 Nov 2014 21:14:28 +0000 (22:14 +0100)]
sysdbql(7): Documented <array> IN <array>.

10 years agofrontend: Added support for array constants.
Sebastian Harl [Wed, 12 Nov 2014 21:10:47 +0000 (22:10 +0100)]
frontend: Added support for array constants.

10 years agodata: Let inarray() support <array> IN <array> checks.
Sebastian Harl [Wed, 12 Nov 2014 19:55:10 +0000 (20:55 +0100)]
data: Let inarray() support <array> IN <array> checks.

This check returns true if all elements of the first array are included in the
second array where order does not matter.

10 years agoRenamed CONNECTION_* constants to SDB_CONNECTION_*.
Sebastian Harl [Tue, 11 Nov 2014 17:49:49 +0000 (18:49 +0100)]
Renamed CONNECTION_* constants to SDB_CONNECTION_*.

All public symbols should use the "sdb" prefix.

10 years agodata: Support array + element concatenation.
Sebastian Harl [Mon, 10 Nov 2014 17:40:20 +0000 (18:40 +0100)]
data: Support array + element concatenation.

That is, concatenation may be used to prepend to or append to an array.

10 years agodata: Let strlen() and format() support string/decimal/integer arrays.
Sebastian Harl [Mon, 10 Nov 2014 08:33:36 +0000 (09:33 +0100)]
data: Let strlen() and format() support string/decimal/integer arrays.

10 years agocore: Improved style related to conditionals using many branches.
Sebastian Harl [Sun, 9 Nov 2014 14:39:22 +0000 (15:39 +0100)]
core: Improved style related to conditionals using many branches.

10 years agosysdbql(7): Documented iterator support for arrays.
Sebastian Harl [Sun, 9 Nov 2014 14:09:40 +0000 (15:09 +0100)]
sysdbql(7): Documented iterator support for arrays.

10 years agostore: Avoid unnecessary data copies when "evaluating" constant values.
Sebastian Harl [Sun, 9 Nov 2014 14:05:57 +0000 (15:05 +0100)]
store: Avoid unnecessary data copies when "evaluating" constant values.

10 years agostore: Let array iterators support regex matches as well.
Sebastian Harl [Sun, 9 Nov 2014 13:49:20 +0000 (14:49 +0100)]
store: Let array iterators support regex matches as well.

That is, all operators are supported now.

10 years agostore: Let NREGEX (!~) not match on NULL values.
Sebastian Harl [Sun, 9 Nov 2014 12:47:36 +0000 (13:47 +0100)]
store: Let NREGEX (!~) not match on NULL values.

10 years agoparser_test: Added various ANY/ALL iterator tests; also for arrays.
Sebastian Harl [Sun, 9 Nov 2014 10:49:47 +0000 (11:49 +0100)]
parser_test: Added various ANY/ALL iterator tests; also for arrays.

10 years agodata: Don't treat empty arrays (value = NULL) as NULL.
Sebastian Harl [Sun, 9 Nov 2014 10:48:03 +0000 (11:48 +0100)]
data: Don't treat empty arrays (value = NULL) as NULL.

Treating them as NULL leads to weird behavior when using ANY/ALL iterators.

10 years agostore, frontend: Added support for iterating arrays (using ALL / ANY).
Sebastian Harl [Sun, 9 Nov 2014 09:39:13 +0000 (10:39 +0100)]
store, frontend: Added support for iterating arrays (using ALL / ANY).

Currently, this is limited to the 'backend' field of an object. Also, only
simple statements like 'ANY/ALL <array> <cmp> <value>' are supported by the
store (in contrast to service/metric iterators which support arbitrary
matchers to be applied). Given that matchers are object based, this limitation
should feel natural, though.

10 years agostore.h: Use separate value ranges for object and field types.
Sebastian Harl [Sun, 9 Nov 2014 09:36:07 +0000 (10:36 +0100)]
store.h: Use separate value ranges for object and field types.

This allows to use the same flag to store either object or field types or even
a combination of both.

10 years agostore: Merged implementations of compare matchers.
Sebastian Harl [Sat, 8 Nov 2014 16:06:56 +0000 (17:06 +0100)]
store: Merged implementations of compare matchers.

This allowed to factor out the actual comparison functionality, thus making it
reusable.

10 years agodata: Added sdb_data_array_get().
Sebastian Harl [Sat, 8 Nov 2014 16:00:05 +0000 (17:00 +0100)]
data: Added sdb_data_array_get().

This function retrieves an array element, returning an "alias" to its value.