LogicBlox 4.33


Table of Contents

LogicBlox 4.33.0

LogicBlox 4.33.0

Release Date: April 9, 2021

What's New

LogicBlox 4.33.0 introduces the following enhancements:

  • Modeler
    • We've introduced usability improvements in the model browser that appears on the left-hand side of the sheet in Configuration Mode. Measures and levels in the browser are now shaded light blue when the field is already configured on one or more of the axis configuration panels (Measures, Columns, Rows, and Slices).

      You can use the checkboxes in the browser to select multiple measures and levels in the model browser. These can then all be added at once to an axis configuration panel using the "+ Add to.." option. The selection can be cleared quickly using the trash can icon.

      Example 1. 

      The following example shows the selection of three measures (Similar Sku, Sku Index, and Sku Color) using the checkboxes in the browser. The measure Sku Description, and the levels "Class", "Subclass", and "Sku" are shaded light blue in the browser as a visual indicator that these fields are already added to this sheet view.

      When the user selects the "+ Add to .." option, they can select on which axis configuration panel the selected fields should be added.

      After selecting the "Measures" axis configuration panel, these measures are added to the sheet view. As expected, these measures are now also shaded light blue.

    • Modeler's sheet title bar and sheet toolbar have been merged into a single toolbar.

    • We are introducing Fullscreen Mode in the Modeler. This new mode allows users to maximize screen real estate for a particular sheet view. When a view is presented in Fullscreen Mode, the Modeler hides user interface elements such as the top menu bar, the navigation panel, axis configuration panels, and other views on the canvas.

      Example 2. 

      To enable Fullscreen Mode, select the "Enter Fullscreen" option in the ••• menu of the sheet toolbar. Notice how the options to show and hide axis configuration panels (Measures, Rows, Columns, and Slices) has been moved to this menu too.

      Axis configuration panels are hidden in Fullscreen Mode. They can be displayed using the corresponding options in the ••• menu of the sheet toolbar.

    • We've added a new option that allows you to specify the moving selection direction when pressing the Enter key. The option works exactly the same as the existing option for the Tab key.

      Example 3. 

      The options related to moving selection on Enter and Tab can be found in the Pivot Settings dialog of the Modeler.

      In the sheet configuration JSON, we renamed the existing option for the Tab key from moveSelectionDirection to moveSelectionOnTab. The new option for the Enter key is called moveSelectionOnEnter. Please make sure you run modeler-migrations to rename the moveSelectionDirection option in existing sheets.

    • Visual updates to the styling of headers displayed on sheet views in Grid Mode. We've added more contrast to the header and cell borders, and we've added more font-weight to the header labels.

  • Modeler IDE
    • It's now possible to configure a tag that includes a Workbook Template that does not have any positions configured for partitioning. If such a Workbook Template is added to a tag, it results in a workbook that contains all positions.

  • Tools, Database, and Services
    • The lang:ordering pragma in LogiQL has been deprecated. There was no need to make this part of the LogiQL language as it did not provide any functionality that isn't possible another way.

    • If the LogiQL string:datetime:convert function fails for some input, the warning issued will now include the format string used when attempting to parse the input string.

    • Datetime parsing is now stricter with respect to what can be included in the format string. Previously, non-flag characters in the format string would be ignored. For example, the format string "%Y-%m-%d %H:%M:%S %Q" would previously accept the string "2010:02:03 02-03-10 CET" as valid (note that the colons and dashes in the string do not match the format string). This will now fail to parse.

    • Diagnostics produced upon detecting parsing errors in the argument of the predict P2P have been significantly improved.

    • Arguments for the predict P2P have altered syntax. Any argument values that were maps (i.e. containing key/value pairs and looking like coefficients=[bias=bias|alpha=alpha|beta=beta|centroid=centroid] for example) must now delimited by curly braces rather than by square brackets (i.e. coefficients={bias=bias|alpha=alpha|beta=beta|centroid=centroid}). This was done to allow more robust argument parsing and error reporting.

    • The syntax of the dlbatch addIndex command has been changed so that multiple indices can be installed at once to attain better performance. The new syntax is not backwards compatible and now looks like addIndex predicate-name-1/permutation-1 predicate-name-2/permutation-2 ....

      As a result of this change, commands such as

      addIndex -P sales -O 3_2_1_0
      addIndex -P returns -O 1_2_0
      addIndex -P product_color -O 1_0

      need to be adapted to

      addIndex sales/3_2_1_0
      addIndex returns/1_2_0
      addIndex product_color/1_0

      and, if possible, be combined into a single command for performance considerations. For example

      addIndex sales/3_2_1_0 returns/1_2_0 product_color/1_0

    • Improved SIP rule maintenance for certain special cases (e.g., more precise identification of the special case of maintenance for empty predicates and avoidance of SIP rule generation in transaction and query lifetimes for IDB predicates with database lifetime).

    • Added the ability to generate MPS format files from the bloxoptimize P2P in addition to the LP format. The default format is now MPS. The desired file format can be changed by setting the ProblemInstanceFileExtension parameter in the P2P.

  • Measure service
    • Previously REPL scripts would continue running if a command resulted in an error. The REPL script will now exit on an error. The new --continue-on-error flag can be used to restore the old behavior if needed.

Corrected Issues

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

  • Modeler
    • Resolved an issue with drag and drop that could occur when dragging multiple fields at once off an axis configuration panel (Measures, Columns, Rows, or Slices).

  • Modeler IDE
    • The Modeler IDE now correctly renders the drag handles for draggable items in a list or table (e.g. Measure Components).

    • Resolved an issue with missing scroll bars in the "Intersections" view of the Modeler IDE. A scroll bar now appears for both the list of available and selected levels.

    • Fixed an issue that caused the forward button in the top menu bar of the Modeler IDE to be always disabled. The button is now always enabled, allowing users to use it to navigate to the next view.

    • Resolved an issue related to scope while generating netmap.csv. For localhost, the Modeler IDE will always use the data scope which is typically used for the primary set of Modeler workbook hosts.

    • Workbook Templates without any positions that specify the levels at which workbooks should be partitioned will result in a workbook with all positions (i.e. an unpartitioned workbook).

    • Fixed a rendering issue in the dimensions browser related to the "+ Add to.." button used to move multiple fields at once to one of the axis configuration panels.

    • Resolved rendering issues related to multi-select dropdown components. The mouse cursor now changes into a pointing finger when hovering over the dropdown arrow. The size of the input field now remains the same for open and closed state.

  • Tools, Database, and Services
    • LogiQL eliminated support for datetime literals five years ago to avoid inconsistencies between the semantics in the LogiQL compiler and the LogiQL runtime. However, although literals were removed from the grammar of the language at that time, they still existed internally. For example, constant folding in the LogiQL compiler would be applied to string:datetime:convert, which allowed much more flexibility for the input string than was supported by the LogicBlox runtime. While this might seem like a feature, it could cause straightforward refactoring of LogiQL code to fail. For example, the LogiQL ..., x=string:datetime:parse["Sat, 12 Aug 1995 13:30:00 GMT"], ... would succeed but dts[]="Sat, 12 Aug 1995 13:30:00 GMT". ..., x=string:datetime:parse[dts[]], ... would not. This oversight has been resolved and the runtime will now always perform the parsing.

    • Improved handling of newly created indices in certain cases so that these are not created from scratch within a transaction, but rather will be maintained.

    • Fixed a regression in the dlbatch addIndex command that would fail to keep the SIP predicates for IDB predicates up-to-date with the newly installed index. The regression was introduced in 4.26.2.

    • Fixed a bug where the lb-server command would not return the logs to the client if this had been requested alongside execution of a batch-script command.

    • Added a missing JAR to the lb-web classpath that is needed for the SMTP SendEmail handler.

  • Measure service
    • Tokens meant for internal use only will no longer leak out in some error messages.

    • The REPL will now correctly return an error code to the enclosing shell.

Known Issues

The issues listed below are known to exist in the 4.33.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.

  • Notice for macOS 10.15 Catalina users
    • LogicBlox builds are not signed with an Apple developer certificate. This may result in error messages stating that LogicBlox originates from an "unidentified developer". To ensure the LogicBlox services will run on your system, apply the following command on the distribution tarball you downloaded from this website:

      $ xattr -d com.apple.quarantine logicblox-osx-<VERSION>.tar.gz

      Additionally, LogicBlox services will not function correctly when using a signed/notarized Java Runtime Environment. For instance, AdoptOpenJDK version 11.0.6 is the latest version that works with LogicBlox without causing signing issues.

      For more information about running apps from an unidentified developer, see Apple's macOS User Guide.

Installation Information

Install LogicBlox 4.33.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
    • 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 --no-save <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.33.0).

      NOTE: If you installed the npm module globally, you won't need the ./node_modules/.bin prefix on the command.

  • Tools, Database, and Services
    • Parsing of strings into datetime values has been made more precise. You may find that string values that would previously parse to datetimes using string:datetime:convert now fail to parse due to inconsistencies between the string being parsed and the format string used to do the parsing. If you encounter these problems, carefully check your input strings and format strings to make sure they are consistent.

    • Arguments for the predict P2P have altered syntax. Any argument values that were maps (i.e. containing key/value pairs) must now delimited by curly braces rather than by square brackets. For example, and old map argument looking like coefficients=[bias=bias|alpha=alpha|beta=beta|centroid=centroid] must be altered to look like coefficients={bias=bias|alpha=alpha|beta=beta|centroid=centroid}.

    • The syntax of the dlbatch addIndex command has been changed so that multiple indices can be installed at once to attain better performance. The new syntax is not backwards-compatible and now looks like addIndex predicate-name-1/permutation-1 predicate-name-2/permutation-2 ....

      As a result of this change, commands such as

      addIndex -P sales -O 3_2_1_0
      addIndex -P returns -O 1_2_0
      addIndex -P product_color -O 1_0

      need to be adapted to

      addIndex sales/3_2_1_0
      addIndex returns/1_2_0
      addIndex product_color/1_0

      and, if possible, be combined into a single command for performance considerations. For example

      addIndex sales/3_2_1_0 returns/1_2_0 product_color/1_0

Release Information

  • Server requirements
    • Operating System: 64-bit Linux; Apple macOS 10.10+ is supported for local development
    • Java Runtime Environment 11
    • Python 3.5 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.