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.