Add initial SQLmem package structure with SQL parser, cache manager, column registry, and tests

This commit is contained in:
Jan Doubravský
2026-06-01 16:44:25 +02:00
parent 54879ef9d0
commit 74772cee4a
18 changed files with 835 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
import pytest
from sqlmem.exceptions import ReadOnlyError, UnsupportedQueryError
from sqlmem.parser import parse
def test_simple_select():
result = parse("SELECT name, email FROM users WHERE status = 'active'")
assert result.table == "users"
# WHERE columns are also extracted — needed for in-memory SQLite filtering
assert {"name", "email"}.issubset(set(result.columns))
assert "status" in result.columns
def test_multiple_columns():
result = parse("SELECT a, b, c FROM orders")
assert result.table == "orders"
assert set(result.columns) == {"a", "b", "c"}
def test_insert_raises_readonly():
with pytest.raises(ReadOnlyError):
parse("INSERT INTO users (name) VALUES ('alice')")
def test_update_raises_readonly():
with pytest.raises(ReadOnlyError):
parse("UPDATE users SET name = 'bob' WHERE id = 1")
def test_delete_raises_readonly():
with pytest.raises(ReadOnlyError):
parse("DELETE FROM users WHERE id = 1")
def test_wildcard_raises_unsupported():
with pytest.raises(UnsupportedQueryError):
parse("SELECT * FROM users")
def test_join_raises_unsupported():
with pytest.raises(UnsupportedQueryError):
parse("SELECT a.name, b.title FROM users a JOIN orders b ON a.id = b.user_id")