New submission from STINNER Victor <vstin...@python.org>:
With SQLite 3.32, test_sqlite fails with: FAIL: CheckFuncDeterministic (sqlite3.test.userfunctions.FunctionTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/builddir/build/BUILD/Python-3.9.0b1/Lib/sqlite3/test/userfunctions.py", line 290, in CheckFuncDeterministic self.assertEqual(mock.call_count, 1) AssertionError: 2 != 1 This test defines a "deterministic" function and ensures that calling it twice in SQLite with only call the underyling Python function only once. Copy of the test: @unittest.skipIf(sqlite.sqlite_version_info < (3, 8, 3), "deterministic parameter not supported") def CheckFuncDeterministic(self): mock = unittest.mock.Mock(return_value=None) self.con.create_function("deterministic", 0, mock, deterministic=True) self.con.execute("select deterministic() = deterministic()") self.assertEqual(mock.call_count, 1) In pysqlite_connection_create_function() of Modules/_sqlite/connection.c, determistic=1 sets the following flag: flags |= SQLITE_DETERMINISTIC; This flag is documented as: "A deterministic function always gives the same answer when it has the same inputs." * https://www.sqlite.org/deterministic.html * https://www.sqlite.org/c3ref/c_deterministic.html "SELECT 1 WHERE deterministic() = deterministic()" query also calls the mock twice. Running "SELECT deterministic()" query twice also calls the mock twice. It seems like SQLite 3.32 behaves differently. Fedora issue: https://bugzilla.redhat.com/show_bug.cgi?id=1839826 ---------- components: Tests messages: 370022 nosy: ghaering, vstinner priority: normal severity: normal status: open title: test_sqlite: CheckFuncDeterministic() fails with SQLite 3.32 versions: Python 3.10 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue40784> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com