Skip to content

v0.13.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 08:20
· 7 commits to main since this release
1e8b18e

Added

  • tx deploy checks the deployed model after it lands: it re-reads the target and reports every
    object the server holds in an error, incomplete, or unprocessed state, in the text output and
    as validation in the JSON result. Objects in an error state (a measure whose DAX does not
    resolve, a broken RLS filter) fail the deploy with exit code 1 and
    TOMIX_DEPLOY_VALIDATION_FAILED, even though the model is deployed; incomplete objects warn
    (TOMIX_DEPLOY_VALIDATION_WARNINGS); unprocessed ones point at tx refresh. A check that
    cannot run warns with TOMIX_DEPLOY_VALIDATION_UNAVAILABLE. --ci vsts|github now prints
    annotations for post-deploy errors and warnings.
  • tx deploy --rollback-on-error checks the deployed model before the deploy is kept. On an
    existing model the deploy runs inside a server transaction and rolls back when an object is in
    an error state, leaving the target's definition and data unchanged. A new model is deleted
    again. A rolled-back deploy fails with TOMIX_DEPLOY_ROLLED_BACK and "status": "rolled-back".
    See ADR 0005.
  • tx format style options (#229): --separators us|eu shows DAX with ; list and ,
    decimal separators (display only; models always store the US form, and an explicit
    --separators eu with --save, --save-to, --stage or --revert fails with the new
    TOMIX_FORMAT_SEPARATORS_DISPLAY_ONLY), --function-spacing space|none drops the space
    before a DAX call's parenthesis, and --short undoes --long. Each has a config key
    (format.separators, format.functionSpacing, format.lines) that the flag overrides.
    Golden files pin the printed output for each style.
  • tx bpa run --vpax <file.vpax> reads VertiPaq statistics from a file exported with
    tx vertipaq --export, so statistics rules run on a model file, a read-only connection, or in
    CI without annotating the model. The statistics apply in memory only. A file that matches no
    table fails the run (TOMIX_BPA_VPAX_MISMATCH); tables missing from the model warn
    (TOMIX_BPA_VPAX_PARTIAL) (#234).
  • New default-off vertipaq ruleset preset with every bundled rule that reads statistics,
    including two new rules: LARGE_SHARE_OF_MODEL_SIZE and
    UNUSED_HIDDEN_HIGH_CARDINALITY_COLUMNS. Rules can read model-level annotations through
    Model.GetAnnotation(...) (#234).

Changed

  • FIX_REFERENTIAL_INTEGRITY_VIOLATIONS, AVOID_BI-DIRECTIONAL_RELATIONSHIPS_AGAINST_HIGH-CARDINALITY_COLUMNS
    and LARGE_TABLES_SHOULD_BE_PARTITIONED move to the vertipaq preset (category VertiPaq),
    out of standard and full. bpa run without --ruleset and the deploy BPA gate add the
    vertipaq preset when the model has statistics (Vertipaq_* annotations or --vpax), so an
    unannotated model no longer lists them as "Not checked". A named --ruleset is used as given:
    --ruleset standard now skips them (#234).

Fixed

  • tx test --tolerance (and tx: tolerance=) now applies to measures whose data type is Variant.
    Their results read back as object columns, which compared exactly, so floating-point noise
    failed the test whatever the tolerance. Cells compare within the tolerance when both sides are
    numbers; text, dates and booleans still compare exactly. --ignore-row-order sorts these
    columns by value after the dimension columns, in a fixed BLANK, number, text order.

What's Changed

  • feat(bpa): read VertiPaq statistics from .vpax and add a vertipaq preset by @bgarcevic in #464
  • feat(format): style options for separators, function spacing, and line length by @bgarcevic in #465
  • feat(deploy): post-deploy validation reporting in result and JSON by @bgarcevic in #467
  • build: Bump the nuget-minor-patch group with 7 updates by @dependabot[bot] in #468
  • feat(deploy): --rollback-on-error validates inside a transaction and rolls back by @bgarcevic in #469
  • fix(test): apply tolerance to Variant (object) measure columns by @bgarcevic in #471
  • chore(release): prepare 0.13.0 by @github-actions[bot] in #466

Full Changelog: v0.12.1...v0.13.0