summaryrefslogtreecommitdiffstats
path: root/contrib/tools/python3/src/Modules/_sqlite
diff options
context:
space:
mode:
authorarcadia-devtools <[email protected]>2022-03-18 09:10:23 +0300
committerarcadia-devtools <[email protected]>2022-03-18 09:10:23 +0300
commitfef2b3a8ed5955b63c71e8e541a5acf2e393925a (patch)
treee55d2882d5c2c71561a0aa89158ec174d81f92fd /contrib/tools/python3/src/Modules/_sqlite
parent2acc0fc3cdc40434ea286f2fac62386e3fd9c19d (diff)
intermediate changes
ref:102662f6c42fba80d7bfd4a328124cbb4294be48
Diffstat (limited to 'contrib/tools/python3/src/Modules/_sqlite')
-rw-r--r--contrib/tools/python3/src/Modules/_sqlite/connection.c38
-rw-r--r--contrib/tools/python3/src/Modules/_sqlite/cursor.c10
-rw-r--r--contrib/tools/python3/src/Modules/_sqlite/microprotocols.h2
-rw-r--r--contrib/tools/python3/src/Modules/_sqlite/module.c9
-rw-r--r--contrib/tools/python3/src/Modules/_sqlite/statement.c11
5 files changed, 40 insertions, 30 deletions
diff --git a/contrib/tools/python3/src/Modules/_sqlite/connection.c b/contrib/tools/python3/src/Modules/_sqlite/connection.c
index 30e333a4b86..67688e87537 100644
--- a/contrib/tools/python3/src/Modules/_sqlite/connection.c
+++ b/contrib/tools/python3/src/Modules/_sqlite/connection.c
@@ -518,7 +518,11 @@ _pysqlite_set_result(sqlite3_context* context, PyObject* py_val)
return -1;
sqlite3_result_int64(context, value);
} else if (PyFloat_Check(py_val)) {
- sqlite3_result_double(context, PyFloat_AsDouble(py_val));
+ double value = PyFloat_AsDouble(py_val);
+ if (value == -1 && PyErr_Occurred()) {
+ return -1;
+ }
+ sqlite3_result_double(context, value);
} else if (PyUnicode_Check(py_val)) {
Py_ssize_t sz;
const char *str = PyUnicode_AsUTF8AndSize(py_val, &sz);
@@ -1833,41 +1837,41 @@ static PyMethodDef connection_methods[] = {
{"rollback", (PyCFunction)pysqlite_connection_rollback, METH_NOARGS,
PyDoc_STR("Roll back the current transaction.")},
{"create_function", (PyCFunction)(void(*)(void))pysqlite_connection_create_function, METH_VARARGS|METH_KEYWORDS,
- PyDoc_STR("Creates a new function. Non-standard.")},
+ PyDoc_STR("Creates a new function.")},
{"create_aggregate", (PyCFunction)(void(*)(void))pysqlite_connection_create_aggregate, METH_VARARGS|METH_KEYWORDS,
- PyDoc_STR("Creates a new aggregate. Non-standard.")},
+ PyDoc_STR("Creates a new aggregate.")},
{"set_authorizer", (PyCFunction)(void(*)(void))pysqlite_connection_set_authorizer, METH_VARARGS|METH_KEYWORDS,
- PyDoc_STR("Sets authorizer callback. Non-standard.")},
+ PyDoc_STR("Sets authorizer callback.")},
#ifdef HAVE_LOAD_EXTENSION
{"enable_load_extension", (PyCFunction)pysqlite_enable_load_extension, METH_VARARGS,
- PyDoc_STR("Enable dynamic loading of SQLite extension modules. Non-standard.")},
+ PyDoc_STR("Enable dynamic loading of SQLite extension modules.")},
{"load_extension", (PyCFunction)pysqlite_load_extension, METH_VARARGS,
- PyDoc_STR("Load SQLite extension module. Non-standard.")},
+ PyDoc_STR("Load SQLite extension module.")},
#endif
{"set_progress_handler", (PyCFunction)(void(*)(void))pysqlite_connection_set_progress_handler, METH_VARARGS|METH_KEYWORDS,
- PyDoc_STR("Sets progress handler callback. Non-standard.")},
+ PyDoc_STR("Sets progress handler callback.")},
{"set_trace_callback", (PyCFunction)(void(*)(void))pysqlite_connection_set_trace_callback, METH_VARARGS|METH_KEYWORDS,
- PyDoc_STR("Sets a trace callback called for each SQL statement (passed as unicode). Non-standard.")},
+ PyDoc_STR("Sets a trace callback called for each SQL statement (passed as unicode).")},
{"execute", (PyCFunction)pysqlite_connection_execute, METH_VARARGS,
- PyDoc_STR("Executes a SQL statement. Non-standard.")},
+ PyDoc_STR("Executes an SQL statement.")},
{"executemany", (PyCFunction)pysqlite_connection_executemany, METH_VARARGS,
- PyDoc_STR("Repeatedly executes a SQL statement. Non-standard.")},
+ PyDoc_STR("Repeatedly executes an SQL statement.")},
{"executescript", (PyCFunction)pysqlite_connection_executescript, METH_VARARGS,
- PyDoc_STR("Executes a multiple SQL statements at once. Non-standard.")},
+ PyDoc_STR("Executes a multiple SQL statements at once.")},
{"create_collation", (PyCFunction)pysqlite_connection_create_collation, METH_VARARGS,
- PyDoc_STR("Creates a collation function. Non-standard.")},
+ PyDoc_STR("Creates a collation function.")},
{"interrupt", (PyCFunction)pysqlite_connection_interrupt, METH_NOARGS,
- PyDoc_STR("Abort any pending database operation. Non-standard.")},
+ PyDoc_STR("Abort any pending database operation.")},
{"iterdump", (PyCFunction)pysqlite_connection_iterdump, METH_NOARGS,
- PyDoc_STR("Returns iterator to the dump of the database in an SQL text format. Non-standard.")},
+ PyDoc_STR("Returns iterator to the dump of the database in an SQL text format.")},
#ifdef HAVE_BACKUP_API
{"backup", (PyCFunction)(void(*)(void))pysqlite_connection_backup, METH_VARARGS | METH_KEYWORDS,
- PyDoc_STR("Makes a backup of the database. Non-standard.")},
+ PyDoc_STR("Makes a backup of the database.")},
#endif
{"__enter__", (PyCFunction)pysqlite_connection_enter, METH_NOARGS,
- PyDoc_STR("For context manager. Non-standard.")},
+ PyDoc_STR("For context manager.")},
{"__exit__", (PyCFunction)pysqlite_connection_exit, METH_VARARGS,
- PyDoc_STR("For context manager. Non-standard.")},
+ PyDoc_STR("For context manager.")},
{NULL, NULL}
};
diff --git a/contrib/tools/python3/src/Modules/_sqlite/cursor.c b/contrib/tools/python3/src/Modules/_sqlite/cursor.c
index dd0ce7e1ea6..e2635e18c73 100644
--- a/contrib/tools/python3/src/Modules/_sqlite/cursor.c
+++ b/contrib/tools/python3/src/Modules/_sqlite/cursor.c
@@ -878,11 +878,11 @@ PyObject* pysqlite_cursor_close(pysqlite_Cursor* self, PyObject* args)
static PyMethodDef cursor_methods[] = {
{"execute", (PyCFunction)pysqlite_cursor_execute, METH_VARARGS,
- PyDoc_STR("Executes a SQL statement.")},
+ PyDoc_STR("Executes an SQL statement.")},
{"executemany", (PyCFunction)pysqlite_cursor_executemany, METH_VARARGS,
- PyDoc_STR("Repeatedly executes a SQL statement.")},
+ PyDoc_STR("Repeatedly executes an SQL statement.")},
{"executescript", (PyCFunction)pysqlite_cursor_executescript, METH_VARARGS,
- PyDoc_STR("Executes a multiple SQL statements at once. Non-standard.")},
+ PyDoc_STR("Executes multiple SQL statements at once.")},
{"fetchone", (PyCFunction)pysqlite_cursor_fetchone, METH_NOARGS,
PyDoc_STR("Fetches one row from the resultset.")},
{"fetchmany", (PyCFunction)(void(*)(void))pysqlite_cursor_fetchmany, METH_VARARGS|METH_KEYWORDS,
@@ -892,9 +892,9 @@ static PyMethodDef cursor_methods[] = {
{"close", (PyCFunction)pysqlite_cursor_close, METH_NOARGS,
PyDoc_STR("Closes the cursor.")},
{"setinputsizes", (PyCFunction)pysqlite_noop, METH_VARARGS,
- PyDoc_STR("Required by DB-API. Does nothing in pysqlite.")},
+ PyDoc_STR("Required by DB-API. Does nothing in sqlite3.")},
{"setoutputsize", (PyCFunction)pysqlite_noop, METH_VARARGS,
- PyDoc_STR("Required by DB-API. Does nothing in pysqlite.")},
+ PyDoc_STR("Required by DB-API. Does nothing in sqlite3.")},
{NULL, NULL}
};
diff --git a/contrib/tools/python3/src/Modules/_sqlite/microprotocols.h b/contrib/tools/python3/src/Modules/_sqlite/microprotocols.h
index 5418c2b98fd..68c18d9355a 100644
--- a/contrib/tools/python3/src/Modules/_sqlite/microprotocols.h
+++ b/contrib/tools/python3/src/Modules/_sqlite/microprotocols.h
@@ -47,6 +47,6 @@ extern PyObject *pysqlite_microprotocols_adapt(
extern PyObject *
pysqlite_adapt(pysqlite_Cursor* self, PyObject *args);
#define pysqlite_adapt_doc \
- "adapt(obj, protocol, alternate) -> adapt obj to given protocol. Non-standard."
+ "adapt(obj, protocol, alternate) -> adapt obj to given protocol."
#endif /* !defined(PSYCOPG_MICROPROTOCOLS_H) */
diff --git a/contrib/tools/python3/src/Modules/_sqlite/module.c b/contrib/tools/python3/src/Modules/_sqlite/module.c
index 44811835d42..98909369e75 100644
--- a/contrib/tools/python3/src/Modules/_sqlite/module.c
+++ b/contrib/tools/python3/src/Modules/_sqlite/module.c
@@ -121,7 +121,7 @@ static PyObject* module_complete(PyObject* self, PyObject* args, PyObject*
PyDoc_STRVAR(module_complete_doc,
"complete_statement(sql)\n\
\n\
-Checks if a string contains a complete SQL statement. Non-standard.");
+Checks if a string contains a complete SQL statement.");
#ifdef HAVE_SHARED_CACHE
static PyObject* module_enable_shared_cache(PyObject* self, PyObject* args, PyObject*
@@ -149,8 +149,7 @@ static PyObject* module_enable_shared_cache(PyObject* self, PyObject* args, PyOb
PyDoc_STRVAR(module_enable_shared_cache_doc,
"enable_shared_cache(do_enable)\n\
\n\
-Enable or disable shared cache mode for the calling thread.\n\
-Experimental/Non-standard.");
+Enable or disable shared cache mode for the calling thread.");
#endif /* HAVE_SHARED_CACHE */
static PyObject* module_register_adapter(PyObject* self, PyObject* args)
@@ -180,7 +179,7 @@ static PyObject* module_register_adapter(PyObject* self, PyObject* args)
PyDoc_STRVAR(module_register_adapter_doc,
"register_adapter(type, callable)\n\
\n\
-Registers an adapter with pysqlite's adapter registry. Non-standard.");
+Registers an adapter with sqlite3's adapter registry.");
static PyObject* module_register_converter(PyObject* self, PyObject* args)
{
@@ -214,7 +213,7 @@ error:
PyDoc_STRVAR(module_register_converter_doc,
"register_converter(typename, callable)\n\
\n\
-Registers a converter with pysqlite. Non-standard.");
+Registers a converter with sqlite3.");
static PyObject* enable_callback_tracebacks(PyObject* self, PyObject* args)
{
diff --git a/contrib/tools/python3/src/Modules/_sqlite/statement.c b/contrib/tools/python3/src/Modules/_sqlite/statement.c
index 23c204e7521..0272ce11207 100644
--- a/contrib/tools/python3/src/Modules/_sqlite/statement.c
+++ b/contrib/tools/python3/src/Modules/_sqlite/statement.c
@@ -152,9 +152,16 @@ int pysqlite_statement_bind_parameter(pysqlite_Statement* self, int pos, PyObjec
rc = sqlite3_bind_int64(self->st, pos, value);
break;
}
- case TYPE_FLOAT:
- rc = sqlite3_bind_double(self->st, pos, PyFloat_AsDouble(parameter));
+ case TYPE_FLOAT: {
+ double value = PyFloat_AsDouble(parameter);
+ if (value == -1 && PyErr_Occurred()) {
+ rc = -1;
+ }
+ else {
+ rc = sqlite3_bind_double(self->st, pos, value);
+ }
break;
+ }
case TYPE_UNICODE:
string = PyUnicode_AsUTF8AndSize(parameter, &buflen);
if (string == NULL)