Releases: readysettech/readyset
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.
stable-250522
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
charcolumns 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_AsTextandST_AsWKTfunctions. - c0431ce: Added basic support for the
Pointspatial type in MySQL. - 65eda6c: Support using aliased aggregates in
ORDER BYclause when TopK feature flag is enabled.
stable-250424
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
INSERTstatements 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
INlist 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.