From a26904c61511cf99414a6318338b4cdc897e44c6 Mon Sep 17 00:00:00 2001 From: Iliyan Bratanov <67582367+IlianBratanov@users.noreply.github.com> Date: Wed, 18 Feb 2026 17:35:38 +0200 Subject: [PATCH 1/4] Add fact only option and description in row security (#42) * added fact only option and description * fix: pr comment --------- Co-authored-by: Svetoslav Petkov --- sml-reference/row-security.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sml-reference/row-security.md b/sml-reference/row-security.md index 1d93275..0e5adb0 100644 --- a/sml-reference/row-security.md +++ b/sml-reference/row-security.md @@ -146,6 +146,16 @@ Supported values: multi-dimension-only queries do have security applied because they are joined using a synthetic measure from the fact table that relates them. +- `fact-only`: Security is applied when a query selects a Measure or a + Calculated Measure derived from the connected Fact dataset. + Security is *not* applied when a dim-only query uses the secured Fact dataset. + Security is *not* applied when a dim-only query selects a + degenerate dimension derived from the secured Fact dataset. + If a Model contains a Security dimension used inside of a + Dimension and it’s scope is set to “Fact Only”. + > ### Then the model fails to publish with the error message: + > - Dimension “Customer” has an unsupported Security dimension configuration. + > - Security Dimension “mySecDim” has scope “Fact Only” but is not connected to a fact dataset. - `all`: The security constraint is applied to all queries, unless there is no path to the security dimension. This is the case with two separate fact tables, each with their own unrelated dimensions. From 353ab6ac2726b79f82ded14603c63010f93f82ef Mon Sep 17 00:00:00 2001 From: svetoslavpetkov Date: Wed, 18 Feb 2026 17:37:06 +0200 Subject: [PATCH 2/4] set SML version --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4c4f7a1..f632727 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,15 @@ ![logo](images/sml-logo-large.png) -# SML version 1.5 +# SML version 1.6 -This is documentation for SML spec version `1.5`. For earlier versions browse the repository tags. Examples: +This is documentation for SML spec version `1.6`. For earlier versions browse the repository tags. Examples: - [SML version 1.0](https://github.com/semanticdatalayer/SML/tree/v1.0) - [SML version 1.1](https://github.com/semanticdatalayer/SML/tree/v1.1) - [SML version 1.2](https://github.com/semanticdatalayer/SML/tree/v1.2) - [SML version 1.3](https://github.com/semanticdatalayer/SML/tree/v1.3) - [SML version 1.4](https://github.com/semanticdatalayer/SML/tree/v1.4) +- [SML version 1.5](https://github.com/semanticdatalayer/SML/tree/v1.5) # What is SML? From 21a7a2a10de49edc7e52aa5d818259ff8a667c5e Mon Sep 17 00:00:00 2001 From: Stanimir Kolev <92518977+stanimir-atscale@users.noreply.github.com> Date: Wed, 18 Feb 2026 17:41:39 +0200 Subject: [PATCH 3/4] feat: added description prop in catalog (#45) * feat: added description prop in catalog * fix: add support values and versioning --------- Co-authored-by: Svetoslav Petkov --- sml-reference/catalog.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/sml-reference/catalog.md b/sml-reference/catalog.md index e3390f6..71f9f32 100644 --- a/sml-reference/catalog.md +++ b/sml-reference/catalog.md @@ -32,6 +32,7 @@ classDiagram Boolean build_speculative_aggs Object dataset_properties Array~String hidden_models + String description } ``` @@ -139,3 +140,15 @@ values you want to set for it at the repository level. For example: **Note:** Datasets are typically defined at the repository level, in `catalog.yml`; however, datasets used by a specific model (typically fact datasets) can be defined within the model itself. + +## description + +- **Type:** string +- **Required:** N +- **Added in** v1.6 + +A description of the catalog. + +Supported values: + +- String (optional) \ No newline at end of file From 20ee0e1e0ad9e73db3a06d5b5de118f613dc88f5 Mon Sep 17 00:00:00 2001 From: Stanislav Trifonov <61970996+stanislavtrifonov88@users.noreply.github.com> Date: Wed, 18 Feb 2026 18:06:54 +0200 Subject: [PATCH 4/4] [ATSCALE-44228] row security property to UDA (#44) * add: row security property to AttributeReference class and update requirements * fix: correct formatting of row_security property description in model documentation * fix: improve wording for row_security property description in model documentation --------- Co-authored-by: stanislavtrifonov88 Co-authored-by: Svetoslav Petkov --- sml-reference/model.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sml-reference/model.md b/sml-reference/model.md index 8c82cb2..f5375c0 100644 --- a/sml-reference/model.md +++ b/sml-reference/model.md @@ -248,6 +248,7 @@ namespace Models{ class AttributeReference{ String name String dimension + String row_security String partition String distribution Array~String~ relationships_path @@ -646,15 +647,18 @@ definition. Supported properties: -- `name`: String, required. The name of the dimension attribute to +- `name`: String, required if `row_security` is undefined. The name of the dimension attribute to include. These values are used to group the summarized metric data in the resulting aggregate table. Note that user-defined aggregate definitions are fixed: they do not include every level of a hierarchy unless they are explicitly defined. -- `dimension`: String, required. The dimension to which the attribute +- `dimension`: String, required if `row_security` is undefined. The dimension to which the attribute defined by `name` belongs. +- `row_security`: String, required if `dimension` and `name` are + undefined. Allows row security to be included in a user defined aggregate. + - `partition`: String, optional. Adds a partition to the aggregate, and determines whether it should be defined on the key column, name column, or both. Supported values: `name`, `key`, `name+key`