Skip to content

Releases: maxpert/marmot

v2.9.9-beta

14 Feb 12:43

Choose a tag to compare

v2.9.9-beta Pre-release
Pre-release

What's Changed

🐛 Bug Fixes

  • Parameterized query extraction for binary data safety
  • MySQL/Drupal compatibility improvements
  • Strip MySQL column COLLATE and COMMENT in CREATE TABLE transpilation

🧹 Maintenance

  • correct beta version to v2.9.0-beta

📦 Other Changes

  • build: move to Go 1.26 + Green Tea GC and bump project to v2.1.0-beta
  • Add replicated LOAD DATA LOCAL INFILE with replica forwarding
  • transpiler/cdc: wire schema-aware upsert conflicts and remove forced WAL checkpoints
  • replica: make forwarded writes leader-transparent and idempotent

Full Changelog: v2.9.8-beta...v2.9.9-beta

v2.9.8-beta

28 Jan 12:55

Choose a tag to compare

v2.9.8-beta Pre-release
Pre-release

What's Changed

🐛 Bug Fixes

  • Forward handler missing InTransaction and CommittedTxnId

Full Changelog: v2.9.7-beta...v2.9.8-beta

v2.9.7-beta

28 Jan 12:48

Choose a tag to compare

v2.9.7-beta Pre-release
Pre-release

What's Changed

🐛 Bug Fixes

  • Schema version not incremented on followers for CREATE/DROP DATABASE
  • Return LastInsertId in write forwarding response

Full Changelog: v2.9.6-beta...v2.9.7-beta

v2.9.6-beta

28 Jan 03:46

Choose a tag to compare

v2.9.6-beta Pre-release
Pre-release

What's Changed

🚀 New Features

  • Signal-based CDC notification for replica streaming

🐛 Bug Fixes

  • CREATE/DROP DATABASE forwarding and cleanup dead code
  • Skip transpilation for forwarded queries from replica
  • Write forwarding improvements and stream client robustness

Full Changelog: v2.9.2-beta...v2.9.6-beta

v2.9.2-beta

27 Jan 13:52

Choose a tag to compare

v2.9.2-beta Pre-release
Pre-release

What's Changed

🐛 Bug Fixes

  • DDL streaming replication - persist DDL to CDC storage
  • CREATE/DROP DATABASE via write forwarding now available immediately

Full Changelog: v2.9.1-beta...v2.9.2-beta

v2.9.1-beta

26 Jan 14:08

Choose a tag to compare

v2.9.1-beta Pre-release
Pre-release

What's Changed

🐛 Bug Fixes

  • CREATE DATABASE via write forwarding fails with syntax error

Full Changelog: v2.9.0-beta...v2.9.1-beta

v2.8.0

26 Jan 01:36

Choose a tag to compare

What's Changed

🚀 New Features

  • Add -daemon flag for background process mode
  • Add file-based logging with rotation support

🐛 Bug Fixes

  • Add missing logging options to config.toml
  • Release workflow version naming and Linux uploads

📦 Other Changes

  • ci: release assets to GitHub Releases on workflow_dispatch events too

Full Changelog: v2.7.2...v2.8.0

v2.7.2

25 Jan 19:49

Choose a tag to compare

What's Changed

🚀 New Features

  • Wire up new admin endpoints in dashboard UI
  • Add new admin API endpoints for improved observability
  • Add auto-release workflow for tag-based releases

Full Changelog: v2.7.1...v2.7.2

v2.7.1

25 Jan 01:20

Choose a tag to compare

Highlights

This release brings major performance improvements, enhanced replica capabilities with transparent failover, and significant telemetry enhancements for production observability.

🚀 New Features

Replica Enhancements

  • Transparent Failover: Read-only replicas now automatically failover between cluster nodes when disconnected
  • Cluster Discovery: Replicas can discover new cluster nodes dynamically
  • Per-Database Snapshots: Support for snapshotting individual databases instead of full cluster state
  • TxnID-Ordered Streaming: Ensures replica correctness during failover scenarios

Performance & Compression

  • Zstd Compression: Added zstd compression for gRPC cluster communication (configurable compression level)
  • Deferred CDC Payload: CDC data now deferred from PREPARE to COMMIT phase, reducing network overhead
  • Binary Intent Key Encoding: More efficient storage format for transaction intents

Telemetry & Observability

  • Comprehensive Prometheus metrics improvements
  • Better gap detection and reporting
  • Enhanced logging for debugging replication issues

SQLite Enhancements

  • Session-Level Transpilation Toggle: Control MySQL-to-SQLite transpilation per session
  • SQLite Extension Loading: Support for loading SQLite extensions at runtime
  • Time-Limited Incremental Vacuum: Automatic WAL checkpoint with configurable vacuum duration
  • Unix Socket Support: MySQL server can now listen on Unix sockets

DML Determinism Detection

  • Automatic detection of non-deterministic DML statements
  • Warnings for statements that may produce different results across nodes

⚡ Performance Improvements

  • In-Memory Intent Tracking: Replaced Pebble-based intent locks with in-memory RowLockStore for faster conflict detection
  • Optimized Commit Path: Removed redundant validation, added DDL flush barriers
  • Eliminated O(N) Random Seeks: New intent storage schema with efficient key layout
  • Batched CDC Application: CDC entries wrapped in single SQLite transaction
  • Consolidated Pebble Key-Building: Generic helpers reduce code duplication and improve performance

🐛 Bug Fixes

  • Replica Snapshot Verification: Fixed mismatch where __marmot_system was included in verification list but not sent (replicas maintain their own system DB)
  • UPSERT Replication: Fixed CDC type override breaking UPSERT operations
  • Startup Deadlock: Fixed deadlock in wireGCCoordination during node startup
  • GC/Anti-Entropy Interval: Enforced GC interval >= anti-entropy interval to prevent stale watermark decisions

🧹 Code Quality

  • Migrated from deprecated grpc.DialContext to grpc.NewClient
  • Removed 250+ lines of dead code and unused dependencies
  • Updated outdated dependencies
  • Cleaned up unused config fields and parameters

📖 Documentation

  • Updated README with new replica failover configuration
  • Added per-database snapshot configuration docs
  • Improved example scripts with auto-generated configs and PSK authentication

Breaking Changes

None - this release is backward compatible with v2.4.x configurations.

Upgrade Notes

  1. Replica Users: Existing replicas will automatically benefit from the snapshot fix
  2. Compression: To enable zstd compression, set compression_level in [grpc_client] config (0=disabled, 1=fastest, 4=best)
  3. Vacuum: Configure vacuum_time_limit_seconds in [replication] to control incremental vacuum duration

v2.6.0

19 Jan 22:34

Choose a tag to compare

What's Changed

  • Feature/per database snapshots by @maxpert in #144
  • Correct rqlite comparison by @otoolep in #146
  • Deferred CDC payload support for large mutations by @maxpert in #147
  • Feat: Add determinism detection for DML statement replication by @maxpert in #148

New Contributors

Full Changelog: v2.4.2...v2.6.0