Releases: readysettech/readyset
stable-260423
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 BYon window function aliases and otherSELECTexpression aliases being incorrectly rejected with "not functionally dependent on GROUP BY" when the query also contained aggregates. - c579afd:
AVGqueries withWHERE IN,range, orBETWEENconditions can now be cached. - 305ffa6: Fixed the TopK operator returning incorrect row counts after deletes when queries had no
GROUP BYclause and contained duplicate values in theORDER BYcolumn. - d0bde24: Fixed SELECT DISTINCT with ORDER BY and LIMIT returning fewer rows than expected when the table contained many duplicate values.
- 00d661b:
json_object_aggandjsonb_object_aggqueries with WHERE IN clauses can now be cached. - dea67be: Added the
FLUSH ALL SHALLOW CACHESSQL 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-sizeflag (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_CONCATto respect the upstream MySQL database'sgroup_concat_max_lensetting instead of always using the 1024-byte default. - d53a37f: Fixed
SUBSTRINGto 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 KEYand suffix forms likeUNIQUE 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 QUERIESandSHOW CACHESnow displays meaningful values by default. - ad41730: Fixed TIMESTAMP values being converted using the server's system timezone instead of the client's
@@time_zonesession variable. - fd5dfaf: Added
readyset.upstream_query_statsandreadyset.cached_query_statsvirtual relations (vrels) for querying per-query execution metrics via SQL. - fa4c7a7: Added support for MySQL GTID-based replication. When
gtid_modeis ON upstream and--require-gtidis 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 REPLICATIONandALTER READYSET START REPLICATIONpause 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 newReplicationStatusfield (Running/Stopped/Disabled) is exposed viaSHOW READYSET STATUS. - 5c32f0e: Readyset's MySQL adapter no longer performs the RSA-based
caching_sha2_passwordfull-auth exchange. Clients must authenticate via the pre-populated fast-auth cache.
stable-260331
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 MATERIALIZATIONSnow supports the optionalFOR 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 CACHEstatements, allowing users to start caching queries without first setting up replication.- If replication is configured, start Readyset with
--cache-mode deepor--cache-mode deep-then-shallowto enable deep caching (CACHE_MODEenvironment variable). - You can request a specific cache type using the
CREATE [DEEP|SHALLOW] CACHEsyntax.
- If replication is configured, start Readyset with
-
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 withON-clause conditions referencing only the left table. -
83767d8: Fixed a crash in domain processing when
SUMorAVGaggregates 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 IDENTITYsyntax. -
fb31b80: Fixed a panic when
json_object_aggwas used in queries requiring post-lookup aggregation (e.g., withWHERE INclauses). 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
NULLordering in PostgreSQL array comparisons.NULLelements are now correctly treated as greater than non-NULLvalues, matching PostgreSQL semantics. -
4bfec7c: Fixed a bug where
GROUP BYwith 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 QUERIESnow defaults to displaying proxied queries and their Readyset support status based on the current--cache-modesetting (default: shallow).- You can specify a list using the
DEEPorSHALLOWmodifier, e.g.,SHOW PROXIED [DEEP|SHALLOW] QUERIES.
- You can specify a list using the
-
8fb0958: Fixed
array_aggon array-typed columns (e.g.,ARRAY(SELECT ARRAY[...])), which previously returnedUnsupported typeerrors. It now produces multidimensional arrays matching PostgreSQL behavior. -
b5bf630: Fixed incorrect results for
LEFT JOIN+ subquery queries with parameterizedWHEREclauses on a right-side non-join column. -
7033df7: Added support for
VALUESclauses in theFROMposition withJOINs, 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.,
INTjoined againstgroup_concatTEXToutput that cannot convert toINT). -
4689a72: Fixed equality comparison bugs with
TIMESTAMPand non-UTCTIMESTAMPTZcached lookups. Persistent state will be automatically re-snapshotted on upgrade. -
968d819: Fixed incorrect results for
TIMESTAMPqueries with timezone offsets in literals. -
3965615: Fixed MySQL
DATETIMElookups with timezone offsets inWHEREclauses. -
f0617bf: Fixed connection tracking to properly handle multiple authenticated users from the same IP address and re-authentication cases.
SHOW CONNECTIONSnow 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-schemaflag or theREADYSET_SCHEMAenvironment variable.
- The default schema name is
-
7d4e2e4: Added
readyset.shallow_cachesvirtual relation (vrel) to examine current shallow caches. -
a77c177: Added
readyset.shallow_cache_entriesvrel 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 CACHEhint (/*+ 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 CACHEhints, 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-gtidflag: 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 CACHEhints create a shallow cache on first execution while still executing the query. It also allows for optional settings such asTTLandCOALESCE.
stable-260226
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
sqlparserASTs. - dddd9a9: Added support for the PostGIS
POLYGONdata 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
sqlparserfor 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
PRIMARYorUNIQUEkey 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 ENTRIEScommand to display metadata about cached entries, including last accessed time, refresh time, and execution duration. Supports aWHERE query_idfilter andLIMITclause. - 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
AUTOCOMMIThandling during transactions. - 5e96e21: Fixed the shallow cache
COALESCEsetting 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
POLICYkeywords) 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 QUERIEScommand to display proxied queries suitable for shallow caching. The query IDs shown can be used to create caches viaCREATE CACHE FROM <QUERY_ID>. - 14ec787: Fixed a bug where arrays with incompatible element types (e.g.,
INTEGERandDATE) were silently accepted instead of being rejected atCREATE CACHEtime. - 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 withNULLon empty tables.
Thank you to the following community contributors to this release:
@ahmed-kamal2004, @egoldschmidt
stable-260122
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-uuidoption to set a server UUID in MySQL. This UUID is now reported inSHOW REPLICAS. - a92eace: Fixed potential out-of-memory (OOM) errors by rejecting queries with parameterized
INpredicates 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
WHEREclauses (e.g.,WHERE COALESCE(col, TRUE)orWHERE JSON_OVERLAPS(col, '[42]')). - cc815c1: Fixed incorrect schema resolution for unqualified tables in
JOIN ONclauses 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
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 TABLEandALTER 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 EVICTIONcommand, allowing dynamic updates to eviction memory limits and periods. - 5f5815d: Added the
SHOW REPLAY PATHScommand 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_insertandjsonb_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_SECONDSto configure timeout for long-running table operations such as compaction. - 141279b: Allow more computed expressions in join
ONpredicates when they reference a single table (e.g.ON length(col) < 10now 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
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
NULLvalues in accumulating aggregation functions such asgroup_concat(). - 0d21ebc: Add base support for the PostgreSQL accumulating aggregation function
array_agg(). - 3bcc180: Support the
DISTINCTkeyword in accumulating aggregation operations. - a68bb75: Handle
ORDER BYclauses 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](whereunit= seconds, minutes, hours, days, months, or years). This function is primarily intended for use inGROUP BYand 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
--verifyflag can be used to run only the verification checks and then exit, while--verify-skipcan be used to skip verification checks and continue normal startup. - 1eddd77: Ensure
EXPLAIN LAST STATEMENTreports 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
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
TIMEtypes without microseconds. - b5ceef6: Added the
--report-host,--report-port,--report-user, and--report-passwordarguments to ReadySet. These are used to show the replica parameters when runningSHOW REPLICASon the master database. - e85ff4e: Overhauled
SHOW READYSET TABLESto 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
TIMEvalues in MySQL. - 99fb980: Correctly handled optimized
TIMEbinary format values when the value is'00:00:00'. - 3ad3182: Updated
DROP TABLEso that it also removes queries referencing dropped tables from the output ofSHOW PROXIED QUERIES. - 8f0a0e0: Updated
SHOW READYSET STATUSto 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-certwhen running in PostgreSQL mode.
stable-250828
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
LATERALsubqueries. - 6a8e0cc: Fixed an issue allowing snapshotting of PostgreSQL tables where a column of a custom type is declared
NOT NULLwithout 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, ..}])wherefunctionis one ofCOUNT,SUM,AVG,RANK,DENSE_RANK,ROW_NUMBER,MIN, orMAX. - a9dee68: Added a new collation that emulates MySQL’s
latin1_swedish_cicollation. - faa2671: The log level can be set at runtime using the
ALTER READYSET SET LOG LEVELstatement or the/log_levelHTTP endpoint. For example:ALTER READYSET SET LOG LEVEL 'info,readyset_adapter=debug'orcurl -X POST -d 'info,readyset_adapter=debug' http://readyset:6033/log_level.
stable-250724
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-presetCLI option andPARSING_PRESETenvironment variable to configure how mismatches betweennom-sqlandsqlparser-rsparsing are handled. It defaults toprefer-nom, which parses with bothnom-sqlandsqlparser-rs, logs a warning if they don't agree, and uses the AST produced bynom-sql. To disable parsing withsqlparser-rs, useonly-nom. To test experimental query support for syntax not supported bynom, useprefer-sqlparseroronly-sqlparser. - 373001a: Rate-limit logging of
nom-sql/sqlparser-rsmismatches, configurable by thePARSING_LOG_RATE_LIMIT_SECSenvironment variable. By default, warnings for mismatches are logged at most once per minute. Setting the environment variable to0disables 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_TABLESenvironment variable or the--max-parallel-snapshot-tablesCLI option. - 5014c8c: Add support for arbitrarily large
DECIMALandNUMERICvalues, enabling replication and use of the full range allowed by MySQL and Postgres for these columns. This also fixes an issue with replicatingNaNvalues, which will now work as expected. - c863ca4: Improve logging when restarting the replicator to print the last replication position.
- 1845204: If Readyset receives a
SETstatement 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
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 PostGISgeometry(point)data type. - dc97c03: Respect
@@character_set_resultswhen returninglatin1andcp850text columns in MySQL.SET NAMESand\Calso work, but do not yet affect collation in lookups. - 833b7b3: Support replication of PostgreSQL
tsvectordata types. Readyset intentionally discards the data, as we will not supporttsvectorqueries in the product. - 517d2f3: Avoid re-snapshotting tables when a user executes an
ALTER TABLE ADD KEYstatement. - f2dce14: Fix a bug that caused errors when attempting to create duplicate caches.
- 4644765: Fixed an issue where a
CREATE CACHEusing 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 withWHERE ... = ..... - a925ea9: Fixed a bug in the TopK feature that caused incorrect behavior when the
ORDER BYcolumn contained non-unique values.