Skip to content

Releases: readysettech/readyset

stable-260423

23 Apr 23:20

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

  • 642d626: Fixed ORDER BY on window function aliases and other SELECT expression aliases being incorrectly rejected with "not functionally dependent on GROUP BY" when the query also contained aggregates.
  • c579afd: AVG queries with WHERE IN, range, or BETWEEN conditions can now be cached.
  • 305ffa6: Fixed the TopK operator returning incorrect row counts after deletes when queries had no GROUP BY clause and contained duplicate values in the ORDER BY column.
  • d0bde24: Fixed SELECT DISTINCT with ORDER BY and LIMIT returning fewer rows than expected when the table contained many duplicate values.
  • 00d661b: json_object_agg and jsonb_object_agg queries with WHERE IN clauses can now be cached.
  • dea67be: Added the FLUSH ALL SHALLOW CACHES SQL command, which clears cached data for all shallow caches without removing cache definitions.
  • 8bd42e8: Fixed a bug in shallow cache where duplicate refresh callbacks could accumulate for the same cache key, causing unbounded growth in upstream query volume over time.
  • 6e06f05: MySQL replication now batches row events within a transaction into a single RPC instead of issuing one RPC per row. Initial tests showed up to a 21x throughput improvement for large transactions; actual gains will vary depending on hardware and workload. Controlled by the new --replication-batch-size flag (default: 50,000).
  • 3311c09: MySQL replication now coalesces consecutive small transactions into a single RPC batch via group commit. The first committed transaction starts a short wait window (default: 500 µs) to collect additional transactions before flushing. Compressed transactions participate in group commit alongside uncompressed ones. Initial tests showed up to a 7.6x throughput improvement for single-row autocommit workloads; actual gains will vary depending on hardware and workload. Controlled by --group-commit-max-trx (default: 20) and --group-commit-wait-us (default: 500).
  • fa98b0f: Fixed GROUP_CONCAT to respect the upstream MySQL database's group_concat_max_len setting instead of always using the 1024-byte default.
  • d53a37f: Fixed SUBSTRING to implicitly cast non-string types (INT, DOUBLE, DATE) to strings, matching MySQL behavior.
  • 5a3627e: Fixed AVG and SUM aggregate output precision and scale to match upstream Postgres and MySQL behavior for all input types.
  • 52568cd: Fixed SUM and AVG aggregate functions to correctly return NULL when all input values are NULL, per the SQL standard.
  • 7dbd76f: Added MILLISECONDS (MS) syntax to shallow cache creation.
  • 8b20685: Fixed parsing of MySQL UNIQUE KEY column constraints (both inline forms like x INT UNIQUE KEY and suffix forms like UNIQUE KEY name (col) USING {HASH, BTREE}).
  • 0fc8c04: Added support for MySQL INVISIBLE columns (MySQL 8.0.23+). Readyset now tracks the invisible attribute on columns, excludes them from SELECT expansion (matching MySQL behavior), and uses explicit column lists during snapshots to ensure invisible columns are correctly replicated.
  • 861e472: In-request-path migration now auto-creates shallow caches when --cache-mode=shallow.
  • ca0b9d1: Readyset now includes a query ID label in recorded query metrics in the default (non-verbose) query logging mode, allowing easier analysis of query workloads. The count column in SHOW PROXIED QUERIES and SHOW CACHES now displays meaningful values by default.
  • ad41730: Fixed TIMESTAMP values being converted using the server's system timezone instead of the client's @@time_zone session variable.
  • fd5dfaf: Added readyset.upstream_query_stats and readyset.cached_query_stats virtual relations (vrels) for querying per-query execution metrics via SQL.
  • fa4c7a7: Added support for MySQL GTID-based replication. When gtid_mode is ON upstream and --require-gtid is set, Readyset tracks replication progress using the executed GTID set instead of the binlog file and position, enabling replication to survive upstream source failover. Includes crash recovery with per-event index tracking (controlled by --max-gtid-rows-to-skip, default: 10,000) and supports MySQL 8.4+ tagged GTIDs (GTID_TAGGED_LOG_EVENT).
  • 5255ad8: Added runtime failover commands for managing the replicator without restarting Readyset. New SQL syntax: ALTER READYSET STOP REPLICATION and ALTER READYSET START REPLICATION pause and resume the replicator; ALTER READYSET SET REPLICATION POSITION '<pos>' resumes from a specific binlog file/position or GTID set (e.g., after an upstream failover); ALTER READYSET CHANGE CDC TO '<url>' repoints Readyset to a new upstream database. On restart, the replicator skips re-snapshotting and resumes from the stored position. A new ReplicationStatus field (Running/Stopped/Disabled) is exposed via SHOW READYSET STATUS.
  • 5c32f0e: Readyset's MySQL adapter no longer performs the RSA-based caching_sha2_password full-auth exchange. Clients must authenticate via the pre-populated fast-auth cache.

stable-260331

31 Mar 19: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 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

  • 0ee831f: Fixed handling of empty array literals ({}) in PostgreSQL queries that previously caused type mismatch errors.

  • f89952f: EXPLAIN MATERIALIZATIONS now supports the optional FOR CACHE <name> suffix to show only the materialized nodes belonging to a specific cache’s dataflow.

  • f0fe3f4: Readyset now creates shallow caches by default in response to CREATE CACHE statements, allowing users to start caching queries without first setting up replication.

    • If replication is configured, start Readyset with --cache-mode deep or --cache-mode deep-then-shallow to enable deep caching (CACHE_MODE environment variable).
    • You can request a specific cache type using the CREATE [DEEP|SHALLOW] CACHE syntax.
  • d37510d: Added support for the PostgreSQL array overlap operator (&&), which checks whether two arrays share any common elements.

  • 6924e75: Fixed an issue where filters on ROW_NUMBER() results were lost in nested subqueries with identically named window output columns, causing too many rows to be returned.

  • f4e59d1: Fixed a race condition between the WAL flushing thread and the full replay thread.

  • 3867c09: Fixed an out-of-memory issue during replays for queries with fully materialized nodes.

  • d4c33ed: Fixed incorrect results for LEFT JOINs with ON-clause conditions referencing only the left table.

  • 83767d8: Fixed a crash in domain processing when SUM or AVG aggregates were applied to text columns in MySQL mode.

  • ce07ae1: Fixed AVG() decimal precision for integer columns in MySQL.

  • 8f37261: Added support for auto-incrementing columns in PostgreSQL via the GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY syntax.

  • fb31b80: Fixed a panic when json_object_agg was used in queries requiring post-lookup aggregation (e.g., with WHERE IN clauses). These queries now gracefully fall back to the upstream database.

  • 4932860: Improved performance of PostgreSQL array containment operators (@> and <@) from O(n*m) to O(n+m).

  • 9bed07a: Fixed incorrect NULL ordering in PostgreSQL array comparisons. NULL elements are now correctly treated as greater than non-NULL values, matching PostgreSQL semantics.

  • 4bfec7c: Fixed a bug where GROUP BY with numeric column references (e.g., GROUP BY 1) failed inside subqueries.

  • 0e2d46d: Fixed a bug causing column lookup errors during MIR lowering for queries with aggregates inside derived tables (e.g., SELECT * FROM (SELECT max(id), val FROM t GROUP BY 2) AS sub).

  • a8a6425: SHOW PROXIED QUERIES now defaults to displaying proxied queries and their Readyset support status based on the current --cache-mode setting (default: shallow).

    • You can specify a list using the DEEP or SHALLOW modifier, e.g., SHOW PROXIED [DEEP|SHALLOW] QUERIES.
  • 8fb0958: Fixed array_agg on array-typed columns (e.g., ARRAY(SELECT ARRAY[...])), which previously returned Unsupported type errors. It now produces multidimensional arrays matching PostgreSQL behavior.

  • b5bf630: Fixed incorrect results for LEFT JOIN + subquery queries with parameterized WHERE clauses on a right-side non-join column.

  • 7033df7: Added support for VALUES clauses in the FROM position with JOINs, enabling inline literal tables (e.g., SELECT ... FROM (VALUES (1, 'a')) AS v(id, name) JOIN t ON ...).

  • 42bca2b: Fixed a domain thread crash when caching queries with type-mismatched join conditions (e.g., INT joined against group_concat TEXT output that cannot convert to INT).

  • 4689a72: Fixed equality comparison bugs with TIMESTAMP and non-UTC TIMESTAMPTZ cached lookups. Persistent state will be automatically re-snapshotted on upgrade.

  • 968d819: Fixed incorrect results for TIMESTAMP queries with timezone offsets in literals.

  • 3965615: Fixed MySQL DATETIME lookups with timezone offsets in WHERE clauses.

  • f0617bf: Fixed connection tracking to properly handle multiple authenticated users from the same IP address and re-authentication cases. SHOW CONNECTIONS now displays both remote addresses and usernames.

  • 31a08d9: Added a virtual Readyset schema backed by DataFusion, exposing more system state via SQL and virtual relations.

    • The default schema name is readyset, configurable via the --readyset-schema flag or the READYSET_SCHEMA environment variable.
  • 7d4e2e4: Added readyset.shallow_caches virtual relation (vrel) to examine current shallow caches.

  • a77c177: Added readyset.shallow_cache_entries vrel to assist in diagnosing shallow cache entries.

  • 8b668c3: Fixed duplicate column projection handling to prevent debug assertion panics when queries select the same column multiple times.

  • 369f17f: Added the SKIP CACHE hint (/*+ SKIP CACHE */) to bypass Readyset caches and route queries directly to the upstream database.

  • d83cf2f: Added a reason tag to the skip cache metric to distinguish between SKIP CACHE hints, transactions, and proxy-always bypass scenarios.

    • Thank you to @Daksh-10 for the contribution!
  • Readyset now supports MySQL Global Transaction Identifiers (GTIDs) for binlog replication. When the upstream MySQL server has GTID mode enabled, Readyset automatically detects and uses GTID-based positioning instead of traditional binlog file/position tracking. This provides:

    • Automatic GTID detection: Readyset queries the upstream server's gtid_mode variable and switches to GTID-based replication automatically when available.
    • --require-gtid flag: Optionally enforce GTID mode, preventing fallback to binlog file/position if the upstream server has GTIDs disabled.
  • Readyset now supports switching the upstream database source without a full re-snapshot, enabling planned failover scenarios (e.g., promoting a replica or migrating to a new host). Four new SQL commands are available:

    • ALTER READYSET STOP REPLICATION: Pauses the replication stream.
    • ALTER READYSET START REPLICATION: Resumes replication from the last stored position.
    • ALTER READYSET SET REPLICATION POSITION '<pos>': Updates the stored replication position (accepts MySQL binlog file:position, GTID set, or PostgreSQL LSN format).
    • ALTER READYSET CHANGE CDC TO '<url>': Points Readyset at a new upstream database URL.

    A typical failover workflow: stop replication, change the CDC URL to the new source, optionally adjust the replication position, then start replication. This works for both MySQL (binlog file/pos and GTID) and PostgreSQL (LSN) deployments.

  • Added query hint syntax (/*rs+ ... */) for inline cache management. CREATE SHALLOW CACHE hints create a shallow cache on first execution while still executing the query. It also allows for optional settings such as TTL and COALESCE.

stable-260226

26 Feb 22:28

Choose a tag to compare

Release Notes

NEW! Readyset is now releasing distro packages and containers for the arm64/aarch64 architecture.

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

  • 3a084fc: Eliminated confusing ERROR messages from the replicator on restart.
  • eaed2b5: Added error handling when replicated data arrives before the base node is open.
  • e09ff1d: Extended shallow caching support via sqlparser ASTs.
  • dddd9a9: Added support for the PostGIS POLYGON data type.
  • 7d2e198: Fixed "partially overlapping partial indices" error when caching window function queries that filter on both the partition column and the generated output column (e.g., ROW_NUMBER()).
  • 78986ba: Readyset now defaults to sqlparser for parsing, while still using the legacy parser to catch mismatches.
  • 92d197f: Added support for replicating tables with MySQL functional indexes. Tables with functional indexes can now be snapshotted if they have a usable PRIMARY or UNIQUE key without functional expressions.
  • 482311c: Shallow cache refresh workers are now spawned on demand to reduce unused upstream connections. Workers also shut down and close their connections after an idle period.
  • 86a882d: Fixed a bug to support PostGIS POINT EMPTY.
  • 3b0c72f: Added the SHOW SHALLOW CACHE ENTRIES command to display metadata about cached entries, including last accessed time, refresh time, and execution duration. Supports a WHERE query_id filter and LIMIT clause.
  • 8c92f34: In shallow-cache-only mode, Readyset now supports changing the upstream database via the ALTER READYSET CHANGE UPSTREAM TO '...' statement.
  • 1e38a2c: Optimized TLS client connections for MySQL.
  • 2fa2c1b: Fixed array equality comparisons and type coercion so PostgreSQL array values are correctly compared and cast during query evaluation.
  • 424dd67: Added support for PostgreSQL array operators @> (contains), <@ (contained by), and || (concatenation) in queries proxied and cached by Readyset.
  • b944665: Add rejection of multidimensional array literals with mismatched sub-array dimensions at query preparation time instead of failing at read time.
  • 0adeae0: Added support for the string concatenation operator || for PostgreSQL.
  • 14c83ae: Properly handle AUTOCOMMIT.
  • a9b3733: Fixed AUTOCOMMIT handling during transactions.
  • 5e96e21: Fixed the shallow cache COALESCE setting reverting to its default value after restart when the cache was created via a SQL hint.
  • 8eca556: Fixed malformed Readyset hint comments (e.g., misspelled POLICY keywords) that caused queries to bypass existing shallow caches and hit the upstream database instead.
  • b8247a1: Fixed queries with multiple optimizer hints creating duplicate shallow cache entries instead of sharing a single cache.
  • 0d05da7: Added the SHOW PROXIED SHALLOW QUERIES command to display proxied queries suitable for shallow caching. The query IDs shown can be used to create caches via CREATE CACHE FROM <QUERY_ID>.
  • 14ec787: Fixed a bug where arrays with incompatible element types (e.g., INTEGER and DATE) were silently accepted instead of being rejected at CREATE CACHE time.
  • 692f3e8: Fixed ARRAY[] IN (ARRAY[]) returning incorrect results due to arrays being coerced to strings during constant folding.
  • 9c7a6c2: Fixed a bug where aggregate functions wrapped in scalar functions (e.g., ROUND(MAX(col))) returned 0 rows instead of one row with NULL on empty tables.

Thank you to the following community contributors to this release:
@ahmed-kamal2004, @egoldschmidt

stable-260122

22 Jan 19:19

Choose a tag to compare

Release Notes

NEW! Readyset is now releasing distro packages and containers for the arm64/aarch64 architecture.

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

  • 15076ab: Added the --replication-server-uuid option to set a server UUID in MySQL. This UUID is now reported in SHOW REPLICAS.
  • a92eace: Fixed potential out-of-memory (OOM) errors by rejecting queries with parameterized IN predicates that would expand to too many lookup keys.
  • 19e3c50: Added support for configuring the timeout for sampler queries.
  • 0a43f60: Prevented the creation of duplicate indexes.
  • 1313bbb: Improved index creation performance on RocksDB column families by up to 20%.
  • 3b1d60f: Allowed functions to be used as top-level predicates in WHERE clauses (e.g., WHERE COALESCE(col, TRUE) or WHERE JSON_OVERLAPS(col, '[42]')).
  • cc815c1: Fixed incorrect schema resolution for unqualified tables in JOIN ON clauses when multiple schemas contain tables with the same name.
  • 9f2be35: Updated Grafana dashboards to use a parameterized Prometheus data source, allowing imports to map existing data sources without hardcoded UIDs.

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.