github readysettech/readyset stable-260827

4 hours ago

Release Notes

Readyset is currently released as a docker container and Linux distro binary packages. For installation with docker, see the Install with Docker documentation. Available Linux distribution binary packages for x86_64/amd64 and arm64/aarch64 include deb package for Ubuntu 22.04, Debian 12 and later, and rpm packages for Amazon Linux 2023 and RedHat 9. See package installation instructions.

What's New

  • 8b5429f: Removed a small race window in shallow-cache coalescing that allowed misses in rapid succession to bypass the mechanism and query the upstream without waiting. A sudden burst of queries that would all miss now properly coalesces into a single upstream query.
  • 218d7dc: Replication errors now name the failing column, identify the offending row by its primary key, and include the underlying cause instead of just a column index.
  • 7064267: PostgreSQL caches can now project ROW constructors, returning them as record values in both text and binary wire formats.
  • f6d3faf: Fixed jsonb_set and jsonb_insert to accept a text-literal path argument, such as '{k}'.
  • 20403b5: Fixed a panic on WHERE clauses of the form NOT ((NOT a) AND <non-negatable expression>).
  • 7c2cb9f: Fixed an HY000 error when a MySQL query returned a date or time value through a text-typed result column, such as IFNULL(datetime_col, text_literal).
  • 886c6fd: Added ACL capability: with authentication enabled, shallow-cache reads now enforce the connecting user's upstream authorization, so a user who lacks access to a table is no longer served its cached rows.
  • ce2355c: Fixed the session collation for proxied queries to follow the collation advertised by the client in its connection handshake, matching a direct MySQL connection.
  • ff3c59a: Fixed cached results for sessions using the utf8mb3 character set to convert supplementary characters to ?, matching MySQL.
  • 835d153: Users can now connect to the readyset schema (USE readyset on MySQL or SET search_path = readyset on PostgreSQL) to inspect and manage Readyset even when the upstream database is down.
  • aa20080: Fixed PostgreSQL's ->>, #>>, and json_extract_path_text operators from returning extracted values with their JSON quoting intact. A stored string now returns as value rather than "value", and a JSON null now returns as SQL NULL rather than the text null.
  • d51123a: Fixed some text casting and coercion under PostgreSQL to follow PostgreSQL's own input functions, so values are parsed or rejected as they are upstream. Casts to boolean and the elements of an array are affected.
  • bad7376: Fixed the utf8mb4_general_ci, utf8mb4_unicode_ci, and utf8mb3_unicode_ci collations so accented and unaccented equivalents match in point lookups and GROUP BY queries as they do in MySQL. A resnapshot is necessary for deep caching.
  • 8279fe8: Fixed LIKE with case-insensitive collations to match upstream MySQL.
  • 456d93c: Fixed dropped client connections when the client's handshake collation is not supported by the upstream, such as when MySQL 8.x clients connect through Readyset to a MySQL 5.7 server. Readyset now falls back to a collation supported by the upstream.
  • d0c67a2: Reduced the CPU overhead of query logging by batching event processing and using a cheaper wakeup mechanism for the query logger thread.
  • a7ce9c3: Reduced adapter CPU usage for shallow-cached queries by computing each query's ID once per request instead of on every status-cache access.
  • b2fdb18: Improved MySQL response-write performance under concurrency by fixing write-buffer reuse to select correctly sized buffers and removing a redundant sort on every flush.
  • 5bb09f2: Improved adapter throughput under high concurrency by removing a per-query status-cache lock acquisition for queries served from the shallow cache.
  • 1c927fa: Added --runtime-shards to the adapter, which spreads client connections across additional runtimes so connection readiness no longer funnels through a single I/O thread. This increases read throughput for workloads with many concurrent connections. Size the added runtimes with --shard-worker-threads. The default of 0 preserves the previous single-runtime behavior.
  • 2f2ee89: Reduced the per-query cost of building reader lookup keys and changed a possible panic on a missing key-column type into an error.
  • dcae690: Reduced per-query tracing overhead in the adapter by no longer attaching the client address to every log record emitted while serving a connection. Log sites where the peer address matters still include it.
  • 57ae178: Reduced the CPU spent hashing on the read path by switching per-query view and reader lookups to a faster hash function.
  • d57bffc: Fixed casting to an array type written as t ARRAY under PostgreSQL, which was previously treated as a cast to t. This spelling now also parses wherever a type is written, not only after CAST(... AS ...).
  • ff51577: Readyset now supports the IS [NOT] DISTINCT FROM binary operators.

Don't miss a new readyset release

NewReleases is sending notifications on new releases.