Releases: readysettech/readyset
stable-241212
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
- 5e641aa: Fix an issue to forward COM_PING to backend connection to keep the connection alive.
- 81db6af: Fix issues that prevent us from connecting and replicating from a MySQL 5.7 instance.
- 42e7080: Improve the performance of replication by discarding unnecessary events earlier in the process.
- 1307208: Change query metric's
database_type
tag value toupstream
when serving from an upstream database. - e172765: Add support for snapshotting new tables without requiring a restart of the adapter. The new command accepts a comma list of tables:
ALTER READYSET ADD TABLES <db>.<table_name1>, <db>.<table_name2>
. - 4f09cfe: Improve MySQL snapshot performance by removing the need for exact row count for snapshot.
- 41abc03: Add functionality to remove leftover tables that have being excluded from replication filters.
- 1de382a: Add and correct many of the reported rocksdb metrics.
stable-241024
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
- a9509d4: Add support for
ascii()
function. - 55fc2c4: Add support for parsing the
DATA DIRECTORY
option from theCREATE TABLE
statement in MySQL. - 8a84857: Added support for re-snapshot of tables. A new SQL command
ALTER READYSET RESNAPSHOT TABLE table_name
was added to trigger re-snapshot of tables on demand. - 233a70d: Better messaging when clients disable
autocommit
. - 7c2b78d: Allow some MariaDB clients to connect correctly to
readyset
. - 821daaa: Remove hidden
--allow-unsupported-set
flag, replaced by--unsupported-set-mode allow
. - 770ee5c: Set the schema search path to a standard default when using
--no-upstream-connections
. - 278277a: Accept more values for the PostgreSQL session varaible
extra_float_digits
. - 8bfe6bf: Add distinctly greppable log messages for cache creation and removal.
- c70bcea: Fix bug where cached queries that use table aliases are not found after restart.
stable-240919
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
- ca6d7c0: Clean up working dir files on start up to ensure no disk space is leaked after a crash.
- 571f586: Fix a bug in distributed readyset where
readyset-server
will fail on startup due to a missingworking_dir
. - a0ebfa6: Add
SHOW READYSET ALL TABLES
syntax, which shows all upstream tables, regardless of whether Readyset is replicating them or not.SHOW READYSET TABLES
now only displays tables that Readyset is actively replicating. - 8cc18b1: Fix bug affecting
pgjdbc
clients where binary-formatted timestamp columns in result sets are interpreted incorrectly. - 65a6436: Delete deprecated argument --db-dir (env: DB_DIR), which has long been replaced with --storage-dir (env: STORAGE_DIR).
- 65a6436: Delete deprecated argument --standalone (env: STANDALONE), which has long been replaced with --deployment-mode standalone (env: DEPLOYMENT_MODE=standalone).
- 65a6436: Delete deprecated argument --embedded-readers (env: EMBEDDED_READERS), which has long been replaced with --deployment-mode embedded-readers (env: DEPLOYMENT_MODE=embedded-readers).
- ae90f73: Delete deprecated argument --allow-full-materialization (env: ALLOW_FULL_MATERIALIZATION), which has been temporarily replaced with --experimental-full-materialization (env: EXPERIMENTAL_FULL_MATERIALIZATION).
- ae90f73: Delete deprecated argument --enable-experimental-mixed-comparisons (env: EXPERIMENTAL_MIXED_COMPARISONS_SUPPORT), which has been temporarily replaced with --experimental-mixed-comparisons (env: EXPERIMENTAL_MIXED_COMPARISONS).
- ae90f73: Delete deprecated argument --enable-experimental-paginate-support (env: EXPERIMENTAL_PAGINATE_SUPPORT), which has been temporarily replaced with --experimental-pagination (env: EXPERIMENTAL_PAGINATION).
- ae90f73: Delete deprecated argument --enable-experimental-post-lookup (env: EXPERIMENTAL_POST_LOOKUP_SUPPORT), which has been temporarily replaced with --experimental-post-lookup (env: EXPERIMENTAL_POST_LOOKUP).
- ae90f73: Delete deprecated argument --enable-experimental-straddled-joins (env: EXPERIMENTAL_STRADDLED_JOIN_SUPPORT), which has been temporarily replaced with --experimental-straddled-joins (env: EXPERIMENTAL_STRADDLED_JOINS).
- ae90f73: Delete deprecated argument --enable-experimental-topk-support (env: EXPERIMENTAL_TOPK_SUPPORT), which has been temporarily replaced with --experimental-topk (env: EXPERIMENTAL_TOPK).
- ec0953b: Rename --experimental-full-materialization (env: EXPERIMENTAL_FULL_MATERIALIZATION) to --feature-full-materialization (env: FEATURE_FULL_MATERIALIZATION).
- ec0953b: Rename --experimental-mixed-comparisons (env: EXPERIMENTAL_MIXED_COMPARISONS) to --feature-mixed-comparisons (env: FEATURE_MIXED_COMPARISONS).
- ec0953b: Rename --experimental-pagination (env: EXPERIMENTAL_PAGINATION) to --feature-pagination (env: FEATURE_PAGINATION).
- ec0953b: Rename --experimental-post-lookup (env: EXPERIMENTAL_POST_LOOKUP) to --feature-post-lookup (env: FEATURE_POST_LOOKUP).
- ec0953b: Rename --experimental-straddled-joins (env: EXPERIMENTAL_STRADDLED_JOINS) to --feature-straddled-joins (env: FEATURE_STRADDLED_JOINS).
- ec0953b: Rename --experimental-topk (env: EXPERIMENTAL_TOPK) to --feature-topk (env: FEATURE_TOPK).
- ec0953b: Rename --experimental-placeholder-inlining (env: EXPERIMENTAL_PLACEHOLDER_INLINING) to --feature-placeholder-inlining (env: FEATURE_PLACEHOLDER_INLINING).
- ec0953b: Rename --experimental-materialization-persistence (env: EXPERIMENTAL_MATERIALIZATION_PERSISTENCE) to --feature-materialization-persistence (env: FEATURE_MATERIALIZATION_PERSISTENCE).
- f686412: Enable Full Materialization by default (can be disabled with
--feature-full-materialization false
(env:FEATURE_FULL_MATERIALIZATION=false
)). - cd2b828: Add support for
length
,char_length
,character_length
andoctet_length
functions.
stable-240829
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
- b4d3824: Added support for generated columns in MySQL.
- eece0a2: Fixed a bug which caused tables with foreign keys to be recreated during the second start of Readyset when the reference table schema was not set.
- e487654: Added a functionality to abort replication of MySQL tables that receive DML events in STATEMENT binlog format.
- 3863967: Add configurable option to store fully materialized node data to disk rather than in memory.
- 744da69: Match MySQL behavior for padding and trimming
CHAR
columns. Spaces are added to the end on writes to bring the value to the length specified for the column, and all spaces are from the end on reads. - ffef32a: Added a new
--cdc-db-url
parameter to allow users to specify a separate database URL for the CDC user (used for snapshot and replication). This user can be a different user than the upstream user (used to proxy application queries). This allows users to have a specific user for replication with required privileges, without having to give extra privileges to the application user. - 5ad86b7: Fixed a MySQL snapshot issue when using multi-column keys. In some cases, the snapshot could fail.
- 7b21d2e: Fixed a bug with replicating
DATE
columns causing lookups into caches keyed onDATE
columns to return no results. NOTE: Readyset instances already replicating tables withDATE
columns should be reset to trigger a resnapshot in order to avoid this bug affecting existing data. - 3988524: Add metrics for updates and lifetimes of entries in the reader cache.
- 7094779: Fixes an issue where the MySQL replicator fails to match rows when the table has
JSON
fields, causing the record to become stalled.
stable-240725
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
- f680752: New option
--disable-create-publication
to skip creating a publication. Used when readyset is not running as a superuser and the publication has been created manually. - 7bf77a8: More accurately report the size of a persistent node by including the size of open memtables.
- 7b0063b: Fixed correctness of MySQL timestamp handling. Now MySQL timestamps are correctly converted to UTC during snapshot/replication, and converted to local time when read from the database.
- aa615dd: Now properly shutting down the
rocksdb
WAL at process exit. - 2d185a6: Fixes the microsecond precision of
DATETIME
columns in MySQL that sometimes were not being correctly represented in Readyset. - a4687e2: Enhance MySQL snapshot to use Primary Key or unique key when available. This makes the snapshot less intrusive than a
SELECT *
(Full Table Scan) for large tables. - 788f107: Handle hexadecimal
x'...'
and0x...
literals.
stable-240627
Release Notes
ReadySet is currently released as a docker container. See the Install with Docker documentation for instructions. It can also be installed from an x86_64/amd64 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
- d169608: Correctly handle escaped quotes in table column comments.
- 383d1e3: Implemented hash join capability for joins using generated columns, resulting in drastically increased performance for those join operations.
- 6680692: Added collation support for storing
CHAR
andBINARY
columns in MySQL using the correct padding. This fixes an issue when looking upCHAR
/BINARY
columns with values that do not match the column length. - 614a6ee: Fixed a bug where queries that already had caches were sometimes stuck in the
SHOW PROXIED QUERIES
list.
stable-240523
Release Notes
ReadySet is currently released as a docker container. See the Install with Docker documentation for instructions. It can also be installed from an x86_64/amd64 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
- e28a872: Added support for
TRUNCATE TABLE
statements for MySQL. - 1b1c370: Adjusted MySQL replicator to report table position at a fixed interval (10 seconds). This makes the replicator keep distance short between min and max positions. This is useful when
readyset
restarts, ensuring that we do not have to re-stream a lot of binary logs to catch up. - ab89ea3: Allow parameterizing
WHERE IN
clauses when the query contains aggregations. - 6665713: Added support for MySQL's
MEDIUMINT
column type. - a04f066: Adjusted replicators terminology to be compatible with MySQL 8.4.
- 5fca15b: Added support for MySQL Binlog Transaction Compression. This feature allows MySQL to compress the binlog events requiring less network bandwidth and storage space. readyset is now able to decompress the binlog events and process those events.
stable-240425
Release Notes
ReadySet is currently released as a docker container. See the Install with Docker documentation for instructions. It can also be installed from an x86_64/amd64 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
- 2aca4d1: Significantly improved warm read performance for certain queries that return timestamps.
- 995e70f: Enabled thin link time optimization in release builds, generally improving performance by
about 10%. - 35d04ac: Add the capability to connect to a specific MySQL database as part of the connection.
- 2e96db6: Add support for the PostgreSQL
date_trunc
built-in function. - 1a1684e: Allow BC timestamps without a time zone.
Fixes
- d6a6405: Fixed a bug with handling
DEALLOCATE
statements within a transaction. - deb2d62: Adjusted the MySQL initial handshake salt generation function to restrict the range of
random characters. This fixes a JDBC driver issue that randomly fails to connect to Readyset. - 26ade70: Fixed an issue where Readyset incorrectly returned results from range queries against
NULL
keys. - 84226b0: Fixed an issue where
NULL
values were included in range queries that were unbounded
from below. - c9e9b38: Fixed a bug where Numeric
NaN
values were being incorrectly snapshotted as0
. - 45d89b7: Fixed a bug where the replicator would unnecessarily restart after handling an error in replication.
stable-240328
Release Notes
ReadySet is currently released as a docker container. See the Install with Docker documentation for instructions. It can also be installed from an x86_64/amd64 deb
package for Ubuntu 22.04 and Debian 12. See package installation instructions.
What's New
- ca9856b: Add support for MySQL
COM_RESET_CONNECTION
command. - 7c8a1b7: Add support for MySQL
COM_CHANGE_USER
command. - 22f8532: Readyset now streams proxied results from postgres for queries using the simple query protocol similarly to how it already does for the extended query protocol. This vastly reduces the memory consumption for text-protocol queries as well as improves performance of them in many cases.
- 7a14b00: Support timestamps in prepared statements from the Java PG driver,
pgjdbc
.
Fixes
stable-240229
Release Notes
ReadySet is currently released as a docker container. See the Install with Docker documentation for instructions. It can also be installed from an x86_64/amd64 deb
package for Ubuntu 22.04 and Debian 12. See package installation instructions.
What's New
- 048fd4b: Added support for the autoparameterization of range queries
- a67c2f6: Added support for the autoparameterization of negative numbers
- ecc1820: Added the cache name as a label on the metrics Readyset emits for queries against caches
- 47ae35e: Added a feature flag to reduce the number of expensive domain metrics Readyset emits in production deployments
- 7a00dbb: Readyset now supports the
DEALLOCATE
SQL statement for both postgres and mysql. - d571afd: Removed labels from certain metrics that had very high cardinality to reduce the cost of ingesting and plotting metrics
- f0d1228: Simplified the metrics Readyset emits to keep track of internal state size
- 511d6bc: Added a new
cache_name
label to various metrics to improve debuggability - b08683d: Simplified the metrics Readyset emits to count the number of times it starts up
- 6c3809b: Removed an expensive domain-related metric that duplicated pre-existing metrics
- b3c0d46:
REPLICATION_SERVER_ID
can now be configured to use alphanumeric characters for postgres.
Fixes
- 301f78f: Fixed an issue where Readyset was not correctly handling entries in the
GROUP BY
clause that identified columns by their position in the column list of the query - 8b4ae75: Fixed an issue where Readyset evaluated certain expressions incorrectly
- a36d8da: Fixed an issue where caches were not queryable after restarts in certain cases
- 7bc9b5b: Fixed an issue where query log metrics were not being emitted for certain proxied queries
- 0d4d2ff: Fixed an issue where the wrong metric was being emitted to count the number of misses during a replay.