diff --git a/sqlite_utils/db.py b/sqlite_utils/db.py index d53d4cb..d1cf03a 100644 --- a/sqlite_utils/db.py +++ b/sqlite_utils/db.py @@ -153,7 +153,7 @@ class Database: def executescript(self, sql): if self._tracer: - self._tracer(sql) + self._tracer(sql, None) return self.conn.executescript(sql) def table(self, table_name, **kwargs): diff --git a/tests/test_tracer.py b/tests/test_tracer.py new file mode 100644 index 0000000..77c4e19 --- /dev/null +++ b/tests/test_tracer.py @@ -0,0 +1,33 @@ +import pytest +from sqlite_utils import Database + + +def test_tracer(): + collected = [] + db = Database( + memory=True, tracer=lambda sql, params: collected.append((sql, params)) + ) + db["dogs"].insert({"name": "Cleopaws"}) + db["dogs"].enable_fts(["name"]) + db["dogs"].search("Cleopaws") + assert collected == [ + ("select name from sqlite_master where type = 'view'", None), + ("select name from sqlite_master where type = 'table'", None), + ("CREATE TABLE [dogs] (\n [name] TEXT\n);\n ", None), + ("select name from sqlite_master where type = 'view'", None), + ("INSERT INTO [dogs] ([name]) VALUES (?);", ["Cleopaws"]), + ("select name from sqlite_master where type = 'view'", None), + ( + "CREATE VIRTUAL TABLE [dogs_fts] USING FTS5 (\n [name],\n content=[dogs]\n);", + None, + ), + ( + "INSERT INTO [dogs_fts] (rowid, [name])\n SELECT rowid, [name] FROM [dogs];", + None, + ), + ("select name from sqlite_master where type = 'view'", None), + ( + 'select * from "dogs" where rowid in (\n select rowid from [dogs_fts]\n where [dogs_fts] match :search\n)\norder by rowid', + ("Cleopaws",), + ), + ]