Skip to content

8.10 Time Series changes - #528

Merged
mgravell merged 14 commits into
masterfrom
marc/8_10
Jul 28, 2026
Merged

8.10 Time Series changes#528
mgravell merged 14 commits into
masterfrom
marc/8_10

Conversation

@mgravell

@mgravell mgravell commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

in this PR:

  • TS.[REV]RANGE ... EXCLUDEEMPTY
    • moves to a [Flags] enum to subsume the multiple bool args
  • TS.QUERYLABELS
    • opting for QueryLabelNames[Async] and QueryLabelValues[Async]
  • TS.N[REV]RANGE
    • common core with range
    • prefers TsAggregations over TsAggregation; can describe single-aggregations just fine
    • fixes pre-existing API issue where (long,long) was used and (double,double) would have been preferable (non-integer values are normal and expected); old API retained, marked [Obsolete], hidden, and de-prioritized
  • TS.READ
    • one-shot and enumerable APIs, similar to aggregate
  • fix pre-existing TS.* routing (RedisKey) errors, and ensure that the CI runs on standalone and cluster, at least for cluster 8.10+ (it is quirky before this!) - this also involved fixing some test expectations around ordering on non-key-routed commands
  • fix CI version detection to resolve ambiguity around 2-part vs 3-part version numbers; at current, a test marked to skip below 8.10.0 would skip if the env is 8.10 and run if the env is 8.10.0

Note

Medium Risk
Large public API surface and overload/binary-compat layering; behavior changes on filterByValue and WITHLABELS could affect existing callers, though obsolete paths are preserved.

Overview
Adds Redis Time Series 8.10 client support: new commands and API refinements, with backward-compatible overloads and stronger test/CI coverage on cluster.

New commands: QueryLabelNames / QueryLabelValues (TS.QUERYLABELS), pivot queries NRange / NRevRange (TS.NRANGE / TS.NREVRANGE) returning TimeSeriesPivotRow, and non-blocking Read / ReadEnumerable (and async equivalents) for TS.READ—blocking mode is intentionally not exposed.

Range API: TimeSeriesRangeFlags replaces scattered bool parameters on MRange / MRevRange (including EXCLUDEEMPTY). filterByValue is now (double, double) on range APIs; older (long, long) overloads remain for binary compat but are obsolete, hidden, and lower priority. AddWithLabels only treats withLabels == true as conflicting with selectLabels.

Wire/protocol: EXCLUDEEMPTY is emitted before FILTER on multi-range; BuildNRangeArgs shares aggregation validation with single-key range. Keys are cast to RedisKey where routing was wrong.

Tests/CI: Cluster runs for more TS tests (hash-tagged keys, skips pre-8 / pre-8.10 for fan-out commands), order-insensitive assertions for keyless filter commands, version skip fix for 8.10 vs 8.10.0, and a compile-time guard so integer tuples bind to (double, double) not obsolete (long, long).

Reviewed by Cursor Bugbot for commit 2828c99. Bugbot is set up for automated code reviews on this repo. Configure here.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d8f4c460a2

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread tests/NRedisStack.Tests/TimeSeries/TestAPI/TestMRange.cs

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a5bd49fe67

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/NRedisStack/TimeSeries/TimeSeriesAux.cs
Comment thread src/NRedisStack/TimeSeries/TimeSeriesAux.cs Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e0783962ac

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/NRedisStack/TimeSeries/TimeSeriesAux.cs
Comment thread src/NRedisStack/TimeSeries/TimeSeriesCommandsBuilder.cs Outdated
Comment thread src/NRedisStack/TimeSeries/ITimeSeriesCommands.cs Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 12d36feded

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/NRedisStack/TimeSeries/TimeSeriesCommandsBuilder.cs
Comment thread src/NRedisStack/TimeSeries/ITimeSeriesCommands.cs Outdated
mgravell added 3 commits July 24, 2026 15:07
# Conflicts:
#	Directory.Build.props
#	src/NRedisStack/Experiments.cs
#	src/NRedisStack/PublicAPI/PublicAPI.Unshipped.txt

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7480433a62

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/NRedisStack/TimeSeries/ITimeSeriesCommands.cs
Comment thread src/NRedisStack/TimeSeries/TimeSeriesAux.cs Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ed2a14759a

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/NRedisStack/TimeSeries/TimeSeriesCommands.cs

@atakavci atakavci left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@mgravell
mgravell merged commit f639686 into master Jul 28, 2026
23 checks passed
@mgravell
mgravell deleted the marc/8_10 branch July 28, 2026 12:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants