LogicBlox 4.1.7

What's New

LogiQL

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

Example 4. Decimal and floating point literals

.001d
.0001f

Performance

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.

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.

Note

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.

Performance

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%.

Database

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: