[issue40784] test_sqlite: CheckFuncDeterministic() fails with SQLite 3.32

2020-05-29 Thread miss-islington


miss-islington  added the comment:


New changeset 8fcc1474ef5d819c144309e048e71e6013544063 by Miss Islington (bot) 
in branch '3.9':
bpo-40784: Fix sqlite3 deterministic test (GH-20448)
https://github.com/python/cpython/commit/8fcc1474ef5d819c144309e048e71e6013544063


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue40784] test_sqlite: CheckFuncDeterministic() fails with SQLite 3.32

2020-05-29 Thread miss-islington


miss-islington  added the comment:


New changeset 00a240bf7f95bbd220f1cfbf9eb58484a5f9681a by Miss Islington (bot) 
in branch '3.8':
bpo-40784: Fix sqlite3 deterministic test (GH-20448)
https://github.com/python/cpython/commit/00a240bf7f95bbd220f1cfbf9eb58484a5f9681a


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue40784] test_sqlite: CheckFuncDeterministic() fails with SQLite 3.32

2020-05-29 Thread STINNER Victor


STINNER Victor  added the comment:

Python 3.8 and Python 3.9 are also affected, I created backports.

Python 3.7 is not affected: deterministic parameter was added to Python 3.8.
https://docs.python.org/dev/library/sqlite3.html#sqlite3.Connection.create_function

--
versions: +Python 3.8, Python 3.9

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue40784] test_sqlite: CheckFuncDeterministic() fails with SQLite 3.32

2020-05-29 Thread miss-islington


Change by miss-islington :


--
pull_requests: +19757
pull_request: https://github.com/python/cpython/pull/20513

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue40784] test_sqlite: CheckFuncDeterministic() fails with SQLite 3.32

2020-05-29 Thread miss-islington


Change by miss-islington :


--
nosy: +miss-islington
nosy_count: 6.0 -> 7.0
pull_requests: +19756
pull_request: https://github.com/python/cpython/pull/20512

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue40784] test_sqlite: CheckFuncDeterministic() fails with SQLite 3.32

2020-05-28 Thread Berker Peksag


Change by Berker Peksag :


--
resolution:  -> fixed
stage: patch review -> resolved
status: open -> closed
type:  -> behavior

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue40784] test_sqlite: CheckFuncDeterministic() fails with SQLite 3.32

2020-05-28 Thread Berker Peksag


Berker Peksag  added the comment:


New changeset c610d970f5373b143bf5f5900d4645e6a90fb460 by Erlend Egeberg 
Aasland in branch 'master':
bpo-40784: Fix sqlite3 deterministic test (GH-20448)
https://github.com/python/cpython/commit/c610d970f5373b143bf5f5900d4645e6a90fb460


--
nosy: +berker.peksag

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue40784] test_sqlite: CheckFuncDeterministic() fails with SQLite 3.32

2020-05-27 Thread Erlend Egeberg Aasland


Change by Erlend Egeberg Aasland :


--
keywords: +patch
pull_requests: +19702
stage:  -> patch review
pull_request: https://github.com/python/cpython/pull/20448

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue40784] test_sqlite: CheckFuncDeterministic() fails with SQLite 3.32

2020-05-27 Thread Erlend Egeberg Aasland


Erlend Egeberg Aasland  added the comment:

Hi, folks. I took the liberty to create a PR for this; hope you don't mind. 
I've used partial indices to test deterministic behaviour.

https://www.sqlite.org/partialindex.html

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue40784] test_sqlite: CheckFuncDeterministic() fails with SQLite 3.32

2020-05-27 Thread Erlend Egeberg Aasland


Change by Erlend Egeberg Aasland :


--
nosy: +erlendaasland

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue40784] test_sqlite: CheckFuncDeterministic() fails with SQLite 3.32

2020-05-27 Thread Petr Viktorin


Petr Viktorin  added the comment:

Indeed. The SQLite documentation talks about the limitations that 
non-deterministic functions have, not about deterministic functions being 
memoized: https://www.sqlite.org/deterministic.html

The flag would be better tested e.g. with a CHECK constraint: 
https://www.sqlite.org/lang_createtable.html#ckconst

--
nosy: +petr.viktorin

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue40784] test_sqlite: CheckFuncDeterministic() fails with SQLite 3.32

2020-05-26 Thread Benjamin Peterson


Benjamin Peterson  added the comment:

This seems like it's testing an implementation detail.

--
nosy: +benjamin.peterson

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue40784] test_sqlite: CheckFuncDeterministic() fails with SQLite 3.32

2020-05-26 Thread STINNER Victor


STINNER Victor  added the comment:

Oh, I also tried with a function taking one argument and then call it twice by 
running "SELECT deterministic(1)" query twice: again, the mock is also called 
twice.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue40784] test_sqlite: CheckFuncDeterministic() fails with SQLite 3.32

2020-05-26 Thread STINNER Victor


New submission from STINNER Victor :

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 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com