Releases: readysettech/readyset
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.
stable-250327
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:passwordpairs in the--allowed-usersparameter. - 418911e: Added support for builtin functions
json[b]_object_aggandjson_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/socketto 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
=andINoperators, 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 WHENsyntax:CASE <expr> WHEN <expr> THEN <expr> - a3ed35a: Add support for
STRAIGHT_JOINas 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:00date 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_QUITcommand 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
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 viaALTER READYSET ADD TABLES. - 58eb5c0: Improve PostgreSQL wire protocol compatibility by appropriately responding to an empty query with an
EmptyQueryResponsemessage. - 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_objectand MySQL builtin functionjson_object. - Correct/optimized support for
postgresunnamed prepared statements. - Optimization in decoding
postgresprepared statements messages yields 10% throughput improvement.