Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

238 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

River

River is a relational database implemented in Java. Its target is a high-performance, crash-safe single-node database with SQL and JDBC access, followed by a replicated journal and operational failover.

Current capabilities

Storage and recovery:

  • Durable control files, Write-Ahead-Log (WAL), group commit, checkpoints and WAL rotation.
  • Multi-page heap storage and multi-level B+trees.
  • Unique, duplicate-secondary and nullable indexes.
  • Recovery of committed operations before page flush.
  • Torn-checkpoint-page repair and corruption rejection.
  • Quiescent backup/restore and offline physical inspection.

Transactions:

  • Concurrent MVCC sessions.
  • Read committed, repeatable read and serializable isolation.
  • Atomic multi-row writes and index/catalog visibility.
  • Key and range locks, deadlock resolution and conflict handling.
  • Statement rollback and nested named savepoints.
  • Version reclamation, vacuum and bounded version-pressure admission.

Relational and SQL:

  • Transactional tables, columns, indexes, views, sequences and identities.
  • BIGINT, nullable values and compact VARCHAR(7).
  • Defaults, generated identities, NOT NULL, CHECK, UNIQUE and foreign keys.
  • Multi-row insert, update and delete.
  • Indexed and unindexed predicates, ranges, IN, OR and conjunctions.
  • Inner and left joins.
  • Sorting, disk spill/merge, DISTINCT, grouping, HAVING, counts, sums and extrema.
  • Derived tables, scalar subqueries, EXISTS, membership and correlated nested queries.
  • EXPLAIN and EXPLAIN ANALYZE.

Build and validation

JDK 25 is required. Run the complete initial-phase validation locally:

./verify

The command uses the checksum-pinned Gradle wrapper and an isolated repository-local Gradle home, then runs a clean compile, static source policy, module dependency checks, and all tests.

About

An RDBMS built as an extensible testbed. Initially for fast reliable SQL on a single machine. It stores tables and indexes on disk, records changes before it commits them, and recovers cleanly after a crash. It supports concurrent transactions, isolation levels, savepoints, and basic SQL - joins/groups/sorts/nested queries

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages