LogicBlox 4.1.7

Release Date: February 2nd 2015

What's New


  • In LogiQL it is now possible to write decimal and floating point literals without leading digits.

    Example 4. Decimal and floating point literals



  • Improved the performance of sampling (used by the optimizer) by roughly 25%. This particularly improves the performance of update transactions on databases with many materialized views to be incrementally maintained.

Developer Tools

  • The lb libraries subcommand can now optionally print library dependencies.

    Example 5. 

    lb libraries [-h] [--libpath LIBPATH] [--dependencies] [--quiet] [LIBRARIES [LIBRARIES ...]]
  • It is now possible to change the default lb-server log level at runtime using the command lb server loglevel. The syntax is similar to the existing lb web-server loglevel command, but affects all logging on the database server, including background processing and in-flight transactions. Per-request loglevel settings are honored as before.

    Example 6. 

    For example, if the default log level were currently "warning" then:

    # returns warning-level log events
    lb query /tmp/db '_("hello world").' -L
    # change default log level
    lb server loglevel perf 
    # returns perf-level log events
    lb query /tmp/db '_("hello world").' -L
    # returns warning-level log events
    lb query /tmp/db '_("hello world").' -L --loglevel warning


    Note that this change is not persistent over services re-starts.

  • Improved two details in logging at the 'perf' level, which is typically used for performance analysis:
    • First, we now consistently log the key ordering that the optimizer selected for a rule.
    • Second, if indexes are created, we now log the overall duration of the index creation.
    Earlier we only logged the duration of the parallel tasks that perform the index creation.

Services Framework

  • Improved the error reporting of functional dependency violations in TDX. For large files, the actual functional dependency error used to be masked by an internal error. The actual functional dependency violation is now correctly reported, together with the bindings of all variables involved in the rule as part of the error message.

Measure Service

  • Predicates in the measure model may now be flagged as "volatile" to indicate queries using them should not be cached. This is different than the underlying predicate being pulse, which were already handled. The volatile annotation is generally intended for database lifetime predicates where we don’t want to pay the cost of maintaining queries over them.
  • It is now possible to configure dimension "top" levels (that is a level that is at the top of a dimension lattice and has a single member)
  • Added support for AVERAGE aggregation type.
  • Added support for the following builtin operators: Absolute value (ABS) and modulo (MOD).
  • A variety of optimizations to logic generated for queries and updates.
  • Measure language:
    • Variables in formula bodies are now allowed to have different labels, as long as they belong to the same Dimension.
    • Predicates and metrics in inverse formula bodies may now use LogiQL stage annotations, e.g. @prev.

Corrected Issues

The issues listed below have been corrected since the 4.1.6 release.


  • Addressed a performance issue where indexes for predicates were re-created fully due to a bug in index management. Because index creation is very fast this went unnoticed for a while. For larger databases, index creation is more noticeable though, so this can be a critical fix for some applications.
  • Resolved a performance problem with negation in incrementally maintained materialized views. Tuning has improved the performance for such rules with about 50%.


  • Mostly fixed a common warning for functional dependency violations in sampling. Some warnings still remain. A complete resolution of this issue will be included in the next release.
  • Resolved an issue where the pager stopped responding to requests.

Measure Service

  • Resolved issues with updates to better support locking and multiple edits to a single metric.

Installation and Upgrade information

Installation Instructions

Installing LogicBlox 4.1.7 is as simple as following the steps outlined below:

  1. Download the installation package.
  2. Extract the tarball in <YourPreferredInstallDirectory>
  3. Run the following command:
    source <YourPreferredInstallDirectory>/logicblox-4.1.7/etc/profile.d/logicblox.sh
    NOTE: this script will set all the necessary environment variables. You might want to add this command to your .bashrc.

Release Information

Table 3. 

Server requirements
Operating System: 64 bit Linux or Mac OSX 10.9 or higher
Java Runtime Environment 1.7, update 11 or higher
Python 2.7 or higher