LogicBlox 4.4.12

What's New

Modeler already supported dimension splitting on different axes. We now also added support
for dimension splitting on a single axis!
Watch the video here.

The handling of pending and invalid edits in form mode now matches the behavior in grid mode.

Modelertestutils now contains methods for creating and removing user-defined sheets.

Tools and Services

Support for 128-bit integer literals has been added to LogiQL. These literals
are written with a suffix of 'q'. For example, 5 is treated as
an int type and 5q has a type of int128.

A new global service configuration flag 'enable_authorization_without_authentication'
was added to enable service authorization without authentication. This is
intended for use in the backend nodes that are behind a proxy which cannot
authenticate requests. In such scenarios, setting this flag to true will
enable authorization check on requests with operations associated with
them and thus preventing unauthorized access to the services on the
backend nodes. Setting the global flag affects all services hosted on
the node.

There is an additional service level option to enable/disable this
behavior. It can be achieved by setting the "authorization_only"
predicate to true/false in the service configuration. The value set in
the predicate will override the global configuration.

NOTE: If you want to start using authorization on the backend, make sure the
proxy targets port 8080 instead of 55183 for workbook services, and the flag 'enable_authorization_without_authentication'
is
set to true (on the backend nodes ONLY!).

Measure Service

Extended slides to allow more than a single target level.

It is now possible use an AdminRequest to query the state of some of the
measure service configuration flags (such as the log level, etc.).

The REPL will now print results of optimization in CubiQL text format rather than in JSON.

Considerable memory usage improvements, especially for scenarios where there are many branches all with their
own measure service instances.

The measure service model can now make use of what we are calling tuple
types in many places. Previously all types referenced by the measure
service have been atomic and have a straightforward mapping to LogiQL
types. Tuple types allow defining various things in terms of a n-ary
tuple of other types. For example, instead of a particular level being
defined in terms of a single entity, it could be defined by a pair of
two entity values. When generating the underlying LogiQL these tuples
will be flattened down to multiple predicate arguments. There are a few
places they are not supported, but we'll improve this over time.

Corrected Issues

The issues listed below have been corrected
since the 4.4.11 release:

Modeler

When using the mouse to drag a level or measure pill to/from the axes, the dragged pill looks much better.

For IE11 users, the performance of level creation forms containing large dropdowns has been improved significantly.

Modeler no longer has troubles keeping up with user input in String typed input fields on custom level creation
forms.

Modeler’s performance while processing user input on a grid containing a large number of position locks has
been improved significantly.

Tools and Services

Fixed an issue in TDX Services where lookup of sub-entities would not work.

Improved diagnostic messages for incorrect uses of linear recursion P2P and also
fixed some problems with the use of constants in the body of linear recursion rules.

Fixed various issues with default valued predicates.

Fixed bug that caused exception to be thrown when min or max aggregation
was used with a default valued predicate in an inactive exec block.

Applied an optimization that improves the performance and prevents
leaking default values into the head of the rule. It clearly defines the
semantics of a default val min/max aggregate and rewrites it into the set
of rules that produce an equivalent result as the original rule, but runs
over materialized layers only. As the rewrite is semantically equivalent
to the original rule, it solves an issue of incorrect calculations and
also prevents leaking of default values into the head predicates.

Fix for leaking default values into head predicates for default value
rules with total aggregation and non-aggregate IDB rules. Fix is applied
to default value rules that do not contain any non-default predicates in
the head and no upserts.

Added an optimization that handles division in the default value rule
body. Such rules are now efficiently evaluated over the materialized
layer only. The optimization supports `int` and `decimal` types. The
`float` type is not supported as the semantics of float type division is
different.

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

Upgrade Information

Modeler

The libs.js and libs.min.js files were removed from the build as announced.
Please remove references to these files from your HTML pages.

Modelertestutils now uses ES6 classes. By the ES6 specification, its methods are no longer enumerable via
forEach loops. So, if you have code which tries to enumerate modelertestutils methods, you should do it
in a way compatible with ES6. For example:

The library containing the modeler migration tool is included in the
distribution under lib/npm/modeler-migrations-<version>.tgz
and contains a command line tool for doing various transformations/migrations
of modeler configurations.

To use the npm module, you first need to install it by running
npm install path/to/modeler-migrations-<version>.tgz.
You will then be able to use the command line tool.
The module contains a README.md file that lists all available
transformations as well as detailed instructions for use.

To automatically upgrade a Modeler-js based application from one version to another,
run the upgrade script to upgrade between versions: