github readysettech/readyset stable-260730

2 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

  • 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 ROLE could still change which cached rows a session was served.
  • bce1b86: Readyset now applies a LIMIT with no ORDER BY inside the cache by lowering it to a TopK node in the graph, storing only the limited rows instead of the full result. Caches created with LIMIT 10, for example, will stop serving queries with literal values other than 10.
  • 3daaf72: Fixed FLOAT + DOUBLE arithmetic silently truncating to single precision; the result is now computed and returned as DOUBLE, 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 CACHE support 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-secs option (RLS_POLL_INTERVAL_SECS) to configure how often the Postgres RLS catalog is polled for policy changes. Defaults to 60 seconds.
  • cf83ced: EXPLAIN LAST STATEMENT now reports the shallow cache's name on a hit, matching what it already reports for a deep cache hit.
  • c2cbc5f: EXPLAIN LAST STATEMENT reports a shallow-cache miss as readyset_then_upstream(<cache>) with reason shallow cache miss, instead of a plain upstream result that is indistinguishable from a real bypass. Its second column is renamed from Readyset_error to Readyset_reason and 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 QUERIES now lists queries that Readyset declined to cache automatically, with readyset_supported reading skipped: <reason>.
  • 94839c6: Fixed connection drops for MySQL clients that negotiate a latin1 or cp850 handshake 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 NAMES or SET 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 latin1 or cp850 handshake 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 latin1 or cp850 character 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.

Don't miss a new readyset release

NewReleases is sending notifications on new releases.