LogicBlox 4.1.1

Release Date: May 1st 2014

What's New

Performance Improvements

LogicBlox 4.0.6 introduced domain parallelism to LB4. Domain parallelism,
a mechanism for splitting data into pieces such that a query can be
evaluated on each piece in parallel, allows LogicBlox to scale up
its performance with the number of cores available in a single machine.
Domain parallelism in past LogicBlox releases was restricted to
queries -- both ad hoc and precompiled. In LogicBlox 4.1.1 the initial full
evaluation of IDB rules is parallelized, too.

Applications with very large schemas will
experience a significant reduction
of the memory consumption when
installing the schema.

Applications making use of the ratio and even spreading features
will experience significant performance improvements.

Measure Service

The query_request field of the Request
message has changed from being optional to being repeated.
This allows for batching up multiple QueryRequests,
each of which may request data at a different intersection,
into a single Request.

Note

Please note that this change necessitated a breaking change to
how the results are returned. Instead of the result columns
being found in the Response message,
they are found in the repeated report field.

The measure service now offers support for an empty expression.
This is mostly useful when generating complex expressions.
It can be convenient to emit an empty expression rather than
complicating the generation code.
The use of the empty expression will then be appropriately
optimized away by the measure service.

It is now possible to ask for the value of an expression in
the previous transaction. This is most useful when using
the measure service’s spread-by-query functionality.

Note

Please be aware that this feature
is still in beta mode and may change in the future.

Developer Tools

Config files for lb-web server and client
have a section for global attributes.
Previously, this section was defined by
the initial part of the file, before any section
is declared. A problem with this approach is
that it is not possible to compose configuration files
by concatenation since the global sections of a file
would be included in the last section of the previous file.

Now it is possible to declared a section named
global that contains the global attributes.
Config file concatenation is possible, and all global
sections have their attributes merged.

It is still possible to use the unnamed section for global,
which maintains backward compatibility.
However, it is not allowed to have a file with both an
unnamed section and a section named global.
That is, all concatenated files must declare a global section explicitly.

Corrected Issues

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

Resolved an issue with plugin logic that prevented
it from referencing predicates that are transaction lifetime.

Resolved an issue that prevented
lb-web server and client from loading multiple
config files with empty sections that have the same name.

Resolved an issue with loading a measure with the
delimited file import service, that caused the import to fail
when a line in the file ended with a double-quote and
the delimiter.

Installation and Upgrade information

Installation Instructions

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

NOTE: this script will set all the necessary
environment variables. You might want to add this command to your
.bashrc.

Upgrade Information

Previously, dialogues were implemented via installed delta logic.
However, now that the measure service no longer installs delta logic,
it was no longer possible to read from a dialogue metric at stage initial.
The dialogue logic is now in an inactive block that is activated as needed. As such,
dialogues no longer need a request predicate and the
request_pred field has been removed from the
Dialogue message. A new required field,
block, has been added to provide the name of
the inactive block to be activated when using the dialogue.

When sending a protocol buffer update expression, developers now
need to supply the expected type of the input, if any.

Because it is now possible to make multiple query requests in
a single measure service protobuf Request
message, instead of report columns being contained directly in
the Response message, the columns
from each request are found the in repeated report field.

Deprecated Features

The report_name field of a
QueryRequest is now unnecessary,
as reporting predicates are no longer installed,
and is not read by the measure service.
It will be removed in an upcoming release.

Key requests are now syntactic sugar for adding
specific expressions to a QueryRequest.
As such, they are no longer necessary and will be
removed in an upcoming release.