Skip to main content

Crate stoolap

Crate stoolap 

Source
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

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 CompactVec containing 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.