From 6662b4f047beef2c9b41e7ba56d15dffbfa5ea63 Mon Sep 17 00:00:00 2001 From: shortcutme Date: Sat, 26 Jan 2019 20:40:58 +0100 Subject: [PATCH] Test sql queries with lots of variables --- src/Test/TestDb.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/Test/TestDb.py b/src/Test/TestDb.py index 5772d578..d821fe5d 100644 --- a/src/Test/TestDb.py +++ b/src/Test/TestDb.py @@ -60,12 +60,48 @@ class TestDb: {"test_id": [1, 2, 3], "title": ["Test #2", "Test #3", "Test #4"]} ).fetchone()["num"] == 2 + # Large ammount of IN values + assert db.execute( + "SELECT COUNT(*) AS num FROM test WHERE ?", + {"not__test_id": range(2, 3000)} + ).fetchone()["num"] == 2 + assert db.execute( + "SELECT COUNT(*) AS num FROM test WHERE ?", + {"test_id": range(50, 3000)} + ).fetchone()["num"] == 50 + + assert db.execute( + "SELECT COUNT(*) AS num FROM test WHERE ?", + {"not__title": ["Test #%s" % i for i in range(50, 3000)]} + ).fetchone()["num"] == 50 + # Test named parameter escaping assert db.execute( "SELECT COUNT(*) AS num FROM test WHERE test_id = :test_id AND title LIKE :titlelike", {"test_id": 1, "titlelike": "Test%"} ).fetchone()["num"] == 1 + def testEscaping(self, db): + # Test insert + for i in range(100): + db.execute("INSERT INTO test ?", {"test_id": i, "title": "Test '\" #%s" % i}) + + assert db.execute( + "SELECT COUNT(*) AS num FROM test WHERE ?", + {"title": "Test '\" #1"} + ).fetchone()["num"] == 1 + + assert db.execute( + "SELECT COUNT(*) AS num FROM test WHERE ?", + {"title": ["Test '\" #%s" % i for i in range(0, 50)]} + ).fetchone()["num"] == 50 + + assert db.execute( + "SELECT COUNT(*) AS num FROM test WHERE ?", + {"not__title": ["Test '\" #%s" % i for i in range(50, 3000)]} + ).fetchone()["num"] == 50 + + def testUpdateJson(self, db): f = StringIO.StringIO() f.write("""