Code

sysdb.git
10 years agofrontend/grammar: Drop support for the special 'host' field.
Sebastian Harl [Thu, 6 Nov 2014 09:10:06 +0000 (10:10 +0100)]
frontend/grammar: Drop support for the special 'host' field.

The old implementation didn't work when querying services or metrics and for
hosts it's the same as querying the 'name' field.

10 years agofrontend/grammar: Let LOOKUP support all object types.
Sebastian Harl [Wed, 5 Nov 2014 23:50:40 +0000 (00:50 +0100)]
frontend/grammar: Let LOOKUP support all object types.

10 years agofrontend: Let the 'lookup' command support services and metrics.
Sebastian Harl [Wed, 5 Nov 2014 23:47:16 +0000 (00:47 +0100)]
frontend: Let the 'lookup' command support services and metrics.

10 years agostore_lookup: Let the iter operators support services and metrics.
Sebastian Harl [Wed, 5 Nov 2014 23:28:00 +0000 (00:28 +0100)]
store_lookup: Let the iter operators support services and metrics.

10 years agofrontend: Let the analyzer report details about errors.
Sebastian Harl [Wed, 5 Nov 2014 23:20:20 +0000 (00:20 +0100)]
frontend: Let the analyzer report details about errors.

10 years agodata: Add to-string support for array types.
Sebastian Harl [Wed, 5 Nov 2014 23:19:49 +0000 (00:19 +0100)]
data: Add to-string support for array types.

10 years agofrontend: Improved parser error reporting.
Sebastian Harl [Wed, 5 Nov 2014 21:15:15 +0000 (22:15 +0100)]
frontend: Improved parser error reporting.

All error messages are now written to a string buffer, allowing them to be
displayed as part of the main error messages associated with failed commands.

10 years agofrontend/grammar: Added sdb_fe_yyerrorf() helper.
Sebastian Harl [Tue, 4 Nov 2014 22:36:11 +0000 (23:36 +0100)]
frontend/grammar: Added sdb_fe_yyerrorf() helper.

10 years agoutils/error: Added sdb_vlog().
Sebastian Harl [Tue, 4 Nov 2014 22:35:27 +0000 (23:35 +0100)]
utils/error: Added sdb_vlog().

This function is like sdb_log() but accept a va_list.

10 years agofrontend/grammar: Added support for FETCHing all object types.
Sebastian Harl [Tue, 4 Nov 2014 19:16:25 +0000 (20:16 +0100)]
frontend/grammar: Added support for FETCHing all object types.

10 years agofrontend: Let the parser run the analyzer.
Sebastian Harl [Tue, 4 Nov 2014 19:14:32 +0000 (20:14 +0100)]
frontend: Let the parser run the analyzer.

… but only when parsing a full statement. Otherwise, the analyzer is missing
the context for verification.

10 years agoparser_test: Fixed semantically invalid filter statements.
Sebastian Harl [Tue, 4 Nov 2014 19:10:32 +0000 (20:10 +0100)]
parser_test: Fixed semantically invalid filter statements.

These errors are only detected by the analyzer which is not used for the
parser test.

10 years agofrontend/analyzer: Check name parameters for FETCH.
Sebastian Harl [Tue, 4 Nov 2014 07:34:28 +0000 (08:34 +0100)]
frontend/analyzer: Check name parameters for FETCH.

10 years agofrontend: Fixed various size checks.
Sebastian Harl [Tue, 4 Nov 2014 07:30:26 +0000 (08:30 +0100)]
frontend: Fixed various size checks.

10 years agofrontend: Let the 'fetch' command support other types besides hosts.
Sebastian Harl [Tue, 4 Nov 2014 07:26:57 +0000 (08:26 +0100)]
frontend: Let the 'fetch' command support other types besides hosts.

10 years agostore: Added sdb_store_get_child().
Sebastian Harl [Mon, 3 Nov 2014 18:35:34 +0000 (19:35 +0100)]
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.

10 years agostore: Removed now unused tojson functions.
Sebastian Harl [Mon, 3 Nov 2014 06:43:20 +0000 (07:43 +0100)]
store: Removed now unused tojson functions.

10 years agofrontend: Let FETCH and LIST use JSON formatters.
Sebastian Harl [Mon, 3 Nov 2014 06:37:57 +0000 (07:37 +0100)]
frontend: Let FETCH and LIST use JSON formatters.

… instead of the old tojson functions.

10 years agofrontend: Let FETCH apply filters to the host as well.
Sebastian Harl [Mon, 3 Nov 2014 06:28:28 +0000 (07:28 +0100)]
frontend: Let FETCH apply filters to the host as well.

10 years agostore: Let JSON formatter know about the to-be-formatted object type.
Sebastian Harl [Sun, 2 Nov 2014 18:04:42 +0000 (19:04 +0100)]
store: Let JSON formatter know about the to-be-formatted object type.

When formatting services or metrics, expect those objects to be emitted on the
highest level and then create the host object for them first (once for a
series of objects belonging to the same host).

10 years agostore: Let the JSON formatter know about arrays at top level.
Sebastian Harl [Sun, 2 Nov 2014 17:02:25 +0000 (18:02 +0100)]
store: Let the JSON formatter know about arrays at top level.

There's no reason to require this to be handled separately.

10 years agot/: Added tests for json_formatter-based JSON generation.
Sebastian Harl [Sun, 2 Nov 2014 16:51:30 +0000 (17:51 +0100)]
t/: Added tests for json_formatter-based JSON generation.

10 years agostore: Record each object's parent.
Sebastian Harl [Sun, 2 Nov 2014 15:22:09 +0000 (16:22 +0100)]
store: Record each object's parent.

10 years agofrontend/query: Use the new JSON formatter to implement LOOKUP.
Sebastian Harl [Fri, 31 Oct 2014 17:53:16 +0000 (18:53 +0100)]
frontend/query: Use the new JSON formatter to implement LOOKUP.

This will allow for more flexiblity.

10 years agostore: Added a generic JSON formatter.
Sebastian Harl [Fri, 31 Oct 2014 17:48:34 +0000 (18:48 +0100)]
store: Added a generic JSON formatter.

It works by consuming single objects of any type (host, service, metric,
attribute) at a time and appending their JSON serialization to a string
buffer. The current position in the object tree is recorded in an internal
state.

A helper function is provided on top of the base formatter which allows to
handle an full object at a time.

10 years agostore: Provide more verbose messages on errors during scanning.
Sebastian Harl [Fri, 31 Oct 2014 16:14:04 +0000 (17:14 +0100)]
store: Provide more verbose messages on errors during scanning.

10 years agostore_lookup_test: Ensure that filters are applied before matchers.
Sebastian Harl [Fri, 31 Oct 2014 16:13:20 +0000 (17:13 +0100)]
store_lookup_test: Ensure that filters are applied before matchers.

10 years agosysdbql(7): Link to the JSON RFC.
Sebastian Harl [Thu, 30 Oct 2014 22:43:36 +0000 (23:43 +0100)]
sysdbql(7): Link to the JSON RFC.

10 years agostore: Let sdb_store_scan() pass on filters to callback functions.
Sebastian Harl [Thu, 30 Oct 2014 22:34:08 +0000 (23:34 +0100)]
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.

10 years agostore: Use sdb_avltree_lookup() to retrieve attributes.
Sebastian Harl [Wed, 29 Oct 2014 16:41:04 +0000 (17:41 +0100)]
store: Use sdb_avltree_lookup() to retrieve attributes.

… rather than iterating through all attributes. D'oh!

10 years agostore: Let sdb_store_scan() support other object types besides hosts.
Sebastian Harl [Tue, 28 Oct 2014 17:17:35 +0000 (18:17 +0100)]
store: Let sdb_store_scan() support other object types besides hosts.

10 years agostore: Merged sdb_store_iterate() into sdb_store_scan().
Sebastian Harl [Tue, 28 Oct 2014 06:44:33 +0000 (07:44 +0100)]
store: Merged sdb_store_iterate() into sdb_store_scan().

These functions are really the same when using a NULL matcher and filter.

10 years agofrontend: Added basic support for semantic AST analysis.
Sebastian Harl [Mon, 27 Oct 2014 23:08:07 +0000 (00:08 +0100)]
frontend: Added basic support for semantic AST analysis.

For now, the analyzer checks the types of all matcher operands.

10 years agofrontend: Let scanner/parser know about object types and field names.
Sebastian Harl [Sun, 26 Oct 2014 09:10:21 +0000 (10:10 +0100)]
frontend: Let scanner/parser know about object types and field names.

This allows to handle all known objects and fields as part of the grammar
rather than manually parsing them and generating custom error messages.

10 years agofrontend/grammar: Access fields by their name rather than '.<name>'.
Sebastian Harl [Sat, 25 Oct 2014 20:45:32 +0000 (22:45 +0200)]
frontend/grammar: Access fields by their name rather than '.<name>'.

There's no more need for a special and somewhat weird syntax.

10 years agofrontend/grammar: Added support for 'ALL <obj> <cmp> <expr>'.
Sebastian Harl [Sat, 25 Oct 2014 20:22:45 +0000 (22:22 +0200)]
frontend/grammar: Added support for 'ALL <obj> <cmp> <expr>'.

This matches, if all of the specified objects match the specified expression.
ALL also matches on empty object lists.

10 years agostore: Removed unused types.
Sebastian Harl [Sat, 25 Oct 2014 20:10:12 +0000 (22:10 +0200)]
store: Removed unused types.

10 years agostore: Added support for ALL matchers.
Sebastian Harl [Sat, 25 Oct 2014 19:43:28 +0000 (21:43 +0200)]
store: Added support for ALL matchers.

Similar to ANY, this matcher iterators over objects. It matches, if *all* of
those objects match another matcher.

10 years agostore: Don't special case negated matchers in the ANY matcher.
Sebastian Harl [Sat, 25 Oct 2014 19:41:16 +0000 (21:41 +0200)]
store: Don't special case negated matchers in the ANY matcher.

The old behavior no longer makes sense when thinking about matching *any*
object.

10 years agofrontend/grammar: Changed '<obj> <cmp> <expr>' to 'ANY <obj> <cmp> <expr>'.
Sebastian Harl [Sat, 25 Oct 2014 12:31:06 +0000 (14:31 +0200)]
frontend/grammar: Changed '<obj> <cmp> <expr>' to 'ANY <obj> <cmp> <expr>'.

… for services, metrics, and attributes. That is, let this involve less magic
but make it clear that this looks at multiple objects and matches if any of
them match.

10 years agostore: Renamed child-matcher to any-matcher.
Sebastian Harl [Sat, 25 Oct 2014 11:58:58 +0000 (13:58 +0200)]
store: Renamed child-matcher to any-matcher.

It matches if any object of an iterable list matches, so this is a more
appropriate name.

10 years agodata_test: Test various unsupported expressions.
Sebastian Harl [Fri, 24 Oct 2014 18:25:17 +0000 (20:25 +0200)]
data_test: Test various unsupported expressions.

10 years agostore: During lookup use strcmp() only for unknown data-types.
Sebastian Harl [Fri, 24 Oct 2014 16:08:14 +0000 (18:08 +0200)]
store: During lookup use strcmp() only for unknown data-types.

Unknown data-types means that we don't know the type of either one expression
before hand. For example, this is true for attributes given that there is no
schema.

10 years agostore: Record the data-type of an expression.
Sebastian Harl [Fri, 24 Oct 2014 15:59:28 +0000 (17:59 +0200)]
store: Record the data-type of an expression.

10 years agodata: Added sdb_data_expr_type().
Sebastian Harl [Fri, 24 Oct 2014 15:51:03 +0000 (17:51 +0200)]
data: Added sdb_data_expr_type().

This function returns the expected type of the result of an arithmetic
expression based on the operator and input types.

10 years agostore: Removed now unused name-matcher and sdb_store_matcher_parse_cmp().
Sebastian Harl [Thu, 23 Oct 2014 20:12:19 +0000 (22:12 +0200)]
store: Removed now unused name-matcher and sdb_store_matcher_parse_cmp().

10 years agot/: Converted name matcher tests to new style matchers.
Sebastian Harl [Thu, 23 Oct 2014 20:11:08 +0000 (22:11 +0200)]
t/: Converted name matcher tests to new style matchers.

10 years agofrontend/grammar: Implement '<obj> <op> <expr>' using new-style matchers.
Sebastian Harl [Thu, 23 Oct 2014 19:30:00 +0000 (21:30 +0200)]
frontend/grammar: Implement '<obj> <op> <expr>' using new-style matchers.

10 years agostore: Added sdb_store_parse_object_type().
Sebastian Harl [Thu, 23 Oct 2014 19:29:16 +0000 (21:29 +0200)]
store: Added sdb_store_parse_object_type().

This function parses an object type name (singular) and returns the type ID.

10 years agostore: Let sdb_store_parse_object_type_plural support attributes.
Sebastian Harl [Thu, 23 Oct 2014 19:28:15 +0000 (21:28 +0200)]
store: Let sdb_store_parse_object_type_plural support attributes.

However, the parser will not accept attributes in LIST commands as before.
Still, an attribute is considered to be a stored object.

10 years agostore: Let child matchers handle negated operators as before.
Sebastian Harl [Thu, 23 Oct 2014 19:20:50 +0000 (21:20 +0200)]
store: Let child matchers handle negated operators as before.

That is, negated matchers have to match *all* children because a condition
like "service != 'foo'" would match only on hosts which do not have a service
called 'foo'.

10 years agostore: Let child matcher actually match the child.
Sebastian Harl [Thu, 23 Oct 2014 19:01:26 +0000 (21:01 +0200)]
store: Let child matcher actually match the child.

10 years agostore: Fixed a typo in the type check of the child matcher.
Sebastian Harl [Thu, 23 Oct 2014 06:08:21 +0000 (08:08 +0200)]
store: Fixed a typo in the type check of the child matcher.

10 years agostore: Removed unused old sdb_store_attr_matcher().
Sebastian Harl [Thu, 23 Oct 2014 05:27:30 +0000 (07:27 +0200)]
store: Removed unused old sdb_store_attr_matcher().

10 years agostore: Renamed sdb_store_cmp_XX to sdb_store_XX_matcher.
Sebastian Harl [Wed, 22 Oct 2014 09:26:45 +0000 (11:26 +0200)]
store: Renamed sdb_store_cmp_XX to sdb_store_XX_matcher.

… now that these names have become available again.

10 years agostore: Removed unused, old conditional matchers.
Sebastian Harl [Wed, 22 Oct 2014 09:16:05 +0000 (11:16 +0200)]
store: Removed unused, old conditional matchers.

10 years agostore: Removed now unused support for attribute matchers in old code.
Sebastian Harl [Wed, 22 Oct 2014 09:09:30 +0000 (11:09 +0200)]
store: Removed now unused support for attribute matchers in old code.

10 years agot/: Use expression-based matchers for attribute comparison tests.
Sebastian Harl [Wed, 22 Oct 2014 09:08:17 +0000 (11:08 +0200)]
t/: Use expression-based matchers for attribute comparison tests.

10 years agostore: Removed sdb_store_matcher_parse_field_cmp() and sdb_store_obj_cond().
Sebastian Harl [Wed, 22 Oct 2014 08:48:13 +0000 (10:48 +0200)]
store: Removed sdb_store_matcher_parse_field_cmp() and sdb_store_obj_cond().

Those functions have been superseded by the new expression-based matchers.

10 years agot/: Use the new expression-based matchers for various tests.
Sebastian Harl [Wed, 22 Oct 2014 08:46:35 +0000 (10:46 +0200)]
t/: Use the new expression-based matchers for various tests.

10 years agodata: Format NULL as NULL and never quote it.
Sebastian Harl [Tue, 21 Oct 2014 08:02:07 +0000 (10:02 +0200)]
data: Format NULL as NULL and never quote it.

The idea, previously, was to make NULL values easily identifiable in all
messages but the focus really is on the JSON output which supports a real null
value.

10 years agostore: Let NULL values never match a regex.
Sebastian Harl [Tue, 21 Oct 2014 07:56:08 +0000 (09:56 +0200)]
store: Let NULL values never match a regex.

10 years agostore: Removed sdb_store_matcher_tostring().
Sebastian Harl [Tue, 21 Oct 2014 07:50:42 +0000 (09:50 +0200)]
store: Removed sdb_store_matcher_tostring().

This function was mainly used for debugging and more verbose error messages
upon test failures. Given that we have more fine-grained tests now, keeping
the tostring() methods up-to-date is rather annoying but for little benefit.

Instead, we should have a real pretty-printer or similar at some point.

10 years agofrontend/grammar: Unified field and attribute value matchers.
Sebastian Harl [Tue, 21 Oct 2014 07:13:47 +0000 (09:13 +0200)]
frontend/grammar: Unified field and attribute value matchers.

Use generic expressions and the new compare matchers instead.

As a side-effect of this change, not-operators (!=, etc.) no longer match on
NULL values (attribute does not exist). This is intended and should have been
like this in the first place (we've got 'IS NULL' for that purpose). For
example, `attribute['foo'] != 123' did previously match if attribute 'foo' did
not exist but now this is no longer the case.

10 years agostore: Let compare matchers fail if any of the operands is NULL.
Sebastian Harl [Tue, 21 Oct 2014 06:17:17 +0000 (08:17 +0200)]
store: Let compare matchers fail if any of the operands is NULL.

10 years agot/: Let tests use '<expr> IN .backend'.
Sebastian Harl [Tue, 21 Oct 2014 05:57:19 +0000 (07:57 +0200)]
t/: Let tests use '<expr> IN .backend'.

10 years agofrontend/grammar: Added support for the IN operator.
Sebastian Harl [Tue, 21 Oct 2014 05:45:31 +0000 (07:45 +0200)]
frontend/grammar: Added support for the IN operator.

This is a matcher checking if a value is included in an array. It's mostly
meant to be used to match backends at the moment.

10 years agostore: Added sdb_store_in_matcher().
Sebastian Harl [Tue, 21 Oct 2014 05:36:41 +0000 (07:36 +0200)]
store: Added sdb_store_in_matcher().

This function creates a matcher which matches if the right value evaluates to
an array value and the left value is included in that array.

10 years agodata: Added sdb_data_inarray().
Sebastian Harl [Tue, 21 Oct 2014 05:25:37 +0000 (07:25 +0200)]
data: Added sdb_data_inarray().

The function determines whether a value is included in an array.

10 years agostore: Added support for querying the BACKEND field.
Sebastian Harl [Mon, 20 Oct 2014 17:17:53 +0000 (19:17 +0200)]
store: Added support for querying the BACKEND field.

… returning an array of strings.

10 years agodata: Added support for comparing integer, decimal, and string arrays.
Sebastian Harl [Mon, 20 Oct 2014 07:44:16 +0000 (09:44 +0200)]
data: Added support for comparing integer, decimal, and string arrays.

Array comparison works element-by-element, returning how the first non-equal
elements compare to each other.

Added tests for array comparison and concatenation.

10 years agodata_test: Use int64_t instead of int for integer array data.
Sebastian Harl [Mon, 20 Oct 2014 07:43:33 +0000 (09:43 +0200)]
data_test: Use int64_t instead of int for integer array data.

10 years agodata: Fixed length of newly allocated array in concat().
Sebastian Harl [Mon, 20 Oct 2014 07:42:35 +0000 (09:42 +0200)]
data: Fixed length of newly allocated array in concat().

10 years agodata: Added basic support for arrays.
Sebastian Harl [Mon, 20 Oct 2014 06:03:13 +0000 (08:03 +0200)]
data: Added basic support for arrays.

An array may contain elements of one type and it's stored in compact raw form
(as in: not an array of union values but an array of the actual values).
'copy', 'free', and 'concat' operations are currently supported but limited to
integer, decimal, or string element types. ENOTSUP is returned for any other
operations.

10 years agodata_test: Removed unnecessary and possibly misleading checks.
Sebastian Harl [Sun, 19 Oct 2014 21:20:49 +0000 (23:20 +0200)]
data_test: Removed unnecessary and possibly misleading checks.

10 years agodata: Use if-statements rather than switch-statements.
Sebastian Harl [Sun, 19 Oct 2014 20:52:44 +0000 (22:52 +0200)]
data: Use if-statements rather than switch-statements.

10 years agodata: Added sdb_data_sizeof().
Sebastian Harl [Sun, 19 Oct 2014 20:21:45 +0000 (22:21 +0200)]
data: Added sdb_data_sizeof().

This function returns the size of the data-type for a given type.

10 years agostore: Clarify behavior of expr_attrvalue if the attribute does not exist.
Sebastian Harl [Sun, 19 Oct 2014 15:58:46 +0000 (17:58 +0200)]
store: Clarify behavior of expr_attrvalue if the attribute does not exist.

10 years agofrontend/grammar: Fixed parsing of 'attribute[<string>]'.
Sebastian Harl [Sun, 19 Oct 2014 15:24:50 +0000 (17:24 +0200)]
frontend/grammar: Fixed parsing of 'attribute[<string>]'.

That is, don't accept anything besides the string "attribute". Previously,
<anything>[<string>] was accepted as an attribute value.

10 years agofrontend/grammar: Make IS NULL operators available to any expression.
Sebastian Harl [Sun, 19 Oct 2014 14:57:34 +0000 (16:57 +0200)]
frontend/grammar: Make IS NULL operators available to any expression.

10 years agostore: Return NULL if an attribute was not found.
Sebastian Harl [Sun, 19 Oct 2014 12:58:45 +0000 (14:58 +0200)]
store: Return NULL if an attribute was not found.

10 years agodata: Added explicit NULL values.
Sebastian Harl [Sun, 19 Oct 2014 12:56:38 +0000 (14:56 +0200)]
data: Added explicit NULL values.

… and let all expressions involving NULL values to return NULL.

10 years agodata: Let CONCAT return NULL if any of its operands is NULL.
Sebastian Harl [Sun, 19 Oct 2014 12:00:41 +0000 (14:00 +0200)]
data: Let CONCAT return NULL if any of its operands is NULL.

This mimics behavior in SQL and also allows for missing values to be reported
as NULL and propagate that information.

10 years agofrontend/grammar: Use strings to access attribute value: attribute['name'].
Sebastian Harl [Fri, 17 Oct 2014 22:42:43 +0000 (00:42 +0200)]
frontend/grammar: Use strings to access attribute value: attribute['name'].

10 years agostore, frontend: Make IS (NOT) NULL an unary operator on expressions.
Sebastian Harl [Fri, 17 Oct 2014 17:50:34 +0000 (19:50 +0200)]
store, frontend: Make IS (NOT) NULL an unary operator on expressions.

This is more flexible and in-line with all other operators being migrated to
expression-based constructs.

10 years agoparser_test: Added various arithmetic expressions to the expr parser test.
Sebastian Harl [Fri, 17 Oct 2014 08:52:45 +0000 (10:52 +0200)]
parser_test: Added various arithmetic expressions to the expr parser test.

10 years agoAdded tests for sdb_fe_parse_expr() and fixed the implementation.
Sebastian Harl [Fri, 17 Oct 2014 08:43:45 +0000 (10:43 +0200)]
Added tests for sdb_fe_parse_expr() and fixed the implementation.

That is, fixed a typo preventing the parsed expression from being returned and
fixed memory leaks in the matcher and expression parsers.

10 years agofrontend/parser: Made clear that parser modes are flags.
Sebastian Harl [Fri, 17 Oct 2014 08:35:07 +0000 (10:35 +0200)]
frontend/parser: Made clear that parser modes are flags.

It doesn't make a difference so far, but will avoid problems in the future.

10 years agofrontend/grammar: Added a destructor for data objects.
Sebastian Harl [Fri, 17 Oct 2014 08:34:20 +0000 (10:34 +0200)]
frontend/grammar: Added a destructor for data objects.

10 years agofrontend/parser: Don't override fields of unknown types.
Sebastian Harl [Fri, 17 Oct 2014 08:33:46 +0000 (10:33 +0200)]
frontend/parser: Don't override fields of unknown types.

10 years agofrontend: Added sdb_fe_parse_expr().
Sebastian Harl [Fri, 17 Oct 2014 07:12:08 +0000 (09:12 +0200)]
frontend: Added sdb_fe_parse_expr().

This function enables a special new parser mode in which it only accepts
simple expressions.

10 years agofrontend: Renamed CONNECTION_EXPR to CONNECTION_MATCHER.
Sebastian Harl [Fri, 17 Oct 2014 07:10:03 +0000 (09:10 +0200)]
frontend: Renamed CONNECTION_EXPR to CONNECTION_MATCHER.

That's more specific.

10 years agostore: Added sdb_store_parse_matcher_op().
Sebastian Harl [Fri, 17 Oct 2014 06:36:42 +0000 (08:36 +0200)]
store: Added sdb_store_parse_matcher_op().

This function parses the string representation of an operator and returns a
constructor for the respective matcher.

10 years agodata: Don't free memory before using it for the last time.
Sebastian Harl [Fri, 17 Oct 2014 06:30:16 +0000 (08:30 +0200)]
data: Don't free memory before using it for the last time.

10 years agostore: Added not-equal and not-regex matchers.
Sebastian Harl [Wed, 15 Oct 2014 13:57:24 +0000 (15:57 +0200)]
store: Added not-equal and not-regex matchers.

10 years agostore: Added support for regex matchers.
Sebastian Harl [Wed, 15 Oct 2014 13:36:29 +0000 (15:36 +0200)]
store: Added support for regex matchers.

A regex matcher matches the string value an expression evaluates to against a
regular expression. Dynamic regular expressions are supported as well through
expressions evaluating to a string which is then dynamically compiled into a
regular expression when executing the matcher.

10 years agodata: Let sdb_data_parse() support inline casts from string to other types.
Sebastian Harl [Wed, 15 Oct 2014 13:15:25 +0000 (15:15 +0200)]
data: Let sdb_data_parse() support inline casts from string to other types.

10 years agostore: Added child matchers.
Sebastian Harl [Tue, 14 Oct 2014 21:44:19 +0000 (23:44 +0200)]
store: Added child matchers.

A child matcher matches an object's children of a certain type. It applies
another matcher to all children and matches if any of the children matches.

10 years agostore: Added matchers comparing two expressions.
Sebastian Harl [Tue, 14 Oct 2014 21:07:43 +0000 (23:07 +0200)]
store: Added matchers comparing two expressions.

This is much more powerful than the old conditional matchers and will replace
those once all code has been migrated to the new compare matchers.

10 years agostore: Apply filters when evaluating attribute values or expressions.
Sebastian Harl [Tue, 14 Oct 2014 20:45:07 +0000 (22:45 +0200)]
store: Apply filters when evaluating attribute values or expressions.