LogicBlox 4.1

LogicBlox 4.1.9

Release Date: April 1st 2015

What's New


  • The new command lb replace-default-branch can be used to replace the current version of the default database branch by the current version of the given branch.

    Example 1. 

    lb replace-default-branch [-h] [--loglevel LOGLEVEL] [-L] [--cwd [DIR]] WORKSPACE BRANCH

Services Framework

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


    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:

    // bindings
    sku_to_line[SKU] = LINE
    line_to_label[LINE] = LINE_LABEL  

    SKU is required, so LINE is uniquely defined by sku_to_line. Therefore, it can be used as a key in line_to_label, so that LINE_LABEL is also uniquely defined. Note that these would cause an error:

    // error: there are 2 bindings defining LINE
    sku_to_line[SKU] = LINE
    line_to_label[LINE] = LINE_LABEL
    other_predicate[SKU] = LINE.
    // error: LINE and LINE_LABEL cannot be defined
    label_line[LINE_LABEL] = LINE
    line_to_label[LINE] = LINE_LABEL 
  • It is now possible to dynamically change the configuration to log the code generated by TDX.
    // start logging generated code
    $ lb web-server log tdx
    // stop logging
    $ lb web-server log no-tdx 

Measure Service

  • 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.
  • Resolved an issue that was causing incorrect results for certain fixpoint computations involving entity creation.
  • Resolved an issue that could cause an incorrect result for a count aggregation over a large cross product.
  • The runtotal series function now disallows entity values.

Installation and Upgrade information

Installation Instructions

Installing LogicBlox 4.1.9 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.9/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.

Upgrade Information

  • Automatic refmode conversion has been deprecated. The pedantic warning REFMODE_CONVERT has been upgraded to a full warning.


    • In the 4.2.1 release REFMODE_CONVERT will become an error.
    • Support for refmode conversion will be removed in the 4.2.23 release.

Release Information

Table 1. 

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