https://koschei.fedoraproject.org/package/python3?collection=f33 https://koschei.fedoraproject.org/package/python3.9?collection=f33 FAIL: CheckFuncDeterministic (sqlite3.test.userfunctions.FunctionTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/builddir/build/BUILD/Python-3.8.3/Lib/sqlite3/test/userfunctions.py", line 290, in CheckFuncDeterministic self.assertEqual(mock.call_count, 1) AssertionError: 2 != 1 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 ---------------------------------------------------------------------- Ran 286 tests in 0.426s FAILED (failures=1, skipped=2) sqlite was updated from 3.31.1-1.fc33 to 3.32.0-1.fc33
Currently updating sqlite to verison 3.32.1-1, as upstream has released a new version. Can you please test, if the problem persists ?
Waiting for https://bodhi.fedoraproject.org/updates/FEDORA-2020-f40c21d394
(In reply to Ondrej Dubaj from comment #1) > Currently updating sqlite to verison 3.32.1-1, as upstream has released a > new version. Can you please test, if the problem persists ? The problem persists.
I reported the issue to Python upstream: https://bugs.python.org/issue40784 It seems like SQLite 3.32 behaves differently. It looks like an issue in SQLite itself: it doesn't respect SQLITE_DETERMINISTIC flag. Or SQLite handles deterministic functions differently.
Also reported this issue to sqlite upstream https://sqlite.org/forum/forumpost/e79a299b3f
(In reply to Victor Stinner from comment #4) > > It seems like SQLite 3.32 behaves differently. It looks like an issue in > SQLite itself: it doesn't respect SQLITE_DETERMINISTIC flag. Or SQLite > handles deterministic functions differently. The SQLite documentation for SQLITE_DETERMINISTIC says: "The SQLITE_DETERMINISTIC flag means that the new function always gives the same output when the input parameters are the same." It does not say anything about calling deterministic functions only once. The documentation says that the query planner *might* try to factor deterministic functions out of inner loops, but it does not make any guarantees. The purpose of SQLITE_DETERMINISTIC is to permit the function to be used in contexts where the result must always be the same given identical, such as in CHECK constraints. A proper test for the efficacy of the SQLITE_DETERMINISTIC flag would be to verify that the application-defined SQL function cannot be used inside a CHECK constraint, or in the WHERE clause of a partial index, or in a generated column definition, unless that function is marked as SQLITE_DETERMINISTIC. See https://www.sqlite.org/c3ref/c_deterministic.html#sqlitedeterministic for additional information about the SQLITE_DETERMINISTIC flag.
> A proper test for the efficacy of the SQLITE_DETERMINISTIC flag would be to verify that the application-defined SQL function cannot be used inside a CHECK constraint, or in the WHERE clause of a partial index, or in a generated column definition, unless that function is marked as SQLITE_DETERMINISTIC. https://github.com/python/cpython/pull/20448 has been proposed to rewrite the test using partial index. IMO it's a reasonable test which avoids to rely on implementation details as the current test does.
Python 3.9 update: The f33-python side tag is currently being merged. New builds in f33-python are no longer possible, but python3 is not yet updated to Python 3.9 in rawhide. You can check when Python is Python 3.9 with: $ koji wait-repo f33-build --build python3.9-3.9.0~b1-3.fc3 And build the packages normally after that.