[25.5.2] - 2025-12-26

Features

- Rework SQL execution protocol for DML queries to reduce data transfer.
- Introduce non-blocking SQL execution to prevent fiber starvation.

Fixes

- Fixed that governor would hang indefinitely if an Offline replicaset had
  target_master_name != current_master_name.
- Fixed that instance would hang indefinitely when trying to join the cluster if
  the cluster becomes too big.
  NOTE: The fix requires modifying the proc_raft_join RPC response format
  which technically breaks compatibility with previous versions of picodata.
  However picodata explicitly doesn't support heterogeneous joins (when version
  of joining instances mismatches version of cluster), so this shouldn't be a
  problem for anybody. NOTE also that this doesn't affect restarting instances
  which already joined the cluster.
- Fixed a crash when SQL request arrives before instance is properly initialized
- Fixed that instances would be made Offline immediately after a raft entry is
  applied if there weren't any entries applied for a long time before that
- Fixed that instances would randomly fail with ER_READONLY during bootstrap
- Improve upgrade flow for creating Lua stored functions (exported to SQL).
- Fixed that governor would send redundant proc_sharding RPCs which would make
  it impossible to deploy huge clusters. Now RPCs from governor are split into
  batches of configurable size (default 200, ALTER SYSTEM parameter `governor_rpc_batch_size`).
- Node construction is now deferred until actually needed, avoiding unnecessary
  work for cached queries on any instance execution
- Fixed a memory leak in SQL API of plugin SDK