New submission from STINNER Victor <[email protected]>:
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 <[email protected]>
<https://bugs.python.org/issue40784>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com