Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 1839826
Summary: | Python's sqlite3.test.userfunctions.FunctionTests fails in rawhide after sqlite was updated to version 3.32.0 | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Miro Hrončok <mhroncok> |
Component: | python3.9 | Assignee: | Charalampos Stratakis <cstratak> |
Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
Severity: | unspecified | Docs Contact: | |
Priority: | unspecified | ||
Version: | rawhide | CC: | cstratak, dmalcolm, drh, m.cyprian, mhroncok, mplch, odubaj, pviktori, python-sig, rkuska, shcherbina.iryna, slavek.kabrda, tomspur, torsava, vstinner |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | If docs needed, set a value | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2020-06-05 22:07:52 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: | |||
Bug Depends On: | |||
Bug Blocks: | 1803234, 1840234 |
Description
Miro Hrončok
2020-05-25 16:48:54 UTC
Currently updating sqlite to verison 3.32.1-1, as upstream has released a new version. Can you please test, if the problem persists ? (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. |