LogicBlox 4.10.0

Release Date: February 19, 2019

What's New

LogicBlox 4.10.0 introduces the following enhancements:

  • Modeler
    • User-defined sheets are no longer forced into Configuration Mode.

      Example 1. 

      You can now open and close Configuration Mode in a user-defined sheet in the exact same way as you're used to within a pre-configured canvas.

    • Editable percent parent measures are no longer marked as read-only in Deferred Calc Mode.

    • The /views service has been exposed publicly in order to have an ability to create multiple sheets in a single request using the POST request method. We also added the ability to delete multiple views at a time via this service using the DELETE request method. This delete functionality has also been exposed publicly.

      Example 2. 

      To delete multiple views using this service, you should pass a JSON request object containing the application and a list of associated viewIds.

          "application" : "main",
          "viewIds" : [

    • Measures can now be added multiple times to the axis configuration of a sheet.

      Example 3. 

      For instance, this new functionality allows you to add the measure Sales as both a measure and an attribute.

      This example with duplicate measures on the axes has the following view configuration:

        pivotConfig: {
          axis: {
            z: [
              // The measure Sales appears as a measure field on the Measures axis            
              { qualifiedName: "Sales" }
            x: [
              // And the same measure also appears as an attribute field on the Columns axis
              { qualifiedName: "Sales" }, 
              { qualifiedName: "-:Measures" }

      To support the configuration of duplicate measures within the axis configuration of a sheet, the properties filter, sort and sortByMeasureValue (the new property name for sort-by-measure-value) have been moved from the pivotConfig object to the field objects within the axis configurations:

        pivotConfig: {
          axis: {
            x: [
                qualifiedName: "Sales",
                filter: { ... },
                sort: { ... },
                sortByMeasureValue: { ... }

    • It's now possible to use first/last in composite spreads.

      Since you can't spread down an alternate hierarchy for ALL levels, the dimension for which first/last is specified as the spread method will be hashed at ALL, typically Calendar:ALL. This is also true if the Calendar dimension is not on the view at all which is an implicit ALL. Modeler will inform the user why it's not possible to aggregate at ALL via the tooltip that appears when the user hovers over the hashed out cells.

    • Grid-based canvas layout configurations are no longer supported by Modeler. For more information, see the Upgrade Information section.

  • Measure service
    • CubiQL textual syntax now has support for Int128 literals using the same <int>q syntax that we use in LogiQL.

    • Improved support for using Int128 values, including access to more builtins.

    • Initial support for the LogiQL datetime type. Most applications will still need to wait until the modeler supports this feature.

    • Additional perf level logging relating to spreading.

    • In order to comply with the deprecation of subtyping in LogiQL, in the measure_config library the entity subtype baseSignature has been eliminated. For more information, see the Upgrade Information section.

    • The use of the measure language is now disabled by default. The measure language can be enabled by explicitly setting a flag. This should be considered another reminder to work out your migration plans. For more information, see the Upgrade Information section.

Corrected Issues

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

  • Modeler
    • Modeler relies on browser capabilities for selecting the default language, and for some languages this results in a language code without the country code (e.g. ru instead of ru-RU for Russian, Russia). To make sure Modeler is able to select the language correctly, it's now possible to configure a list of fallback languages in Modeler's configuration.

      Example 4. 

      For example, to configure a fallback for Portuguese pt to the available Brazilian Portuguese translation pt-BR and a fallback for Russian ru to the available Russian translation ru-RU, you'll need to have the following in your Modeler configuration:

      availableLanguages: [
        {name: "English (US)", value: "en-US"},
        {name: "Russian (RU)", value: "ru-RU"},
        {name: "Portuguese (BR)", value: "pt-BR"}
      fallbackLanguages: {
        pt: ["pt-BR"],
        ru: ["ru-RU"]

    • Modeler did not correctly hide the decimal part of decimals formatted as an integer when using dots or spaces as the thousands separator (e.g. # ###[,] or #.###[,]). This has now been fixed.

    • Fixed an issue where in some corner cases measure data was hashed out on the grid instead of being displayed properly.

    • The promote expression now works as expected for locking without the intersection specified.

    • Modeler now sorts the levels shown in the partition columns of the workbook list. These levels are sorted lexicographically.

    • Modeler's performance when searching for measures in the configuration panel has been improved.

    • In Form Mode, the scroll bar is now rendered correctly for long forms.

    • It's now possible to copy/paste values from entity-typed dropdowns that contain special characters.

    • Using the "Clear All Cell Locks" option from the right-click menu will now clear all cell protection as expected.

    • When using same-axis dimension splitting, an error could occur when the user tried to apply a filter on a lower level. This problem has been solved.

    • Field sorting has been improved for same-axis dimension splitting. Headers on the grid are now always displayed in the same order as the fields in the axis configuration panel.

  • Tools, Database, and Services
    • Updated ConnectBlox protocol comments to affirm that we return datetimes in Unix Time format

    • The string:min and string:max predicates had been implmented for some time but an oversight in the implementation made them inaccessible. This has been fixed.

    • Fixed some cases where default values were leaked into the materialized layer of default valued predicates, which caused unnecessary workspace growth and performance degradation.

    • Fixed an error in the maintenance of predicates defined by linear recursion rules. If there are any changes to the grouping predicates that appear in the body of a previously-defined linear recursion P2P rule, the rule is now re-evaluated. The previous (incorrect) behaviour was to silently ignore such changes.

    • External delta-all predicate requests could produce an internal error (duplicate key in hashtree). This has now been fixed.

  • Measure service
    • Fixed an issue with how locks over parameterized metrics were computed, using the implicit rather than explicit aggregation form.

    • Fixed an issue that could cause incorrect permuting of count aggregations.

    • Some small fixes to the handling of the refine expression.

    • More thorough parsing and better error messages for dotted identifiers in CubiQL textual syntax.

    • Spreading via update expression will now correctly respect the hierarchy specified in the distribution.

    • Significant performance improvements in applying our optimization rewrites, as well as when converting to our internal AST representation.

Known Issues

The issues listed below are known to exist in the 4.10.0 release.

  • Tools, Database, and Services
    • This release contains changes to some lb-workflow tasks related to workbook creation. These fixes have not been applied yet to lb.wb.CreateWorkbook, which means errors related to recent changes in the LB runtime that imposes restrictions on string lengths can still occur. Please note that this known issue does apply to lb.wb.util.CreateWorkbook.

Installation Information

Install LogicBlox 4.10.0 by following the steps outlined below:

  1. Download the LogicBlox installation package for Linux or macOS from the LogicBlox developer website.
  2. Extract the tarball into a directory, which we refer to as <LOGICBLOX_HOME>.
  3. Run the following commands:
    source <LOGICBLOX_HOME>/etc/profile.d/logicblox.sh
    source <LOGICBLOX_HOME>/etc/bash_completion.d/logicblox.sh
    NOTE: these scripts automatically set all the necessary environment variables (please be aware that this script only works if you use bash as your shell). You might want to add these commands to your .bashrc.

Upgrade Information

  • Modeler
    • Grid-based layout, defined by the layout configuration section in the canvas configuration JSON, is no longer supported by Modeler. Please upgrade your canvases to use tile-based layout. The Modeler Migration tool will emit a warning for every canvas using grid-based layout helping you to identify files requiring changes.
    • The library containing the Modeler migration tool is included in the distribution under <LOGICBLOX_HOME>/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 <LOGICBLOX_HOME>/lib/npm/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 application from one version to another, run the upgrade script to upgrade between versions:

      ./node_modules/.bin/migrate-modeler --fromVersion <prevVer> --toVersion <toVer> /path/to/my/modelerapp

      where the version numbers refer to LogicBlox releases (e.g. 4.10.0).

      NOTE: If you installed the npm module globally, you won't need the ./node_modules/.bin prefix on the command.
  • Measure service
    • In order to comply with the deprecation of subtyping in LogiQL, in the measure_config library the entity subtype baseSignature has been eliminated. There is now just the signature entity. This may require minor revisions to any logic that uses the library to replace the uses of baseSignature.
    • A flag has been added to measure model to enable the use of the measure language.

      Example 5. 

      The measure language must now be enabled explicitly by setting the measure language flag.

      +lb:web:measure:MeasureModel_measure_language[m]=true <- +lb:web:measure:MeasureModel(m).

Release Information

  • Server requirements
    • Operating System: 64-bit Linux; Apple macOS 10.10+ is supported for local development
    • Java Runtime Environment 8, update 101 or higher
    • Python 2.7 or higher
  • Client requirements
    • Applications using LogicBlox Modeler: Modeler supports major browsers not older than 1 year. Google Chrome provides the best performance.
    • Requirements for applications using non-LogicBlox Modeler components may vary per application.