Skip to content

DotRocks 1.4.0

Choose a tag to compare

@kidoz kidoz released this 31 Jul 21:38
· 22 commits to main since this release

A minor release of DotRocks — a native .NET driver, Entity Framework Core provider, and Roslyn analyzer suite built specifically for StarRocks. It implements its own managed StarRocks client protocol and takes no runtime dependency on any MySQL driver. This release introduces the experimental DotRocks.FlightSql package: a separate Arrow Flight SQL transport that streams native Arrow record batches for analytical reads, with async ADO.NET types, EF Core integration, and an explicit, opt-in MySQL-protocol fallback.

Added

  • An experimental DotRocks.FlightSql package provides a separate Arrow Flight SQL transport. It streams native Apache.Arrow.RecordBatch results, executes standard Flight SQL statement updates, exposes async ADO.NET reader/command/transaction types, and can drive the existing EF Core provider through its DbConnection overload. Named parameters reuse DotRocks's safe SQL binder. Optional MySQL-protocol fallback is explicit: reads retry only safe discovery failures, while writes are routed before Flight so an ambiguous write is never replayed. Endpoint hosts remain allowlisted before credentials or tickets are forwarded. In-process protocol coverage, live StarRocks 3.5.5/4.0.7 Flight-read and fallback-write integration coverage, and comparative transport benchmarks are included. The standard Flight update path is retained for compatible endpoints; StarRocks 4.0.7 returns UNIMPLEMENTED for statement DoPut in live validation.

Compatibility

  • .NET 10 / C# 14. The existing DotRocks.Data, DotRocks.EntityFrameworkCore, and analyzer packages are unchanged — DotRocks.FlightSql is a new, optional package and the only one that depends on Apache.Arrow/Grpc.Net.Client; the core driver remains dependency-free. The Flight transport is asynchronous-only (synchronous ADO.NET members fail explicitly), plaintext grpc:// endpoints require AllowInsecureTransport, and MySQL-protocol fallback requires both an explicit fallback mode and a fallback connection string. Treat the package surface as experimental: its public API may change in a minor release while it stabilizes.

Full Changelog: v1.3.5...v1.4.0