New connectblox services to create, close and get the list of workspace branches,
as well as replacing the default branch. These services can be installed in any workspace
and be exposed by lb-web server.

Note

We highly recommend that these services be protected
with authentication realms and possibly with authorization rules.

TDX exports now allow optional columns to be bound to the key of predicates.
The only requirement is that an optional column be uniquely defined by the
value of a functional predicate whose keys are either required columns or uniquely defined themselves.

Example 2.

For example, a file SKU|LINE|LINE_LABEL where only
SKU is required can be bound as follows:

Significant change in measure language recalc semantics:
recalcs now behave more like special aggregation methods. Therefore, they must
have a metric defined by another method for the base intersection,
whether that be an EDB predicate, primary formula, dialogue, CubiQL expression, etc.

New CubIQL REPL

Accessible via lb measure-service repl --uri [Service URI]

Allows easy querying of CubiQL using the textual syntax.

Provides access to a number of helpful operations on
CubiQL expressions, such as signature, predId, optimized representations, JSON skin, etc.

The new CastExpr can be used to convert an expression
with values of one type to values of another type. Providing the target type is all that is necessary.
The text syntax is: <expr> as <typ>.

Intersection text syntax has changed from using parens
to braces (e.g. (sku,store,week) to {sku,store,week}
to emphasize their unordered nature and and make them easier to read with
all the other parenthesizes involved.

New optimizations:

Widening expressions are now commuted with several other expressions
to reduce the number of tuples materialized.

Identity aggregation mappings are normalized away.

Override expressions can be commuted with total
and count aggregations to potentially reduce
the incremental maintenance overhead.

Small change in aggregation semantics: aggregations where maps
are annotated with hierarchies can switch hierarchies.

The measure service now does more rigorous type checking.

Added text CubiQL form aggmethod <expr> @ <intersection>
to specify an aggregation endpoint by intersection rather than by grouping.

Measure service AdminRequests can now be used to obtain
the name of the workspace backing a given measure service instance.

Improved support for multiple edits and locks at the same intersection.

Developer Tools

Additionally to Simple Storage Service (S3) by
Amazon Web Services (AWS), we now also support Google Cloud Storage (GCS).

S3tool has been renamed to cloud-store.
cloud-store is the command-line tool around s3lib
that can be used to interact with both AWS S3 and Google Cloud Storage.
For more information on the cloud-store command,
please refer to the
[Admin Manual].

The s3lib-keygen command is replaced by the new
cloud-store keygen command.

Corrected Issues

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

Resolved an issue where lb-web's RelationPrinter did not support
entities without refmodes, which prevented the monitoring of these entities.

Resolved issues with the Measure Service around roll-up logic generation
and the unwinding of synthetic aggregations.