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
ROWconstructors, returning them asrecordvalues in both text and binary wire formats. - f6d3faf: Fixed
jsonb_setandjsonb_insertto accept a text-literal path argument, such as'{k}'. - 20403b5: Fixed a panic on
WHEREclauses of the formNOT ((NOT a) AND <non-negatable expression>). - 7c2cb9f: Fixed an
HY000error when a MySQL query returned a date or time value through a text-typed result column, such asIFNULL(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
utf8mb3character set to convert supplementary characters to?, matching MySQL. - 835d153: Users can now connect to the
readysetschema (USE readyseton MySQL orSET search_path = readyseton PostgreSQL) to inspect and manage Readyset even when the upstream database is down. - aa20080: Fixed PostgreSQL's
->>,#>>, andjson_extract_path_textoperators from returning extracted values with their JSON quoting intact. A stored string now returns asvaluerather than"value", and a JSON null now returns as SQLNULLrather than the textnull. - 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, andutf8mb3_unicode_cicollations so accented and unaccented equivalents match in point lookups andGROUP BYqueries as they do in MySQL. A resnapshot is necessary for deep caching. - 8279fe8: Fixed
LIKEwith 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-shardsto 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 of0preserves 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 ARRAYunder PostgreSQL, which was previously treated as a cast tot. This spelling now also parses wherever a type is written, not only afterCAST(... AS ...). - ff51577: Readyset now supports the
IS [NOT] DISTINCT FROMbinary operators.