Skip to content

Releases: readysettech/readyset

stable-251204

04 Dec 19:40

Choose a tag to compare

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 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

  • 8abf97f: Added support for PostgreSQL-style array constructor syntax.
  • 01924f9: Added support for RENAME TABLE and ALTER TABLE ... RENAME TO ... DDL statements. Readyset now detects table renames and automatically re-snapshots the affected tables to maintain cache consistency.
  • d137a80: Introduced the ALTER READYSET SET EVICTION command, allowing dynamic updates to eviction memory limits and periods.
  • 5f5815d: Added the SHOW REPLAY PATHS command to display replay paths in the graph. This provides more detailed information about replays and evictions.
  • c55bf5b: Added support for replicating MySQL tables created using CREATE TABLE ... AS SELECT.
  • a0eab18: Fixed an issue during eviction of straddled joins where the system could attempt to evict a key without a valid remapping.
  • cb23574: Enabled the use of aggregate functions in all supported row-level built-in functions, except for jsonb_insert and jsonb_set.
    Example:
    SELECT COALESCE(MAX(qty), 100), sn FROM qa.spj GROUP BY sn;
  • 4549685: Enabled the Query Sampler by default with a 1% sampling rate.
  • 97f499c: Added correlated subquery resolution in mixed join/comma syntax.
  • b208317: Added a CLI and environment option TABLE_REQUEST_TIMEOUT_SECONDS to configure timeout for long-running table operations such as compaction.
  • 141279b: Allow more computed expressions in join ON predicates when they reference a single table (e.g. ON length(col) < 10 now works).
  • fe71362: Automatically stop replicating tables created using CREATE TABLE ... LIKE; it is not currently supported and previously could cause errors trying to continue replicating events for the table.

stable-251023

23 Oct 19:54

Choose a tag to compare

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 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

  • 54b5063: Use the intended collation for string-accumulating aggregation functions.
  • f6bb7ca: Add support for the PostgreSQL string concatenation function string_agg().
  • cc626a6: Ignore NULL values in accumulating aggregation functions such as group_concat().
  • 0d21ebc: Add base support for the PostgreSQL accumulating aggregation function array_agg().
  • 3bcc180: Support the DISTINCT keyword in accumulating aggregation operations.
  • a68bb75: Handle ORDER BY clauses in accumulating aggregation functions.
  • 75c8e97: Handle accumulation functions correctly in post-lookup aggregation operations.
  • 9e21dfd: Add support for Bucket(timestamptz, interval), a Readyset-specific SQL function that assigns timestamps to fixed-interval buckets. Intervals use the format [positive integer] [unit] (where unit = seconds, minutes, hours, days, months, or years). This function is primarily intended for use in GROUP BY and aggregate queries to enable time series–style grouping, for example:
    SELECT Bucket(ts, '5 seconds') AS s5, SUM(data) FROM t GROUP BY s5;
  • 3c90745: Add pre-snapshot verification checks to detect potential configuration issues earlier. The --verify flag can be used to run only the verification checks and then exit, while --verify-skip can be used to skip verification checks and continue normal startup.
  • 1eddd77: Ensure EXPLAIN LAST STATEMENT reports the cache name when the query target is Readyset, whenever possible.
  • 24f4d3e: Accept the ISO-8601 string timestamp separator in PostgreSQL (for both simple and extended query protocols).
  • b86c373: Set the correct upstream database version during the new connection handshake for both MySQL and PostgreSQL.
  • d2cf26a: Fix a potential deadlock occurring during index creation.
  • c2d76ef: Properly escape backslashes in strings that are elements within an array.

stable-250925

25 Sep 19:49

Choose a tag to compare

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 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

  • a7f2f6e: Added the ability to include comments in snapshot queries for MySQL.
  • 08336cf: Introduced a query sampler thread in the Readyset Adapter. This thread samples queries, compares their results with those from the upstream database, and reports potential mismatches.
  • 433420c: Full Materialization (queries without predicates) is now generally available.
  • 59e245b: Fixed a bug in the MySQL binary protocol for TIME types without microseconds.
  • b5ceef6: Added the --report-host, --report-port, --report-user, and --report-password arguments to ReadySet. These are used to show the replica parameters when running SHOW REPLICAS on the master database.
  • e85ff4e: Overhauled SHOW READYSET TABLES to always respond immediately, display more table statuses (such as compaction and index creation), and show progress as a percentage in the description column during snapshot, compaction, and index creation.
  • 8aa11f3: Added support for negative TIME values in MySQL.
  • 99fb980: Correctly handled optimized TIME binary format values when the value is '00:00:00'.
  • 3ad3182: Updated DROP TABLE so that it also removes queries referencing dropped tables from the output of SHOW PROXIED QUERIES.
  • 8f0a0e0: Updated SHOW READYSET STATUS to list enabled feature flags such as post-lookups, top-k, and straddled-joins.
  • dcddda6: Added TLS support for upstream MySQL connections.
  • de0fd12: Added support for processing a certificate bundle file provided via --ssl-root-cert when running in PostgreSQL mode.

stable-250828

28 Aug 20:52

Choose a tag to compare

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 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

NOTE: Due to ongoing work to enhance support for collations, upgrading to this release will cause Readyset to re-snapshot the upstream database.

  • e607d04: Added support for LATERAL subqueries.
  • 6a8e0cc: Fixed an issue allowing snapshotting of PostgreSQL tables where a column of a custom type is declared NOT NULL without a default value.
  • d18d95d: MySQL replication now uses heartbeats to detect stale or half-closed connections and automatically reconnect to the server.
  • 9d40a0e: ReadySet now supports explicit ORDER BY .. NULLS {FIRST|LAST} syntax and respects the SQL dialect when choosing a default.
  • 56dbf0c: Readyset now supports Window Functions with the pattern function OVER([PARTITION BY {expr, ..}] [ORDER BY {expr, ..}]) where function is one of COUNT, SUM, AVG, RANK, DENSE_RANK, ROW_NUMBER, MIN, or MAX.
  • a9dee68: Added a new collation that emulates MySQL’s latin1_swedish_ci collation.
  • faa2671: The log level can be set at runtime using the ALTER READYSET SET LOG LEVEL statement or the /log_level HTTP endpoint. For example: ALTER READYSET SET LOG LEVEL 'info,readyset_adapter=debug' or curl -X POST -d 'info,readyset_adapter=debug' http://readyset:6033/log_level.

stable-250724

24 Jul 18:40

Choose a tag to compare

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 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

  • f42825e: Fix a bug where Readyset would fail to save the replication offset for MySQL tables created during active replication, leading to unnecessary table resnapshots.
  • d3be028: Add a --parsing-preset CLI option and PARSING_PRESET environment variable to configure how mismatches between nom-sql and sqlparser-rs parsing are handled. It defaults to prefer-nom, which parses with both nom-sql and sqlparser-rs, logs a warning if they don't agree, and uses the AST produced by nom-sql. To disable parsing with sqlparser-rs, use only-nom. To test experimental query support for syntax not supported by nom, use prefer-sqlparser or only-sqlparser.
  • 373001a: Rate-limit logging of nom-sql/sqlparser-rs mismatches, configurable by the PARSING_LOG_RATE_LIMIT_SECS environment variable. By default, warnings for mismatches are logged at most once per minute. Setting the environment variable to 0 disables rate limiting. The rate limit does not apply to DDL encountered during replication.
  • 24d2b0f: Add a magic number to inter-domain communication to prevent arbitrary connections from being accepted.
  • 1501a18: Allow configuring the number of parallel tables for MySQL snapshots via the MAX_PARALLEL_SNAPSHOT_TABLES environment variable or the --max-parallel-snapshot-tables CLI option.
  • 5014c8c: Add support for arbitrarily large DECIMAL and NUMERIC values, enabling replication and use of the full range allowed by MySQL and Postgres for these columns. This also fixes an issue with replicating NaN values, which will now work as expected.
  • c863ca4: Improve logging when restarting the replicator to print the last replication position.
  • 1845204: If Readyset receives a SET statement it cannot support, proxy subsequent queries upstream.
  • 66ba270: Introduce a new join algorithm for straddled joins (joins where predicates come from both sides). The new algorithm uses optimizations like Index Condition Pushdown (ICP) to push predicates down to RocksDB, resulting in faster lookups and reduced memory footprint.

stable-250627

27 Jun 18:08

Choose a tag to compare

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 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

NOTE: Due to ongoing work to enhance support for collations, upgrading to this release will cause Readyset to re-snapshot the upstream database.

  • c5cf711: Add support for replicating PostGIS geometry(point) data type.
  • 22b5eb9: Support basic spatial display functions (ST_AsTEXT, ST_AsEWKT) for the PostGIS geometry(point) data type.
  • dc97c03: Respect @@character_set_results when returning latin1 and cp850 text columns in MySQL. SET NAMES and \C also work, but do not yet affect collation in lookups.
  • 833b7b3: Support replication of PostgreSQL tsvector data types. Readyset intentionally discards the data, as we will not support tsvector queries in the product.
  • 517d2f3: Avoid re-snapshotting tables when a user executes an ALTER TABLE ADD KEY statement.
  • f2dce14: Fix a bug that caused errors when attempting to create duplicate caches.
  • 4644765: Fixed an issue where a CREATE CACHE using a range condition (B-tree index) could consume excessive memory.
  • 6af3fdc: Improved performance of some caches by ensuring that queries using WHERE (...) IN (...) no longer match caches created with WHERE ... = .....
  • a925ea9: Fixed a bug in the TopK feature that caused incorrect behavior when the ORDER BY column contained non-unique values.

stable-250522

22 May 21:22

Choose a tag to compare

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 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

  • d25eb08: Fixed an issue where char columns were not padded with spaces when using MRBR and were omitted from the insert statement.
  • 5ac8de1: Added support for inferring MySQL default values for binary columns.
  • 6758d81: Fixed an issue where the inferred default value for MySQL BLOB columns was incorrect.
  • 08761f6: Fixed a bug where a PostgreSQL table snapshot failure could be silently ignored, causing Readyset to fail to remove the failed table from the list of tables to snapshot and aborting the entire snapshot process.
  • ecdf2e7: Added support for the ST_AsText and ST_AsWKT functions.
  • c0431ce: Added basic support for the Point spatial type in MySQL.
  • 65eda6c: Support using aliased aggregates in ORDER BY clause when TopK feature flag is enabled.

stable-250424

24 Apr 20:56

Choose a tag to compare

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 include deb package for Ubuntu 22.04, Debian 12 and later, and rpm packages for Fedora 39 and Amazon Linux 2023. See package installation instructions.

What's New

  • edbf0af: As a first step toward supporting latin1 text columns in MySQL, we now allow replicating these columns but storing them re-encoded as utf8. Data will be retrieved as utf8, so comparisons and retrieval will not match upstream. Future work will improve support.
  • 0113e58: Fixed a MySQL issue when Minimal Row-Based Replication is enabled and the user runs an insert with no columns.
  • 981f459: Fixed a MySQL issue where INSERT statements with omitted columns could cause replication to fail under certain conditions.
  • f7e052f: Fix a race between domain recovery and dropping a table after replication failure.
  • 96f2d97: Fixed a bug where certain unsupported queries would throw an error instead of getting proxied upstream.
  • 43f3b0e: Make parser more flexible with whitespaces in function arguments and IN list values.
  • f645af1: Fixes an issue with MySQL Minimal Row Based Replication where the collation and signedness of columns were incorrectly retrieved from the table map event.

stable-250327

27 Mar 16:37

Choose a tag to compare

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 include deb package for Ubuntu 22.04, Debian 12 and later, and rpm packages for Fedora 39 and Amazon Linux 2023. See package installation instructions.

What's New

  • 875fda7: It's now possible to connect to Readyset with multiple users by specifying a comma-separated list of username:password pairs in the --allowed-users parameter.
  • 418911e: Added support for builtin functions json[b]_object_agg and json_objectagg.
  • 795b05b: MySQL upstream connections no longer automatically attempt to reconnect via the Unix socket after a successful TCP connection on localhost. To connect to a local MySQL server via the socket, add ?socket=/path/to/socket to the connection string.
  • 29e086c: Check whether placeholders' columns (zzz = $1) exist during migration, and if not, report query as unsupported.
  • 07e2987: Readyset now allows tuple comparison using = and IN operators, allowing queries like:
    SELECT * FROM t WHERE (a,b) = (1,2)
    SELECT * FROM t WHERE (a,b) = (?,?)
    SELECT * FROM t WHERE (a,b) IN ((1,2), (3,4))
    SELECT * FROM t WHERE (a,b) IN ((?,?), (?,?))
    and auto-parameterizes queries when possible.
  • 9477a18: Add support for CASE WHEN syntax: CASE <expr> WHEN <expr> THEN <expr>
  • a3ed35a: Add support for STRAIGHT_JOIN as a join operator.
  • 860925e: Adjust MySQL ColumnDefinitions to match MySQL. Some drivers, like ruby-mysql2, use the column definition to round decimal numbers.
  • 7e2c8ed: Handle invalid 0000-00-00 00:00:00 date when it appears as as a default column value in the schema.
  • fc819f9: Fixed a MySQL replication issue when Minimal Row Image is enabled. If a case-insensitive text column was omitted during an insert, we will try to coerce its value to the corresponding type, which will fail if we attempt to coerce before translating the value to the column default.
  • 6c9c981: Send a COM_QUIT command when closing a MySQL connection in order to avoid log flooding with aborted connection.
  • d0a74d5: Readyset now pulls filter conditions with function calls into join keys.

stable-250227

27 Feb 19:03

Choose a tag to compare

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 include deb package for Ubuntu 22.04 and Debian 12, and rpm packages for Fedora 39 and Amazon Linux 2023. See package installation instructions.

What's New

  • df78156: TLS support for mysql client connections.
  • 38ea9d9: Added support for MySQL Minimal Row Based Replication (MRBR).
  • ccd3fe1: Added a new command to enter and exit maintenance mode for Readyset. This will allow external tools like ProxySQL to know when to stop redirecting traffic to the server.
  • 42c7c75: After evicting an infrequently used key from a reader node, Readyset will evict the key from upstream graph nodes in order to use memory more efficiently.
  • 16a8439: Readyset can now be started with --replication-tables-ignore '*.*' to initially avoid replicating any tables. Tables can still be added manually via ALTER READYSET ADD TABLES.
  • 58eb5c0: Improve PostgreSQL wire protocol compatibility by appropriately responding to an empty query with an EmptyQueryResponse message.
  • 13592d9: Fix a bug in graphviz where builtin functions would display twice.
  • cf20745: Provide a reason why a query is unsupported by ReadySet when running SHOW PROXIED QUERIES.
  • 12448f3: Fix a bug where some unaliased subquery columns were invisible to the outer query.
  • a435695: Added support for PostgreSQL builtin function json[b]_build_object and MySQL builtin function json_object.
  • Correct/optimized support for postgres unnamed prepared statements.
  • Optimization in decoding postgres prepared statements messages yields 10% throughput improvement.