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
- a8a3644: Hint-based cache creation now honors an explicit cache name in
/*rs+ CREATE SHALLOW CACHE <name> */; previously, the named form was silently ignored and no cache was created. - 31ea3f7: Fix a row-level security bypass where a rejected
SET ROLEcould still change which cached rows a session was served. - bce1b86: Readyset now applies a
LIMITwith noORDER BYinside the cache by lowering it to aTopKnode in the graph, storing only the limited rows instead of the full result. Caches created withLIMIT 10, for example, will stop serving queries with literal values other than10. - 3daaf72: Fixed
FLOAT + DOUBLEarithmetic silently truncating to single precision; the result is now computed and returned asDOUBLE, matching upstream Postgres and MySQL. - e5ef5aa: Fixed a panic when coercing a timestamp value to boolean, which could crash the reader during key remapping.
- 743af4f: Fixed the
CREATE CACHEsupport check so that several classes of queries are now cacheable, whereas before we would have falsely treated such queries as unsupported and refused to cache them. - 88736fe: Fixed shallow-cache auto-creation to admit MySQL aggregate and window functions (
COUNT,SUM,ROW_NUMBER, and others) and PostgreSQL functions added after PostgreSQL 13 (bit_xor,any_value, and 155 others), both of which previously never auto-cached under--auto-cache. - 9b2c4a5: Added the
--rls-poll-interval-secsoption (RLS_POLL_INTERVAL_SECS) to configure how often the Postgres RLS catalog is polled for policy changes. Defaults to 60 seconds. - cf83ced:
EXPLAIN LAST STATEMENTnow reports the shallow cache's name on a hit, matching what it already reports for a deep cache hit. - c2cbc5f:
EXPLAIN LAST STATEMENTreports a shallow-cache miss asreadyset_then_upstream(<cache>)with reasonshallow cache miss, instead of a plainupstreamresult that is indistinguishable from a real bypass. Its second column is renamed fromReadyset_errortoReadyset_reasonand now reports non-error reasons too. - ce7fbdc: Allow queries with PostgreSQL row constructors in auto-caching mode, for example
SELECT ROW(1, 2, 3). - 4155637:
SHOW PROXIED QUERIESnow lists queries that Readyset declined to cache automatically, withreadyset_supportedreadingskipped: <reason>. - 94839c6: Fixed connection drops for MySQL clients that negotiate a
latin1orcp850handshake charset and send queries containing non-ASCII characters. Query text is now decoded according to the client's character set. - 02a6b97: Fixed MySQL clients switching character sets with
SET NAMESorSET character_set_client. Statements sent after the switch are now decoded in the selected character set instead of being treated as UTF-8. - 71f6f5c: Fixed proxied query results for MySQL clients that negotiate a
latin1orcp850handshake charset so that result rows are returned in the client's character set. - 8218e91: Handle non-UTF-8 encodings in shallow caching.
- c79c686: Fixed prepared-statement string parameters sent by MySQL clients using a
latin1orcp850character set. - bc83b2d: Fixed column names in result-set metadata so they are returned in the client's character set instead of raw UTF-8 bytes.