mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
bpo-42972: Track sqlite3 statement objects (GH-26475)
Allocate and track statement objects in pysqlite_statement_create. By allocating and tracking creation of statement object in pysqlite_statement_create(), the caller does not need to worry about GC syncronization, and eliminates the possibility of getting a badly created object. All related fault handling is moved to pysqlite_statement_create(). Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
parent
a6a2065881
commit
fffa0f92ad
4 changed files with 40 additions and 48 deletions
|
|
@ -29,9 +29,6 @@
|
|||
#include "connection.h"
|
||||
#include "sqlite3.h"
|
||||
|
||||
#define PYSQLITE_TOO_MUCH_SQL (-100)
|
||||
#define PYSQLITE_SQL_WRONG_TYPE (-101)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
PyObject_HEAD
|
||||
|
|
@ -45,7 +42,7 @@ typedef struct
|
|||
|
||||
extern PyTypeObject *pysqlite_StatementType;
|
||||
|
||||
int pysqlite_statement_create(pysqlite_Statement* self, pysqlite_Connection* connection, PyObject* sql);
|
||||
pysqlite_Statement *pysqlite_statement_create(pysqlite_Connection *connection, PyObject *sql);
|
||||
|
||||
int pysqlite_statement_bind_parameter(pysqlite_Statement* self, int pos, PyObject* parameter);
|
||||
void pysqlite_statement_bind_parameters(pysqlite_Statement* self, PyObject* parameters);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue