Code

Drafted release notes for 0.6.0.
[sysdb.git] / ReleaseNotes
index d37d4207016337332743efa22f948bd6bb30a80d..7ed469368801d3ae884fa77357fb4adc453f3fcd 100644 (file)
@@ -6,6 +6,14 @@
   and very detailed list of changes can be obtained from the Git logs for each
   release.
 
   and very detailed list of changes can be obtained from the Git logs for each
   release.
 
+ Compatibility Note:
+ ~~~~~~~~~~~~~~~~~~~
+
+  All pre 1.0 development snapshots are not considered stable yet. That is,
+  all interfaces, including the plugin API, the network protocol, or the query
+  language, may change in an incompatible way at any time. All changes are
+  documented here.
+
  About SysDB:
  ~~~~~~~~~~~~
   “System DataBase” (SysDB) is a multi-backend system management and inventory
  About SysDB:
  ~~~~~~~~~~~~
   “System DataBase” (SysDB) is a multi-backend system management and inventory
 
   <https://sysdb.io/>
 
 
   <https://sysdb.io/>
 
+Version 0.6.0, Release Date: tba
+--------------------------------
+
+  This release focuses on a clearer query language. The underlying
+  architecture has been refactored to allow for more powerful and generic
+  expressions.
+
+   * core:
+     - Added support for arrays. Elements may be of any other supported
+       data-type but only integers, decimals, and strings are fully supported.
+   * store:
+     - Refactored matchers: all matchers now operate on one or two expressions
+       or other matchers, replacing the old and less flexible conditional
+       matchers.
+     - Attribute values may now be used anywhere in an expression.
+     - On data-type mismatch when comparing attribute values, the values will
+       be cast to string (previously only done for regex matches).
+     - Added support for querying an object's backends (array of strings).
+     - Added support for iterating child objects and array values.
+     - All matchers now return false if any operand is NULL (except for IS
+       NULL).
+     - All operations now return NULL if any operand is NULL.
+     - Fixed behavior of not-operators (!=, !~) and let them not match if any
+       of the operands is NULL.
+     - Add support for looking up all object types (hosts, services, metrics).
+     - Refactored the JSON formatter to be more flexible and powerful.
+     - Record parent objects for each stored object.
+   * frontend:
+     - Added a separate parser mode for expressions.
+     - Added a new queryable field 'name' to be used in place of the rather
+       magical keyword 'host' when looking up hosts.
+     - Improved error reporting in the parser and the (newly introduced)
+       analyzer.
+     - Apply filters to hosts in the FETCH command.
+   * query language:
+     - All operators may now be used in all places if the involved data-types
+       support the respective operation. For example, regular expressions may
+       be used to match any value. Non-string values are cast to strings for
+       that purpose. IS NULL / IS NOT NULL may be applied to arbitrary
+       expressions.
+     - Introduced the 'IN' operator to check if a value or an array of values
+       is included in an array.
+     - Added support for arrays: [<elem1>,<elem2>,...]
+     - Added support for string and array concatenation using the '||'
+       operator.
+     - Attribute names have to be strings instead of identifiers now.
+     - Access object fields using '<field>' rather than '.<field>'.
+     - Let the LOOKUP and FETCH commands support services and metrics.
+     - Introduced 'FETCH service|metric <host>.<name' for fetching services
+       and metrics.
+     - Added support for 'ANY' and 'ALL' operators which apply a matcher to
+       each value emitted by an iterator (a host's services and metrics or
+       arrays). 'MATCHING ANY service|metric|attribute <cmp> <expr>' replaces
+       'MATCHING service|metric|attribute <cmp> <value>' expressions.
+
+Version 0.5.0, Release Date: 2014-10-06
+---------------------------------------
+
+  This release focuses on simplifications and more flexibility in the frontend
+  and the query language. Most of those changes are not backward-compatible
+  but easy client implementations.
+
+   * sysdb:
+     - Include priority when printing log messages.
+     - Fixed handling of empty queries.
+   * store:
+     - When serializing the entire store (LIST command), return an array of
+       host objects (rather than wrapping it into another object).
+     - Fixed JSON format of time-series data.
+     - Fixed error checks of invalid compare expressions and reject them.
+     - Fixed lookups by back-end name.
+     - Added support for comparing attributes with different types by
+       comparing their string values.
+   * frontend:
+     - Clarified details about asynchronous messages and authentication
+       options and made client implementation more robust.
+     - Introduced a new message type encoding the JSON serialized response of
+       a query and its data type.
+     - Include the priority in log messages.
+     - Include object types in FETCH, LIST, and LOOKUP messages.
+     - Added support for including services and metrics in LIST responses and
+       skip hosts without the respective children.
+   * query language:
+     - Added support for services and metrics to LIST command.
+     - Changed syntax for attribute lookup to 'attributes[<name>]'.
+     - Changed syntax for accessing queryable fields to '.<field>'.
+   * utils:
+     - strbuf: Improved memory management.
+
 Version 0.4.0, Release Date: 2014-09-01
 ---------------------------------------
 
 Version 0.4.0, Release Date: 2014-09-01
 ---------------------------------------
 
@@ -40,7 +137,7 @@ Version 0.4.0, Release Date: 2014-09-01
      - Fixed a memory leak.
      - Apply (very) simple optimizations to lookup expressions.
      - Added support for metrics and their “data-stores” (describing how to
      - Fixed a memory leak.
      - Apply (very) simple optimizations to lookup expressions.
      - Added support for metrics and their “data-stores” (describing how to
-       access the actual data references by a metric).
+       access the actual data referenced by a metric).
      - Added support for querying time-series data through the newly
        introduced “time-series fetcher” plugins.
    * frontend:
      - Added support for querying time-series data through the newly
        introduced “time-series fetcher” plugins.
    * frontend:
@@ -129,7 +226,7 @@ Version 0.3.0, Release Date: 2014-08-01
      - Store plugin identifier (host, plugin, plugin_instance, type,
        type_instance) as service attributes.
 
      - Store plugin identifier (host, plugin, plugin_instance, type,
        type_instance) as service attributes.
 
-Version 0.2.0, Release Date: 2014-07-01
+Version 0.2.0, Release Date: 2014-07-02
 ---------------------------------------
 
   This is another development snapshot of SysDB. The main focus of this
 ---------------------------------------
 
   This is another development snapshot of SysDB. The main focus of this