LogicBlox 4.30


LogicBlox 4.30.3

Release Date: March 18, 2021

Corrected Issues

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

  • Tools, Database, and Services
    • Fixed an error when sending email via STMP. The problem was caused by a Java library missing in the class path.

    • Fixed a bug in the LogiQL compiler's derivation type inference that could cause an exception when refmodes or constructors were improperly declared.

Known Issues

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

LogicBlox 4.30.2

Release Date: January 25, 2021

Corrected Issues

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

  • Tools, Database, and Services
    • Fix bug in linear recursion when non-write-optimized predicates are used as first/next predicates or group-by predicates in the rule body.

Known Issues

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

LogicBlox 4.30.1

Release Date: December 15, 2020

Corrected Issues

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

  • Modeler IDE
    • The macOS-version of the Modeler IDE that ships with the LogicBlox 4.30.0 distribution crashes on startup. This release contains a working macOS-version of the app.

Known Issues

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

LogicBlox 4.30.0

Release Date: December 14, 2020

What's New

LogicBlox 4.30.0 introduces the following enhancements:

  • Modeler
    • The modeler_config library now ships with standardized logic that allows developers to install CubiQL rules and inverses.

      Example 1. 

      The following example shows how to install CubiQL rules and inverses for the Net Sales measure found in an example planning application.

      // Formula
      ^modeler_config:metamodel:cubiql:metric_expr["NetSales"] = """
        Sales - Returns
      """.
      
      // Inverse groups
      +modeler_config:metamodel:cubiql:hasInverseGroup["Netsales", 0] = sales,
      +modeler_config:metamodel:cubiql:inverseGroup(sales) {
        +modeler_config:metamodel:cubiql:hasInverse["Sales", """
          fun [inter] in
            (Returns[inter] + Input)
        """] = _
      }.
      
      +modeler_config:metamodel:cubiql:hasInverseGroup["NetSales", 1] = returns,
      +modeler_config:metamodel:cubiql:inverseGroup(returns) {
        +modeler_config:metamodel:cubiql:hasInverse["Returns", """
          fun [inter] in
            (Sales[inter] - Input)
        """] = _
      }.
      

      When using the Modeler IDE, please note that these CubiQL rules and inverses can be configured within the configuration tool and do not require the direct use of the modeler_config library.

    • Modeler no longer automatically removes fields from the Measures axis when the special "Measures" field is removed from the Rows, Columns, or Slices axis.

    • The icons used in the grid of Modeler's sheet views have been redesigned to follow Infor's design guidelines.

    • The toolbar of Modeler's sheet view has been reorganized and some icons have been redesigned to improve usability.

  • Modeler IDE
    • The "Commit Groups" and "Refresh Groups" tab of the "Templates" view now has auto-save. Additionally, it has become easier to navigate back to the list of commit/refresh groups using the new option "Back" at the bottom of the view.

    • Tables used within views of the Modeler IDE now have a sticky header. This improvement makes sure the table header does not disappear when the user is scrolling down.

    • We have improved the usability of multi-select dropdowns in the Modeler IDE. The dropdown list is now divided into two areas, the list with selected items, and the list with unselected items. The list of selected items can be cleared using the "Clear" option.

      The list of selected and unselected items can be filtered by typing a search term in the dropdown field. The (partial) match of the search term is highlighted in the list of results. Users can clear their search term quickly using the X icon.

  • Tools, Database, and Services
    • If a predicate has no explicit declaration and is instead declared by an IDB rule, annotations on the declaring rule will now be copied onto the predicate. For example, the rule #inlined foo(x) <- bar(x). will also annotate the predicate foo with the #inlined annotation. Note that if there is more than one rule deriving into the given predicate, the annotations will not be copied and the AMBIG_ANNOTATION warning will be reported since it is ambiguous as to which rule the annotations should be drawn from.

    • Added printing of subdomain task result count in perf_detail logging, so that we can more easily obtain such counts in deployed application environments.

    • This release uses nixpkgs version 19.03 (previous releases were built using version 17.03).

  • Measure service
    • A new tool has been created for generating optimized warmup requests from collections of measure service requests. Usage is lb measure-service warmup --uri URI --out-file output-JSON-file input-directories-list. This tool will "warm up" the measure service, caching queries that are guaranteed to appear in client views to achieve low query latency.

      To date, different projects have used various ad hoc methods to perform their warmups, which in many cases caused the measure service to perform significant unnecessary work. The new warmup tool can process collections of requests and produce a minimized request that will warm up the measure service identically, but considerably faster. In one development test case, the optimized warmups took a couple of minutes compared with hours using an old adhoc method.

      One way to use the warmup tool is to use the measure service recording feature to capture a end-user session and produce warmups from the recordings.

      Note that you should use the --async option to the warmup tool if processing measure services requests generated by the asynchronous measure service (which is the default when using the measure request recording tool).

      The optimized warmup needs only be regenerated if the application model changes non-trivially or if queries need to be removed. The warmup can be efficiently incrementally extended with new queries.

    • If annotate_predicates is set to true in lb-measure-service.config, the measure service will now annotate those predicates corresponding to the compiled form of a CubiQL expression with the CubiQL in the source_cubiql annotation. This annotation can then be retrieved via ConnectBlox or lb predinfo. This is not enabled by default as it slows down request processing.

    • The CubiQL REPL has been improved to make debugging the binding of metrics to LogiQL predicates easier. Improvements include:

      • The :clear-bindings command has been renamed to :clear-metric-bindings to clarify that it does not apply to variable bindings.

      • The :list-metric-bindings command will list which metrics are currently bound to LogiQL predicates, as the bindings are created only as they are needed.

      • The :print-metric-binding command will print the CubiQL, if any, defining the given metric. Additionally, it will print the normalized form of this CubiQL. If the metric has been bound to a LogiQL predicate and annotate_predicates has been set to true in lb-measure-service.config, it will print the CubiQL to which the metric's predicate is bound.

    • The int128 version of the CubiQL mod operator was removed as it does not exist in the LogiQL runtime.

    • Improved the measure service recording feature to add an additional random suffix to distinguish requests sent within a millisecond of each other.

    • Some additional CubiQL expressions will be now inlined rather than materialized.

Corrected Issues

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

  • Modeler
    • Fixed a rendering issue that could occur when selecting an icon in Modeler's sheet toolbar.

    • The "Measures" axis configuration panel of Modeler's sheet views no longer grows in size when this axis contains more fields than can be displayed in the panel. This fix makes sure the panel only grows in size when the user clicks on the "Expand" icon.

    • The current workbook name wasn't displayed when the user hovered over the browser tab. This issue has been resolved.

  • Modeler IDE
    • Fixed a rendering issue that occurred when hovering over the pencil icon in the "Dimensions" view of the Modeler IDE.

    • Fixed a rendering issue related to the header within views when opening the right-hand side panel (e.g. when managing navigation items in the "Navigations" view).

    • Fixed a rendering issue where dropdown menus were displayed behind table headers in the "TDX" view.

    • We've introduced rendering and usability improvements related to scrolling behavior in the "Workflows" view. The left-hand side and right-hand side of the view now each has their own scrollbar.

    • Resolved a styling issue with "+ Add .. " buttons found in various views of the Modeler IDE. These buttons no longer have a gray background on Ubuntu machines.

    • Fixed drag and drop behavior in the "Fields Configuration" tab of the "Sheets" view. Fields Configuration now works as expected for all axes.

    • Resolved an issue in the "Dimensions Groups" view where checking a dimension did not always select all available levels within that dimension.

  • Tools, Database, and Services
    • Fixed a long-standing bug in the ConnectBlox RemoveBlock request (used by lb removeblock) that caused the list of block dependencies to contain many extraneous and unrelated blocks when the specified block could not be removed.

    • The ConnectBlox GetPredicateInfo request (used by lb predinfo) will now correctly report any annotations on the requested predicates.

    • Fixed a LogiQL compiler crash when using annotated aggregations and P2P rules.

    • Added rewrite support for a new class of default value rules that was not undergoing any rewrites before. Rules in this class were not rewritten, and as a result, the head predicates could be populated with default values and the join evaluation could be slow.

      Rules that the new rewrites apply to are sparse rules, rules where the key variables for each head atom do not all appear in a key position of some top-level body atom which is a materialized predicate and not a default-valued predicate.

    • Fixed min/max default value aggregate rules when key-ordering pragma is specified. Now such rules behave similarly to the total default value aggregate rules. Namely, if the rule is rewritten, the main sub-rule will contain pragma but the support sub-rules would not.

    • Fixed a bug that could cause an active transaction running in the master branch to fail with an internal error if a branch is deleted concurrently with the master branch transaction. With this fix, the active transaction in the master will complete before the branch is deleted. If there happens to be an active transaction running on the branch when the delete-branch request is processed, the branch transaction will be aborted. Any previously queued up transactions on the branch that get scheduled to run after the branch is deleted will fail to start.

    • Fixed possible issue when default-valued scalar predicates are used in linear recursion.

    • An unfriendly failure with a stack dump is replaced by a more graceful termination and an informative error message from some linear recursion errors.

Known Issues

The issues listed below are known to exist in the 4.30.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.30.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.30.0).

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

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.