Release 8th August 2025

Change Control note Hiperspace --version 2.4.4 HiLang --version 2.4.4

Overview

Partition elimination is an advanced feature in SQL relational databases, that skip access to a partition view when the optimizer can determine that it will not return any values. This release adds the feature to Hiperspace views to skip SetSpace access that is not needed, most commonly for Graph queries

SQL Views

/* for the view */
CREATE VIEW costs AS
SELECT cost, 'Sales' as area FROM sales_costs UNION
SELECT cost, 'Operations' as area FROM ops_costs UNION
SELECT cost, 'Assets' as area FROM asset_costs ;

/* queried as */
SELECT cost FROM costs WHERE area = 'Sales';

/* will skip the query ops_costs and asset_costs since it will return no rows */

Hiperspace Views

Hiperspace views provide the same function, but rather than define a view separately, the view definition is part element definition, with the view being created as a union of all the elements { entity, segment, aspect, view } that provide the view.

segment Togaf.Has.Requirement : Togaf.Base 
    = Node        ( SKey = SKey, Name = Name, TypeName = "AF-Requirement"),
      Edges       (From = owner, To = this, Name = Name, FromTypeName = "AF-Has-Requirement", ToTypeName = "AF-Requirement-For") ;

defines a segment named Togaf.Has.Requirement that can be viewed as a Node with the TypeName "AF-Requirement". Within the TOGAF sample there are 201 elements that can be viewed as a Node, all of which are included in the SubSpace view Nodes.

Prior to this release a LINQ query from node in Nodes where node.TypeName == "AF-Requirement"; would scan all 201 SetSpace before filtering to include only requirements, but will now skip the scan of the other 200 types. This is especially useful for graph data-explorer browsers that will typically search for a single source node type

This is implemented with the SetSpace<> function public virtual bool IsSkippable(object template) => false; that is overridden in HiLang generated code, and used by all View Sets

RefSet<>

The RefSet<> collection of references to segments or other entities (via index) has been updated to include AddAsync to simplify the addition of a segment reference when used from a web-assembly client.

Release 8th August 2025 Release 28th July 2025 Release 10th July 2025
Copyright © Cepheis 2024