Release Notes¶
This page summarizes the changes introduced in each ApexBase release, grouped by functional area.
v1.20.1¶
2026-06-30
- Add dynamic time-based column defaults in
CREATE TABLE, includingDEFAULT CURRENT_DATE,DEFAULT CURRENT_TIMESTAMP,DEFAULT NOW, andDEFAULT UNIX_TIMESTAMP() - Add row-independent DEFAULT expressions, including arithmetic such as
DEFAULT (60 * 60), scalar functions such asDEFAULT LOWER('ACTIVE'), and typed casts such asDEFAULT CAST('2026-01-02' AS DATE) - Add
INSERT DEFAULT VALUESandVALUES(DEFAULT, ...)support so rows can explicitly use declared column defaults - Apply defaults during
INSERTfor omitted columns and explicitDEFAULTvalues, with type-aware output for DATE, TIMESTAMP, string, integer, and floating-point columns - Persist literal, expression-folded, and dynamic default definitions in on-demand table schemas so constraints survive save/reopen cycles
- Store SQL DATE and TIMESTAMP expression values through table and incremental storage paths by mapping them to their numeric backing representation
- Reject DEFAULT expressions that reference table columns or subqueries, keeping defaults row-independent and deterministic except for the supported time functions
- Add Rust and Python regression coverage for dynamic DEFAULT functions, constant-expression folding, cast defaults,
INSERT DEFAULT VALUES,VALUES(DEFAULT, ...), and invalid column-reference defaults - Update Rust crate and Python package version metadata to 1.20.1
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 1 |
| Python Package | 1 |
| Query Engine | 4 |
| Storage Engine | 2 |
| Tests | 1 |
v1.20.0¶
2026-06-23
- Add broad Hive complex SQL support across parser and executor for CTE-heavy ETL workloads,
INSERT OVERWRITE ... PARTITION, Hive-styleLATERAL VIEW,EXPLODE/POSEXPLODE,STACK, and richer expression handling - Add optimized JSON projection fusion for repeated
GET_JSON_OBJECTextraction and Hive array-splitting patterns - Extend query signature detection and fast paths for complex Hive-style query shapes
- Improve aggregation, joins, SELECT, DDL, window execution, Python client, embedded API, and bindings to handle the new SQL coverage
- Add reproducible Hive complex SQL benchmark suite comparing ApexBase and DuckDB, including three large reference SQL workloads
- Add SQLite-equivalent SQL benchmark coverage for the same three Hive workload shapes, with ApexBase, DuckDB, and SQLite result-set equality checks across 100K, 500K, and 1M behavior rows
- Add comprehensive Hive complex SQL, CTE/EXPLAIN/INSERT SELECT, and storage architecture regression tests
- Add coding-agent prerequisite documentation in
precondition.md - Update version metadata to 1.20.0
- Enhance build and release workflows with tag-driven scheduled/manual builds, GitHub Release generation, release-note extraction by tag, historical pure-Python version releases, and Rust historical release backfills
- Simplify docs publishing/release-note generation flow and remove generated comments from release notes
- Simplify installation docs by removing Tool installation and GitHub Pages deployment sections
Changed files by module
| Module | Files changed |
|---|---|
| CI/CD | 2 |
| Project Config | 3 |
| Documentation | 3 |
| Python Package | 1 |
| Python Client | 1 |
| Rust Embedded API | 1 |
| Python Bindings | 1 |
| Query Engine | 9 |
| Storage Engine | 1 |
| Benchmarks | 4 |
| Other | 1 |
| Tests | 3 |
v1.19.1¶
2026-06-11
- Fix macOS arm64 SIGSEGV crash on ApexStorage init via lazy imports (pyarrow, pandas, polars no longer loaded at import time)
- Fix weakref deadlock by switching
threading.Locktothreading.RLockin_InstanceRegistry - Fix CI pytest hangs in cross-process memtable tests
- Fix numeric range mmap scan offset handling in Python bindings
- Remove global warm-query GROUP BY / ORDER BY top-k static cache infrastructure from query executor
- Add pandas 3.x compatibility fixes in
to_pandas() - Rename
invalidate_query_cachestoinvalidate_read_cachesacross storage backend - Add
test_import_stability.pyregression tests and pytest--timeout=120config
Changed files by module
| Module | Files changed |
|---|---|
| CI/CD | 1 |
| Project Config | 2 |
| Documentation | 2 |
| Python Package | 1 |
| Python Client | 1 |
| Python Bindings | 1 |
| Query Engine | 1 |
| Storage Engine | 1 |
| Benchmarks | 4 |
| Other | 1 |
| Tests | 3 |
v1.19.0¶
2026-05-29
- Set up comprehensive MkDocs Material documentation site with GitHub Actions deployment
- Add FLOAT16 vector column type with f16→f32 byte decoding and ndarray/list conversion in Python bindings
- FTS index now backfills rows written through the Python
store()API - Async FTS backfill for tables with >100K rows (background thread, non-blocking)
- FTS backfill reads string columns directly from mmap for zero-copy performance
- Add new documentation pages: concepts, installation, performance, user guides
- Add HTAP roadmap document
- Replace large inline README section with cross-reference to new docs site
Changed files by module
| Module | Files changed |
|---|---|
| CI/CD | 1 |
| Other | 1 |
| Project Config | 2 |
| Documentation | 23 |
| Python Package | 1 |
| Python Client | 1 |
| Python Bindings | 1 |
| Query Engine | 6 |
| Storage Engine | 5 |
| Tests | 4 |
v1.18.0¶
2026-05-20
- Add LIMIT and OFFSET support in SQL queries (parser, executor, Python client)
- Improve index building for streaming batches with batch-size limit
- Add mmap_scan numeric range and string equality filter support with LIMIT/row offset
- Add Python client fast-path cache for projected string equality with LIMIT/OFFSET
- Add
retrieve_projected_by_string_eq_limitfor direct mmap-backed projected scans in Python bindings - Enhance embedded API
register_temp_tablewith LIMIT/OFFSET support and temp directory cleanup
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 1 |
| Python Package | 1 |
| Python Client | 1 |
| Rust Embedded API | 1 |
| Python Bindings | 1 |
| Query Engine | 4 |
| Storage Engine | 2 |
| Other | 1 |
| Tests | 2 |
v1.17.0¶
2026-05-06
- Add temporary table support:
register_temp_tableanddrop_temp_tablefor CSV, JSON, and Parquet files - Temp tables materialize into native .apex format, auto-cleaned on DB drop
- Add window function execution module (
window.rs) - Enhance DuckDB result materialization compatibility (
to_arrow_tableinstead ofto_arrow) - Improve aggregation, join, and SELECT execution paths with temp table awareness
- Add comprehensive temp table tests (CSV, JSON, SQL query access, cleanup, persistence)
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 4 |
| Python Package | 1 |
| Python Client | 1 |
| Rust Embedded API | 1 |
| Python Bindings | 1 |
| Query Engine | 10 |
| Storage Engine | 1 |
| Benchmarks | 1 |
| Tests | 2 |
v1.16.0¶
2026-05-03
- Add COPY TO export support: tables exportable to CSV, TSV, JSON, NDJSON with configurable options
- Add JSON mutation functions: JSON_SET, JSON_INSERT, JSON_REPLACE, JSON_REMOVE
- Add view-aware SQL routing in Python client for persisted views
- Add comprehensive test suite for SQL view, COPY, and JSON operations
- Optimize expression evaluator with string-based LIKE, GLOB, and REGEXP improvements
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 1 |
| Python Package | 1 |
| Python Client | 1 |
| Query Engine | 6 |
| Benchmarks | 1 |
| Tests | 7 |
v1.15.0¶
2026-05-02
- WAL-backed transaction durability: commits write TxnBegin/TxnCommit to per-table WAL with optional fsync
- Adaptive row group size for on-demand storage with narrow/wide table tests
- Add query signature fast paths: projected point lookup, ID batch, full scan, string/numeric range filter
- Zone map-based string filtering to skip irrelevant row groups during equality scans
- Single-pass filtered string aggregation on mmap tables
- Delta string index caching and row count caching for repeated read performance
- Separate write_file and delta_file handles with atomic sync-pending bitmask tracking
- Add
build.rsfor macOS Python library rpath linking - Remove old test infrastructure (
run_tests.py,test/README)
Changed files by module
| Module | Files changed |
|---|---|
| CI/CD | 1 |
| Other | 5 |
| Project Config | 2 |
| Documentation | 4 |
| Python Package | 1 |
| Python Client | 1 |
| Data Layer | 5 |
| Rust Embedded API | 1 |
| Arrow Flight gRPC | 2 |
| Full-Text Search | 1 |
| Library Core | 1 |
| Python Bindings | 4 |
| Query Engine | 18 |
| Scaling & Sharding | 5 |
| PostgreSQL Wire Protocol | 3 |
| Storage Engine | 24 |
| Table Catalog | 5 |
| Transaction Manager | 4 |
| Benchmarks | 1 |
| Build System | 1 |
| Tests | 20 |
v1.14.0¶
2026-03-27
- Add parallel multi-predicate mmap scan with zone map pruning and rayon-based predicate evaluation
- Add parallel column extraction via rayon for 2+ columns and 500+ rows
- Add column projection support to skip unrequested columns during Arrow batch construction
- Add Binary column type support (ColBuf::Bin, ColBuf::FixedVec, BinaryArray output)
- Fix col=value filter pushdown logic with type-specific handling
- Add 3 new benchmarks (numeric IN, OR cross-column, numeric OR)
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 1 |
| Python Package | 1 |
| Query Engine | 2 |
| Storage Engine | 3 |
| Benchmarks | 1 |
v1.13.0¶
2026-03-26
- Fix
ApexClientwithdrop_if_exists=Trueto always create fresh storage instead of reusing shared storage
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 1 |
| Python Package | 1 |
| Python Client | 1 |
v1.12.0¶
2026-03-26
- Add backtick-quoted identifier parsing (
identifier, Hive/MySQL style) to SQL parser - Add unit tests for backtick parsing: SELECT, WHERE, ORDER BY, and unterminated identifier error
- Update docs to document quoted identifier syntax
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 4 |
| Python Package | 1 |
| Query Engine | 1 |
v1.11.0¶
2026-03-18
- Add x86_64 AVX2+FMA SIMD kernels for L2, L1, Linf, inner_product, cosine distance functions
- Improve Windows mmap prefault with 3-tier strategy (single-threaded, rayon-parallel, PrefetchVirtualMemory)
- Add Windows atomic rename retries with backoff, engine cache invalidation before writes
- Increase Windows WAL buffer size from 64KB to 512KB
- Remove
benchmarks/stress_test.py
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 1 |
| Python Package | 1 |
| Query Engine | 1 |
| Storage Engine | 3 |
| Benchmarks | 1 |
v1.10.0¶
2026-03-18
- Drop V3 file format compatibility — all operations require V4 footer
- Replace heap-based GROUP BY with HashMap accumulator supporting SUM/COUNT/AVG
- Add
read_fixed_scattered_optimizedwith row-group batching for FixedList/Float16List scatter reads - Add
bench_filter_group_order.pyandbench_group_by_detail.pybenchmark scripts - Rename internal V3-specific constants (MAGIC_V3→MAGIC, HEADER_SIZE_V3→HEADER_SIZE, etc.)
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 1 |
| Python Package | 1 |
| Python Bindings | 1 |
| Query Engine | 4 |
| Storage Engine | 11 |
| Other | 1 |
| Benchmarks | 2 |
v1.9.0¶
2026-03-17
- Add Rust Embedded API module (
Database/Tablestructs) for pure-Rust usage without Python - Add query signature/caching system for deduplicating identical queries
- Add concurrent query scheduler for parallel batch execution
- Add vectorized hash join implementation
- Add concurrent storage access with shared table handles and multi-client support
- Add FLOAT16_VECTOR column type with f16-quantized storage and all distance metrics
- Add
batch_topk_distancePython API for batched multi-query vector search - Add
execute_batchPython API for parallel SQL execution via scheduler - Add schema evolution:
add_column/drop_columnon existing tables via Rust Embedded API - Add new docs: RUST_EMBEDDED_API.md, FLOAT16_VECTOR_GUIDE.md, ENGINEERING_GUIDELINES.md
Changed files by module
| Module | Files changed |
|---|---|
| CI/CD | 1 |
| Other | 4 |
| Project Config | 2 |
| Documentation | 6 |
| Python Package | 1 |
| Python Client | 1 |
| Data Layer | 1 |
| Rust Embedded API | 1 |
| Library Core | 1 |
| Python Bindings | 1 |
| Query Engine | 14 |
| PostgreSQL Wire Protocol | 1 |
| Storage Engine | 14 |
| Benchmarks | 13 |
| Tests | 5 |
v1.8.0¶
2026-02-25
- Add
vector_ops.rsmodule implementing 6 vector distance functions (L2, L1, Linf, cosine, inner_product, array_distance) - Add TopK vector search via
ORDER BY array_distance(col, [query]) LIMIT k - Add SQL INSERT with vector array literals and string literal auto-coercion
- Add Python
topk_distance()API with 6 distance metrics, custom column names, and numpy support - Add
SQL explode_rename(topk_distance(...))for SQL-based top-k with JOIN - Add
set_compression/get_compressionAPI (LZ4, Zstd) - Add
batch_replaceAPI for bulk row replacement by ID - Add
optimize()method to compact storage andget_column_dtypefor schema introspection - Add new benchmarks: bench_vector.py, bench_vs_polars.py, bench_no_cache.py, bench_simsimd.py
- Add
test_vector_ops.pywith 1000+ lines of distance tests cross-validated against numpy
Changed files by module
| Module | Files changed |
|---|---|
| Other | 2 |
| Project Config | 2 |
| Documentation | 3 |
| Python Package | 1 |
| Python Client | 1 |
| Data Layer | 2 |
| Python Bindings | 1 |
| Query Engine | 12 |
| PostgreSQL Wire Protocol | 1 |
| Storage Engine | 12 |
| Benchmarks | 5 |
| Tests | 5 |
v1.7.0¶
2026-02-23
- Add full-text search (FTS) module with
CREATE FTS INDEXSQL syntax andsearch_text()Python API - Rewrite window function engine: ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD, FIRST_VALUE, SUM/AVG windows
- Fix NULL semantics: LAG/LEAD return NULL at partition boundaries, COUNT(col) excludes NULLs
- Add set operations: UNION (dedup), UNION ALL, INTERSECT, EXCEPT with multi-column variants
- Add subquery support: scalar subqueries, IN/NOT IN, correlated EXISTS
- Add multiple CTE support with chaining and CTE+window function combinations
- Add CASE expressions with WHEN/THEN/ELSE, including CASE in GROUP BY
- Add comprehensive test suites: test_comprehensive_coverage.py, test_sql_edge_cases.py
- Add bench_fts.rs example for FTS in Rust
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 1 |
| Python Package | 1 |
| Python Client | 1 |
| Full-Text Search | 1 |
| Python Bindings | 1 |
| Query Engine | 11 |
| PostgreSQL Wire Protocol | 1 |
| Storage Engine | 8 |
| Benchmarks | 1 |
| Other | 1 |
| Tests | 4 |
v1.6.0¶
2026-02-21
- Add in-place UPDATE execution via
scan_and_update_inplace— writes directly to disk without full rewrite - Rewrite delta store from log-based to map-based (
HashMap) preventing unbounded log growth - Add
delta_batch_update_rowsfor multiple cell-level updates in a single lock acquisition - Add
scan_numeric_range_mmap_with_ids— combined WHERE column scan + ID retrieval in one pass - Add pending delta application (
apply_pending_deltas_in_place) for save_v4() baking - Add DELETE + window function + FTS benchmarks
- Add warm no-gc benchmark mode for measuring without GC interference
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 1 |
| Python Package | 1 |
| Query Engine | 2 |
| PostgreSQL Wire Protocol | 1 |
| Storage Engine | 6 |
| Benchmarks | 1 |
v1.5.0¶
2026-02-20
- Add
open_for_read_with_fileto save 2 syscalls by reusing pre-opened File handle - Add fast path for SELECT COUNT(*) — bypasses SQL parser, reads directly from
active_row_countatomic - Add batch Arrow column → Python list converter (
arrow_col_to_pylist) eliminating per-element dispatch - Refactor LRU cache with AtomicU64 for lock-free access time tracking
- Add regex pre-compilation in Python client for faster SQL parsing
- Merge File::open + metadata into a single syscall in
get_cached_backend - Add 8 new benchmarks: full scan→pandas, multi-GROUP BY, LIKE, multi-condition, multi-ORDER BY, COUNT DISTINCT, IN filter, UPDATE
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 1 |
| Python Package | 1 |
| Python Client | 1 |
| Python Bindings | 1 |
| Query Engine | 1 |
| PostgreSQL Wire Protocol | 1 |
| Storage Engine | 3 |
| Benchmarks | 2 |
v1.4.0¶
2026-02-20
- Add FTS auto-sync on INSERT: newly inserted rows automatically indexed
- Add FTS auto-sync on DELETE: deleted rows removed from FTS indexes
- Add CREATE FTS INDEX backfill: existing rows indexed on creation
- Add ALTER FTS INDEX ... ENABLE backfill support
- Add cross-database SHOW FTS INDEXES with enabled/disabled status
- Remove roadmap/planning docs (HTAP_GAP_ANALYSIS.md, HTAP_ROADMAP.md, P0_IMPLEMENTATION_PLAN.md)
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 7 |
| Python Package | 1 |
| Query Engine | 4 |
| PostgreSQL Wire Protocol | 1 |
| Tests | 1 |
v1.3.0¶
2026-02-20
- Add SQL-native full-text search DDL: CREATE/DROP/ALTER FTS INDEX, SHOW FTS INDEXES
- Add FTS query predicates: MATCH('query') and FUZZY_MATCH('query') in WHERE clauses
- Add FTS_GUIDE.md documentation (478 lines) covering architecture, SQL usage, and configuration
- Upgrade nanofts to 0.5.0 with zero-copy Arrow indexing (~3.3M docs/s throughput)
- Add global FtsManager registry and fts_config.json persistence
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 5 |
| Python Package | 1 |
| Python Client | 1 |
| Full-Text Search | 1 |
| Python Bindings | 1 |
| Query Engine | 4 |
| PostgreSQL Wire Protocol | 1 |
v1.2.0¶
2026-02-20
- Add multi-database support with isolated subdirectories,
use_database(), and cross-database SQL - Add Arrow Flight gRPC server with zero-copy columnar data transfer
- Add unified
apexbase-serveCLI launching both PG Wire and Flight servers - Add bench_flight.py and bench_pg_wire.py comparing server protocol performance
- Add mmap-based aggregation path, per-instance backend caching, SQL parse caching
- Add TCP_NODELAY on server sockets and per-connection USE/\c database switching
- Add comprehensive multi-database test suite (496 lines)
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 3 |
| Python Package | 3 |
| Python Client | 1 |
| Other | 1 |
| Arrow Flight gRPC | 2 |
| Library Core | 1 |
| Python Bindings | 3 |
| Query Engine | 7 |
| PostgreSQL Wire Protocol | 4 |
| Storage Engine | 8 |
| Benchmarks | 5 |
| Tests | 1 |
v1.1.0¶
2026-02-10
- Add Extended Query Handler for prepared statement support
- Add SQL comment stripping (-- and / /) before statement type detection
- Add proper PostgreSQL command tags (INSERT oid+rows, DELETE rows, etc.)
- Add pg_catalog support for pg_tables, pg_stat_user_tables
- Improve DROP TABLE with cleanup of WAL, delta, deltastore files
- Add line comment (--) support to SQL parser
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 1 |
| Python Package | 1 |
| Python Bindings | 1 |
| Query Engine | 3 |
| PostgreSQL Wire Protocol | 3 |
v1.0.0¶
2026-02-10
- Release v1.0 — first stable release
- Add PostgreSQL wire protocol server with DBeaver/psql/DataGrip/pgAdmin/Navicat support
- Add pg_catalog compatibility layer (pg_namespace, pg_database, pg_class, pg_attribute, information_schema)
- Add Arrow type→PostgreSQL type mapping and FieldInfo generation
- Major README rewrite with HTAP feature list (transactions, MVCC, indexing, window functions, 70+ built-in functions)
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 1 |
| Python Package | 2 |
| Other | 1 |
| Library Core | 1 |
| Python Bindings | 2 |
| Query Engine | 1 |
| PostgreSQL Wire Protocol | 4 |
v0.6.0¶
2026-02-09
- Split monolithic executor.rs (~11554 lines) into modular submodules (aggregation, ddl, dml, expressions, joins, select, window, tests)
- Split monolithic on_demand.rs (~10072 lines) into modular submodules (agg_wal, arrow_io, header, mmap_scan, read_write, storage_core, tests, types)
- Add window function support (ROW_NUMBER, RANK, DENSE_RANK, NTILE, LAG, LEAD, FIRST_VALUE, LAST_VALUE)
- Add CTE (WITH ... AS), EXPLAIN/ANALYZE query plans, UNION/UNION ALL support
- Add concurrency stress test, constraint tests, DuckDB memory comparison tests
Changed files by module
| Module | Files changed |
|---|---|
| CI/CD | 1 |
| Project Config | 2 |
| Documentation | 3 |
| Python Package | 1 |
| Python Client | 1 |
| Data Layer | 1 |
| Python Bindings | 1 |
| Query Engine | 13 |
| Storage Engine | 18 |
| Transaction Manager | 2 |
| Benchmarks | 1 |
| Other | 1 |
| Tests | 9 |
v0.5.0¶
2026-02-07
- Add query planner with OLTP (index-based) and OLAP (vectorized) routing
- Add indexing subsystem: B-Tree, hash index, index manager with CREATE/DROP/REINDEX SQL
- Add transaction support: transaction context, manager, OCC conflict detection
- Add MVCC engine: snapshot isolation, row versioning, garbage collection
- Add DeltaStore cell-level updates with merge-commit compaction
- Add global storage engine registry with LRU cache
- Add HTAP architecture support with scaling module (partition, shard, node, router)
- Rewrite on_demand.rs (~4000→9939 lines) with full columnar storage, LZ4/Zstd compression, WAL durability
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 8 |
| Python Package | 1 |
| Python Client | 1 |
| Library Core | 1 |
| Python Bindings | 1 |
| Query Engine | 5 |
| Scaling & Sharding | 5 |
| Storage Engine | 17 |
| Transaction Manager | 4 |
| Other | 1 |
| Benchmarks | 1 |
| Tests | 23 |
v0.4.2¶
2026-02-02
- Add persistent Row Group Bloom Filters for fast row group skipping
- Add DirectCountAgg for fast counting aggregation using direct array indexing
- Remove DuckDB comparison benchmarks and legacy test scripts
- Improve on_demand storage with per-column dictionary caching and SIMD filter scanning
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 1 |
| Other | 13 |
| Python Package | 1 |
| Python Bindings | 2 |
| Query Engine | 2 |
| Storage Engine | 4 |
v0.4.1¶
2026-02-01
- Add comprehensive documentation: API_REFERENCE.md (865 lines), EXAMPLES.md, QUICK_START.md
- Add benchmark suite comparing ApexBase vs DuckDB
- Add bloom filter-based row group skipping in storage engine
- Add
list_databases()method to Python client
Changed files by module
| Module | Files changed |
|---|---|
| Documentation | 5 |
| Python Client | 1 |
| Python Bindings | 1 |
| Query Engine | 2 |
| Storage Engine | 2 |
| Other | 6 |
| Tests | 3 |
v0.4.0¶
2026-02-01
- Add adaptive multi-column filter strategy with smart column ordering
- Add SIMD-accelerated take/gather operations (AVX2 on x86, NEON on ARM)
- Add fast path for Complex (Filter+Group+Order) queries
- Add
delete(where=)support to Python client - Refactor init.py (~1412→157 lines) by delegating to client.py
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 2 |
| Python Package | 1 |
| Python Client | 1 |
| Python Bindings | 2 |
| Query Engine | 5 |
| Storage Engine | 2 |
| Tests | 1 |
v0.3.0¶
2026-01-29
- Add DML support (INSERT, DELETE, UPDATE, TRUNCATE) to SQL executor
- Add DDL support (CREATE/DROP/ALTER TABLE) with schema management
- Add comprehensive DDL/DML test suite (~1957 lines)
- Add performance optimization fast paths for string/numeric/multi-condition filters
- Translate all documentation from Chinese to English
Changed files by module
| Module | Files changed |
|---|---|
| Project Config | 2 |
| Documentation | 2 |
| Other | 1 |
| Python Package | 1 |
| Python Client | 1 |
| Python Bindings | 1 |
| Query Engine | 4 |
| Storage Engine | 4 |
| Tests | 2 |
v0.2.3¶
2026-01-27
- Add multi-platform wheel builds (Windows/macOS/Linux) for Python 3.9-3.13
- Refactor GitHub Actions: separate Linux manylinux build job
Changed files by module
| Module | Files changed |
|---|---|
| CI/CD | 1 |
| Project Config | 2 |
| Documentation | 2 |
| Python Package | 1 |
v0.2.2¶
2026-01-27
- Add maturin multi-platform wheel builds with Python interpreter path detection
- Remove old technical design docs
- Improve README with installation, usage, and benchmarks
Changed files by module
| Module | Files changed |
|---|---|
| CI/CD | 1 |
| Project Config | 2 |
| Documentation | 5 |
| Python Package | 1 |
v0.2.1¶
2026-01-27
- Version bump and minor CI fixes
Changed files by module
| Module | Files changed |
|---|---|
| CI/CD | 1 |
| Project Config | 2 |
| Python Package | 1 |
v0.2.0¶
2026-01-27
- Complete core rewrite from Python to Rust with PyO3 bindings
- Add Rust-native columnar storage engine with .apex file format
- Add Rust-native SQL query executor with vectorized Arrow processing and Cranelift JIT
- Add Arrow IPC zero-copy data bridge between Rust and Python
- Add comprehensive test suite (~12000 lines)
- Replace DuckDB storage with custom columnar storage engine
Changed files by module
| Module | Files changed |
|---|---|
| CI/CD | 1 |
| Other | 17 |
| Project Config | 2 |
| Documentation | 5 |
| Python Package | 1 |
| Python Client | 1 |
| Data Layer | 5 |
| Full-Text Search | 1 |
| Library Core | 1 |
| Python Bindings | 2 |
| Query Engine | 7 |
| Storage Engine | 4 |
| Table Catalog | 5 |
| Tests | 17 |
v0.1.0¶
2025-08-02
- Replace SQLite storage with DuckDB-based storage engine
- Add full-text search module with index creation, fuzzy matching, and snippets
- Rewrite ApexClient with caching, auto-switch, list_tables, close methods
- Add ResultView with to_dict/to_pandas/to_arrow converters
- Add comprehensive test suite (test_apex_client.py, 622 lines)
Changed files by module
| Module | Files changed |
|---|---|
| Other | 14 |
| Documentation | 1 |
| Project Config | 1 |
| Tests | 4 |
v0.0.2¶
2025-01-25
- Add package metadata: Apache-2.0 license, PyPI classifiers for Python 3.9–3.13
- Fix GitHub Actions CI/CD pipeline for PyPI publishing
Changed files by module
| Module | Files changed |
|---|---|
| CI/CD | 1 |
| Other | 1 |
| Project Config | 1 |
v0.0.1¶
2025-01-25
- Initial release — project bootstrap
- ApexClient Python class for database management (CRUD operations)
- SQLite-based Storage with batch operations and LimitedDict LRU cache
- Query class with SQL-like filter parsing (WHERE, ORDER BY, LIMIT, BETWEEN, LIKE, IN)
- SQLParser/SQLGenerator modules for expression handling
- GitHub Actions CI/CD pipeline setup
Changed files by module
| Module | Files changed |
|---|---|
| CI/CD | 1 |