Skip to main content

ResolutionRung

Namespace: Meshmakers.Octo.Runtime.Contracts.StreamData

One candidate archive in a series' resolution family — either the base archive (raw or time-range) or one of its rollups. The SeriesResolutionPlanner reasons purely over a list of these to pick the archive to query. See concept-resolution-aware-series-queries.md §4.

public record ResolutionRung : IEquatable<ResolutionRung>

Inheritance Object → ResolutionRung
Implements IEquatable<ResolutionRung>

Properties​

ArchiveRtId​

The archive entity id to query if this rung is chosen.

public OctoObjectId ArchiveRtId { get; set; }

Property Value​

OctoObjectId

GrainMs​

The rung's native bucket width in milliseconds — a rollup's BucketSize, or a time-range base archive's Period. null when the grain is unknown (a raw archive, or a time-range archive whose advisory Period is unset); such a rung is treated as "finest, unknown resolution".

public Nullable<long> GrainMs { get; set; }

Property Value​

Nullable<Int64>

Alignment​

Bucket alignment. BucketAlignment.FixedSize means ResolutionRung.GrainMs fully determines the width; calendar variants derive an effective width from the wall clock (and the reference time zone) instead.

public BucketAlignment Alignment { get; set; }

Property Value​

BucketAlignment

StoredFunctionsForSeries​

All aggregation functions this rung stores for the requested series' column — a rollup may carry several aggregations on the same source path (AB#4188), e.g. AVG and MAX side by side. Empty for a base archive (which stores no aggregation) or when the rung does not aggregate the requested path. A rollup rung is a valid reduction source only when this contains the caller's requested aggregation.

public IReadOnlyCollection<CkRollupFunction> StoredFunctionsForSeries { get; set; }

Property Value​

IReadOnlyCollection<CkRollupFunction>

IsBase​

True for the base archive (raw or time-range) the rollups are derived from; false for rollups. The base is never reduced by the resolver (decision O2-followup) — it is returned unreduced when no compatible rollup exists, or when its native data already fits the requested point count.

public bool IsBase { get; set; }

Property Value​

Boolean

ReferenceTimeZone​

IANA time-zone id used to align calendar buckets (day/month/year) to local wall-clock boundaries. null ⇒ UTC. Only consulted for calendar ResolutionRung.Alignment variants. (AB#4290 Phase 4 / decision O6.)

public string ReferenceTimeZone { get; set; }

Property Value​

String

AvailableFrom​

Measured earliest timestamp this rung actually holds data for (AB#5157) — ArchiveCoverage.AvailableFrom as probed from the storage layer. null when the rung has no data (no table, no rows) or coverage was not probed at all. The planner reads this field to drop rungs that cannot serve the requested start; when no rung in the family reports coverage the filter is inert and the pre-AB#5157 plan is returned unchanged.

public Nullable<DateTime> AvailableFrom { get; set; }

Property Value​

Nullable<DateTime>

AvailableTo​

Measured latest timestamp this rung holds data for (AB#5157) — ArchiveCoverage.AvailableTo. null under the same conditions as ResolutionRung.AvailableFrom. Carried for diagnostics and client display only; the planner deliberately does not consider the requested end, so a rung whose coverage ends before it stays eligible.

public Nullable<DateTime> AvailableTo { get; set; }

Property Value​

Nullable<DateTime>

Constructors​

ResolutionRung(OctoObjectId, Nullable<Int64>, BucketAlignment, IReadOnlyCollection<CkRollupFunction>, Boolean)​

One candidate archive in a series' resolution family — either the base archive (raw or time-range) or one of its rollups. The SeriesResolutionPlanner reasons purely over a list of these to pick the archive to query. See concept-resolution-aware-series-queries.md §4.

public ResolutionRung(OctoObjectId ArchiveRtId, Nullable<long> GrainMs, BucketAlignment Alignment, IReadOnlyCollection<CkRollupFunction> StoredFunctionsForSeries, bool IsBase)

Parameters​

ArchiveRtId OctoObjectId
The archive entity id to query if this rung is chosen.

GrainMs Nullable<Int64>
The rung's native bucket width in milliseconds — a rollup's BucketSize, or a time-range base archive's Period. null when the grain is unknown (a raw archive, or a time-range archive whose advisory Period is unset); such a rung is treated as "finest, unknown resolution".

Alignment BucketAlignment
Bucket alignment. BucketAlignment.FixedSize means ResolutionRung.GrainMs fully determines the width; calendar variants derive an effective width from the wall clock (and the reference time zone) instead.

StoredFunctionsForSeries IReadOnlyCollection<CkRollupFunction>
All aggregation functions this rung stores for the requested series' column — a rollup may carry several aggregations on the same source path (AB#4188), e.g. AVG and MAX side by side. Empty for a base archive (which stores no aggregation) or when the rung does not aggregate the requested path. A rollup rung is a valid reduction source only when this contains the caller's requested aggregation.

IsBase Boolean
True for the base archive (raw or time-range) the rollups are derived from; false for rollups. The base is never reduced by the resolver (decision O2-followup) — it is returned unreduced when no compatible rollup exists, or when its native data already fits the requested point count.