Expand description
§Stoolap - High-performance embedded SQL database
Stoolap is a modern embedded SQL database written in pure Rust. It provides full ACID transactions with MVCC, a sophisticated cost-based query optimizer, and features that rival established databases like PostgreSQL and DuckDB.
§Key Features
- MVCC Transactions - Full multi-version concurrency control with snapshot isolation
- Multiple Index Types - B-tree, Hash, and Bitmap indexes (auto-selected by data type)
- Multi-Column Indexes - Composite indexes for complex query patterns
- Cost-Based Optimizer - PostgreSQL-style optimizer with adaptive execution
- Parallel Query Execution - Automatic parallelization using Rayon
- Semantic Query Caching - Intelligent result caching with predicate subsumption
- AS OF Temporal Queries - Built-in time-travel queries
- Window Functions - ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD, NTILE, etc.
- CTEs - Common Table Expressions including recursive CTEs
- 101+ Built-in Functions - String, math, date/time, JSON, aggregate, window
§Quick Start
use stoolap::api::Database;
// Open in-memory database
let db = Database::open_in_memory().unwrap();
// Create a table
db.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)", ()).unwrap();
// Insert data
db.execute("INSERT INTO users VALUES (1, 'Alice', 30), (2, 'Bob', 25)", ()).unwrap();
// Query with window function
let rows = db.query("
SELECT name, age, RANK() OVER (ORDER BY age DESC) as rank
FROM users
", ()).unwrap();§Modules
api- Public database interface (api::Database)core- Core types (DataType,Value,Row,Schema,Error)storage- Storage layer with MVCC, indexes, and expressionsparser- SQL parserfunctions- 101+ SQL functions (scalar, aggregate, window)executor- Query executor with parallel executionoptimizer- Cost-based query optimizer with cardinality feedbackcommon- Utilities (BufferPool, I64Map, version)
Re-exports§
pub use core::DataType;pub use core::Error;pub use core::IndexEntry;pub use core::IndexType;pub use core::IsolationLevel;pub use core::Operator;pub use core::Result;pub use core::Row;pub use core::Schema;pub use core::SchemaBuilder;pub use core::SchemaColumn;pub use core::Value;pub use common::BufferPool;pub use common::I64Map;pub use common::I64Set;pub use common::PoolStats;pub use common::SemVer;pub use common::SmartString;pub use storage::AndExpr;pub use storage::BetweenExpr;pub use storage::CastExpr;pub use storage::ComparisonExpr;pub use storage::CompoundExpr;pub use storage::Expression;pub use storage::InListExpr;pub use storage::NotExpr;pub use storage::NullCheckExpr;pub use storage::OrExpr;pub use storage::RangeExpr;pub use storage::Config;pub use storage::PersistenceConfig;pub use storage::SyncMode;pub use storage::EmptyResult;pub use storage::EmptyScanner;pub use storage::Engine;pub use storage::Index;pub use storage::MemoryResult;pub use storage::QueryResult;pub use storage::Scanner;pub use storage::Table;pub use storage::TemporalType;pub use storage::Transaction;pub use storage::VecScanner;pub use storage::BTreeIndex;pub use storage::MVCCEngine;pub use storage::MVCCScanner;pub use storage::MVCCTable;pub use storage::MvccTransaction;pub use storage::RangeScanner;pub use storage::RowVersion;pub use storage::SingleRowScanner;pub use storage::TransactionEngineOperations;pub use storage::TransactionRegistry;pub use storage::TransactionState;pub use storage::TransactionVersionStore;pub use storage::VersionStore;pub use storage::VisibilityChecker;pub use storage::WriteSetEntry;pub use storage::INVALID_TRANSACTION_ID;pub use storage::RECOVERY_TRANSACTION_ID;pub use storage::CheckpointMetadata;pub use storage::WALEntry;pub use storage::WALManager;pub use storage::WALOperationType;pub use storage::DEFAULT_WAL_BUFFER_SIZE;pub use storage::DEFAULT_WAL_FLUSH_TRIGGER;pub use storage::DEFAULT_WAL_MAX_SIZE;pub use storage::deserialize_row_version;pub use storage::deserialize_value;pub use storage::serialize_row_version;pub use storage::serialize_value;pub use storage::IndexMetadata;pub use storage::PersistenceManager;pub use storage::PersistenceMeta;pub use storage::DEFAULT_KEEP_SNAPSHOTS;pub use storage::DEFAULT_SNAPSHOT_INTERVAL;pub use functions::AggregateFunction;pub use functions::AvgFunction;pub use functions::CountFunction;pub use functions::FirstFunction;pub use functions::FunctionDataType;pub use functions::FunctionInfo;pub use functions::FunctionRegistry;pub use functions::FunctionSignature;pub use functions::FunctionType;pub use functions::LastFunction;pub use functions::MaxFunction;pub use functions::MinFunction;pub use functions::ScalarFunction;pub use functions::SumFunction;pub use functions::WindowFunction;pub use functions::AbsFunction;pub use functions::CeilingFunction;pub use functions::CoalesceFunction;pub use functions::ConcatFunction;pub use functions::DenseRankFunction;pub use functions::FloorFunction;pub use functions::IfNullFunction;pub use functions::LagFunction;pub use functions::LeadFunction;pub use functions::LengthFunction;pub use functions::LowerFunction;pub use functions::NowFunction;pub use functions::NtileFunction;pub use functions::NullIfFunction;pub use functions::RankFunction;pub use functions::RoundFunction;pub use functions::RowNumberFunction;pub use functions::SubstringFunction;pub use functions::UpperFunction;pub use executor::CacheStats;pub use executor::CachedPlanRef;pub use executor::CachedQueryPlan;pub use executor::ColumnStatsCache;pub use executor::ExecResult;pub use executor::ExecutionContext;pub use executor::Executor;pub use executor::ExecutorResult;pub use executor::QueryCache;pub use executor::QueryPlanner;pub use executor::StatsHealth;pub use api::Database;pub use api::FromRow;pub use api::FromValue;pub use api::NamedParams;pub use api::ParamVec;pub use api::Params;pub use api::ResultRow;pub use api::Rows;pub use api::Statement;pub use api::ToParam;pub use api::Transaction as ApiTransaction;
Modules§
- api
- Top-level Database API
- common
- Common utilities for Stoolap
- core
- Core types and definitions for Stoolap
- executor
- SQL Executor
- functions
- SQL Function System
- optimizer
- Query optimizer module for cost-based query planning
- parser
- SQL Parser
- storage
- Storage module for Stoolap
Macros§
- compact_
vec - Creates a
CompactVeccontaining the arguments. - named_
params - Create named parameters for SQL queries
- params
- Create a parameter list for SQL queries
- row
- Macro for creating rows conveniently
- validate_
arg_ count - Macro to validate argument count for scalar functions.