V1.2.0
Version information
-
Release date: March 25, 2026
-
Version: V1.2.0
-
RPM package: seekdb-1.2.0.0-100000222026032420
Overview
seekdb V1.2.0 is a major milestone that takes seekdb from a single-node database toward a high-availability architecture. This release delivers primary–standby replication for stronger disaster recovery, Fork Database for whole-database versioning, and Diff & Merge syntax for Git-style branch comparison and merging. Under the hood, internal refactoring plus vector and full-text optimizations make the database more dependable and faster for enterprise workloads.
New features
Primary and standby databases
seekdb's first high-availability offering is asynchronous primary–standby replication in maximum-performance mode. Replication uses gRPC for RPC. You can copy baseline data at any time and stream incremental logs afterward. If the primary becomes unavailable (planned or not), the standby can take over with lossless switchover or lossy failover, cutting downtime and addressing single-point-of-failure risk while meeting enterprise expectations for data safety and DR.
Highlights:
- Asynchronous standby provisioning: Add a standby at any time without stopping the primary.
- Near real-time log sync: The standby pulls incremental logs from the primary over the network.
- Lossless switchover: Used when the primary (upstream) is still reachable; verifies log completeness before cutover.
- Lossy failover: Used when the primary is gone; enables emergency takeover.
- Switchover verify: Validates switchover commands and runs checks only. No data or role changes are applied.
- Cascading standbys: Supports chains such as primary → standby 1 → standby 2.
- Loosely coupled topology: Standbys know the primary; the primary does not track standbys. One primary, multiple standbys.
Limitations:
- Standby reads: Standbys are read-only; schema and replication lag can make reads slightly behind the primary.
- Vector reads on standby: Not fully supported yet; will improve in a future release.
- Reads after standby restart: Sync positions are not fully persisted; reads may appear to "go backward" after a restart.
- Applications after switchover/failover: Connection strings must be updated to point at the new primary.
Fork Database
V1.1.0 added Fork Table: fast, size-independent copies for AI coding, knowledge bases, A/B tests, and other multi-version workflows. V1.2.0 extends that with Fork Database: at a snapshot time chosen by the system, seekdb creates a target database that matches the source's logical state at that moment. All user tables and rows are included. The fork is a normal database you can read and write. Use it when you need whole-database versioning, not just single tables.
Highlights:
- Single snapshot across the database: All tables in the fork share one fork snapshot, so joins and foreign keys stay logically consistent after the fork.
- Inherited database settings: The target inherits charset, collation, and other database-level properties from the source.
- Empty databases: You can fork a source with no user tables; the result is an empty target.
- Multiple forks: Fork the same source to different targets as often as needed; each fork uses its own snapshot and is independent.
- Foreign keys: Table-level foreign keys inside the source database are preserved and enforced in the target. Cross-database foreign keys are omitted during fork and are not created in the target.
Limitations:
- Objects not forked: Procedures, functions, triggers, sequences, and statistics metadata are not included in Fork Database.
Table Diff & Merge
Diff & Merge brings Git-like workflows to data: branch, diff, and merge. The three pillars are Fork (copy data), DIFF (compare), and MERGE (merge by policy). Typical uses include validating AI-generated changes before production, isolating parallel development branches, reconciling experiment outputs, and iterating on model training data. Compared with ad hoc scripts, changes become observable and controllable, making them safer, auditable, and easier to collaborate on.
Improvements
DDL sampling with incremental data
Before V1.2.0, building vector or full-text indexes after bulk loads could skew because DDL sampling ignored incremental data, causing uneven parallel builds and long tail latency. V1.2.0 improves sampling (including row-based and hybrid sampling) so estimates track real data better, parallel work splits more evenly, and index builds finish faster.
Vector index concurrent writes
Coarse read/write locking on HNSW indexes is removed so DML can run concurrently, improving throughput (QPS).
Full-text search performance
Top-K and incremental-data paths are optimized via a lightweight advance_scan in the storage layer, tuned BM25 parameters, and better algorithms for incremental queries. In tests, this optimization improved Top-K query performance by up to about 80% in some pure incremental scenarios; mixed workloads also improved noticeably.
System architecture
The kernel drops unused multi-tenant and distributed code paths, simplifying the codebase, lowering overhead, and easing operations.
Bug fixes
Vector index
- Fixed error -4016 when dropping an index. (c9cb3c49)
- Ensured
need_res_cntin vector queries respectsFIXED_MAGNIFICATION_RATIO_EACH_ITERATIVE. (1d6444cc) - Corrected
complete-datahandling on the brute-force search path. (853efa1a) - Resolved a hang when dropping an index after offline DDL failure. (0122f92b)
- Fixed offline DDL failures when rebuilding IVF indexes and hangs during vector index drop. (71a4c616)
- Fixed HNSW scan iterator and memory cleanup on error paths in
create_vec_hnsw_lookup_tree. (b5e98215) - Fixed
set_force_partitionbehavior. (7d14e905)
Full-text search
- Full-text build jobs no longer stall after a hidden internal table is removed. (42c0d191)
- Fixed concurrency issues when loading the IK tokenizer dictionary. (b5d96efa)
macOS
- Build fixes on macOS. (c227b311)
- Trigger error handling on macOS. (6fdedbcc)
- PL/SQL exception handlers now catch errors correctly on macOS ARM64. (215df8fd)
- Fixed
current_time()uint64 underflow that could cause query timeouts on macOS. (33e0c3de) - Resolved ambiguous
max()calls inob_partition_range_spliter.cpp. (ffff1640)
Other
- Fixed -4016 during tablet deletion. (738cdd55)
- Fixed DML remove-locker behavior. (4cb9dde6)
- Fixed non-convergence in a conversion path. (dcf7be66)
gather_schema_statsno longer incorrectly skipsOB_NOT_SUPPORTED. (b47d6460)
Upgrade notes
- In-place upgrade from V1.0.x or V1.1.0 to V1.2.0 is not supported. Use a logical migration with OBDUMPER/OBLOADER or mysqldump.
For step-by-step instructions, see Upgrade seekdb with mysqldump.
Related components
| Category | Component | Version | Notes |
|---|---|---|---|
| SDK | pyseekdb | V1.2.0 | |
| SDK | seekdb-js | V1.2.0 | |
| Import/export | ob-loader-dumper | V4.3.5 | Direct load not supported |
| Deployment | OBD | V4.3.0 |