Skip to content

Make Options filterable on clients, and add SDK tests.#5448

Open
gefjon wants to merge 19 commits into
masterfrom
phoebe/sdk-test-filterable-option
Open

Make Options filterable on clients, and add SDK tests.#5448
gefjon wants to merge 19 commits into
masterfrom
phoebe/sdk-test-filterable-option

Conversation

@gefjon

@gefjon gefjon commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Description of Changes

Based on #4949 , "Support Option values in index filters."
Adds SDK test based testing of the new filterable types. I have been unable to figure out how to set that PR's branch as the base. Review specific commits starting from f234818 .

This testing revealed that the newly filterable types were erroneously not filterable in clients, due to a missed update in crates/codegen/src/util.rs is_type_filterable. In addition, Uuid had also not been made filterable in clients for the same reason. This PR updates that function to make both appropriate Options and Uuid filterable.

In this commit, I have modified only the Rust modules/sdk-test . The other languages' versions of those modules will also require updates. Also, only the Rust client SDK is tested by this PR. We should ideally also test the other client SDKs.

API and ABI breaking changes

Expands the set of filterable types.

Expected complexity level and risk

4: liable to break SDKs where filter/find operations don't properly support (those languages' reprs of) Option<T>.

Testing

  • Rust client SDK tests added in this PR that codegen and client cache filtering behave appropriately.
  • Test other SDKs, either manually or adding automated tests:
    • C#
    • Unreal
    • TypeScript

Mr-Dust0 and others added 18 commits May 13, 2026 06:36
…le-option

# Conflicts:
#	crates/lib/src/filterable_value.rs
Based on #4949 ,
"Support Option values in index filters."
Adds SDK test based testing of the new filterable types.

This testing revealed that the newly filterable types were erroneously not filterable in clients,
due to a missed update in crates/codegen/src/util.rs `is_type_filterable`.
In addition, `Uuid` had also not been made filterable in clients for the same reason.
This PR updates that function to make both appropriate `Option`s and `Uuid` filterable.

In this commit, I have modified only the Rust modules/sdk-test .
The other languages' versions of those modules will also require updates.
Also, only the Rust client SDK is tested by this PR.
We should ideally also test the other client SDKs.

@JasonAtClockwork JasonAtClockwork left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM and CI Test Suite should be fixed with my companion PR

…t` (#5461)

# Description of Changes
- Is acompanion to
#5448 expanding the
tests to TS/C#/C++
- Updated `sdk-test-ts`, `sdk-test-cs`, and `sdk-test-cpp` to match Rust
version; a couple changes were necessary to allow the codegen to work:
- Updated C++ table constraint helpers to support `std::optional<T>` as
filterable
- Updated C# filterability checks to handle nullable values for
`IsEquatable()`
- Updated C# regression tests to cover nullable lookups, this uncovered
more changes required:
- Updated C# codegen to use the new nullable index base classes instead
of removing constraints that `Nullable<T>` doesn't support
- Updated C++/Unreal generated bindings to support the new `Option<T>`
index tables and reducers used by the SDK tests

# API and ABI breaking changes
- Adds generated C# nullable index accessor support for indexes that
were already intended to be filterable

# Expected complexity level and risk
3 - Mostly test coverage and generated binding updates, with small
changes to allow this properly in C++ and C#

# Testing
- [x] Ran full `sdk-test` suite
- [x] Ran the C# regression tests
- [x] Manual testing of C# nullable index throwaway e2e test
- [x] Ran full Unreal SDK tests
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.

3 participants