Issue 34052: sqlite's create_function() raises exception on unhashable callback, but creates function (original) (raw)

In [1]: import sqlite3

In [2]: con = sqlite3.connect(':memory:')

In [3]: con.execute('SELECT f()')

OperationalError Traceback (most recent call last) in () ----> 1 con.execute('SELECT f()')

OperationalError: no such function: f

In [4]: con.create_function('f', 0, [])

TypeError Traceback (most recent call last) in () ----> 1 con.create_function('f', 0, [])

TypeError: unhashable type: 'list'

In [5]: con.execute('SELECT f()')

OperationalError Traceback (most recent call last) in () ----> 1 con.execute('SELECT f()')

OperationalError: user-defined function raised exception

It seems that something like this cause segmentation fault, but I can't reproduce it. Some other similar sqlite functions also affected. They can be easily modified to accept unhashable objects, but probably it should be done in another issue.