New way of deriving named parameters using explain, refs #1421

This commit is contained in:
Simon Willison 2021-08-08 20:21:13 -07:00
commit fc4846850f
4 changed files with 31 additions and 2 deletions

View file

@ -626,3 +626,18 @@ def test_parse_metadata(content, expected):
utils.parse_metadata(content)
else:
assert utils.parse_metadata(content) == expected
@pytest.mark.asyncio
@pytest.mark.parametrize("sql,expected", (
("select 1", []),
("select 1 + :one", ["one"]),
("select 1 + :one + :two", ["one", "two"]),
("select 'bob' || '0:00' || :cat", ["cat"]),
("select this is invalid", []),
))
async def test_derive_named_parameters(sql, expected):
ds = Datasette([], memory=True)
db = ds.get_database("_memory")
params = await utils.derive_named_parameters(db, sql)
assert params == expected