Skip to content

[C#] Module bindings for Typed Query Builder#4159

Merged
rekhoff merged 27 commits intomasterfrom
rekhoff/csharp-module-query-builder
Feb 11, 2026
Merged

[C#] Module bindings for Typed Query Builder#4159
rekhoff merged 27 commits intomasterfrom
rekhoff/csharp-module-query-builder

Conversation

@rekhoff
Copy link
Contributor

@rekhoff rekhoff commented Jan 29, 2026

Description of Changes

This is the implementation of the Typed Query Builder for C# modules outlined in #3750.
This requires the changes from #4146 to be in place before it can properly function.

This aligns the C# typed query builder SQL formatter with the Rust implementation:

  • Supports And/Or with same grouping styles as Rust.
  • All comparison operators (Eq/Neq/Lt/…) wrap expressions in parentheses so chained predicates produce byte-for-byte identical SQL.

API and ABI breaking changes

Not breaking. Existing modules keep producing the same SQL semantics; only redundant parentheses were added to match the Rust formatter.

Expected complexity level and risk

2 — localized string-format updates plus parity harness tweaks. Low functional risk; largest concern is ensuring every comparison path gained parentheses.

Testing

  • Tested against a local test harness validating output from these changes match current Rust behavior.

@rekhoff rekhoff self-assigned this Jan 29, 2026
@rekhoff rekhoff marked this pull request as ready for review January 29, 2026 04:27
Copy link
Collaborator

@joshua-spacetime joshua-spacetime left a comment

Choose a reason for hiding this comment

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

Is it possible to share the core query builder types between the sdk and module bindings? I also think we should have end-to-end tests similar to what we have for the client builder.

@rekhoff
Copy link
Contributor Author

rekhoff commented Feb 2, 2026

Is it possible to share the core query builder types between the sdk and module bindings? I also think we should have end-to-end tests similar to what we have for the client builder.

Requested changes made, merging both the common Module Bindings and Client SDK sides of Module Builder into the BSATN.Runtime portion of the code base.

@jdetter jdetter force-pushed the rekhoff/csharp-module-query-builder branch from a39ac22 to a6d7ba9 Compare February 6, 2026 15:43
@rekhoff rekhoff changed the base branch from rekhoff/add-views-returning-queries to master February 7, 2026 23:41
Signed-off-by: Ryan <r.ekhoff@clockworklabs.io>
Copy link
Collaborator

@joshua-spacetime joshua-spacetime left a comment

Choose a reason for hiding this comment

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

This looks good. My only request would be to add an end-to-end test that subscribes to a query builder view and verify we get an initial result and that the client gets updates when the view is updated. Otherwise it's ready to merge.

@rekhoff rekhoff added this pull request to the merge queue Feb 11, 2026
Merged via the queue into master with commit 759f522 Feb 11, 2026
32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants