Files
SQLmem/CHANGELOG.md
T

3.0 KiB

Changelog

All notable changes to this project will be documented in this file.

[Unreleased]


[0.4.0] - 2026-06-03

Added

  • add_sink(sink, *, level, **kwargs) — public API for routing sqlmem log records to any loguru-compatible sink (stream, file, callable); supports all loguru logger.add() kwargs including rotation, retention, etc.

Changed

  • pyproject.toml — bumped version to 0.4.0
  • config.py — replaced destructive logger.remove() + forced default sink with logger.disable("sqlmem"); sqlmem is now silent by default and does not interfere with the host application's logging setup

[0.3.0] - 2026-06-03

Added

  • README.md — full project documentation: architecture overview, quick start, cache behaviour, persistence, configuration, exceptions, logging, and limitations

Changed

  • pyproject.toml — bumped version to 0.3.0
  • parser.py_extract_columns now deduplicates column names while preserving order
  • .gitignore — added .env and .env.* to prevent accidental commit of environment files

Security

  • Removed .env from git tracking (git rm --cached)

[0.2.0] - 2026-06-01

Added

  • Project specification in project.md — architecture, API design, cache backend, metadata schema, logging strategy, and TODO for future features (JOIN, SELECT * support)
  • .gitignore for Python/Poetry project
  • pyproject.toml dependencies: sqlglot, sqlalchemy, loguru, python-dotenv; dev dependencies: pytest, ruff, mypy
  • src/sqlmem/ package structure with src layout
  • src/sqlmem/exceptions.pyReadOnlyError (blocks INSERT/UPDATE/DELETE), UnsupportedQueryError (blocks JOIN and SELECT *)
  • src/sqlmem/config.py — loads .env, configures loguru with DEBUG/INFO level based on SQLMEM_DEBUG
  • src/sqlmem/_meta.py — package version constant
  • src/sqlmem/parser.py — SQL Parser using sqlglot; extracts table and columns from SELECT, raises on writes/JOIN/wildcard
  • src/sqlmem/registry.py — Column Registry; accumulates requested columns per table, detects missing columns requiring re-fetch
  • src/sqlmem/cache.py — Cache Manager; SQLite in-memory storage, load from cache.db on startup (with schema version check), hourly backup thread, atexit/SIGTERM flush, metadata tables (_sqlmem_meta, _sqlmem_tables, _sqlmem_columns)
  • src/sqlmem/executor.py — Query Executor; cache hit/miss logic, re-fetch on new columns with WARNING log
  • src/sqlmem/engine.pyCachingEngine wrapper; public API compatible with SQLAlchemy, invalidate(table) for manual cache clearing
  • src/sqlmem/__init__.py — public exports: CachingEngine, ReadOnlyError, UnsupportedQueryError
  • tests/test_parser.py — parser tests: SELECT parsing, ReadOnlyError, UnsupportedQueryError
  • tests/test_cache.py — cache tests: load, data correctness, metadata, disk backup/reload
  • tests/test_registry.py — registry tests: accumulation, needs_refetch, table isolation