Uh oh!
There was an error while loading. Please reload this page.
bpo-42064: Migrate to sqlite3_create_collation_v2 - #27156
Conversation
This implies that SQLite now takes care of destroying the callback context (the PyObject callable it has been passed), so we can strip the collation dict from the connection object.
erlend-aasland
commented
Jul 15, 2021
|
erlend-aasland
commented
Jul 15, 2021
FYI, the test suite already exercise clearing a collation callback and re-registering a collation callback. |
erlend-aasland
commented
Jul 15, 2021
BTW, I'd like to change the |
encukou
left a comment
There was a problem hiding this comment.
Looks good so far!
I see that the beginning of the function does some busywork converting name to uppercase and checking for allowed characters. Is that limitation there only to make that sure comparison of keys in the collations dict match sqlite3_strnicmp? If so, PyUnicode_AsUTF8(name) could be used instead.
As for the finally→error rename, I'd say finally is a better name when it's also executed in the non-error case...
Uh oh!
There was an error while loading. Please reload this page.
erlend-aasland
commented
Jul 20, 2021
Yes, I noticed that part as well. I haven't investigated why this was added in the first place. I'll try with
True. |
FYI, the collation code (including the uppercase conversion / check), was added to UPDATE: UPDATE AGAIN: |
encukou
commented
Jul 27, 2021
Thank you! |
Sync with main after pythonGH-27156.
As a nice side effect, we can now remove the collation dict from the
connection object, since SQLite now takes care of destroying the
callback context.
This change is needed in order to make it more convenient to add a
module state to the
sqlite3module.https://bugs.python.org/issue42064