Updated the sqlite3 module to the external pysqlite 2.2.2 version.

This commit is contained in:
Gerhard Häring 2006-04-23 15:24:26 +00:00
parent 5ef9d9fdb9
commit 3e99c0ad64
22 changed files with 310 additions and 313 deletions

View file

@ -157,24 +157,24 @@ int build_row_cast_map(Cursor* self)
if (self->connection->detect_types | PARSE_COLNAMES) {
colname = sqlite3_column_name(self->statement->st, i);
if (colname) {
for (pos = colname; *pos != 0; pos++) {
if (*pos == '[') {
type_start = pos + 1;
} else if (*pos == ']' && type_start != (const char*)-1) {
key = PyString_FromStringAndSize(type_start, pos - type_start);
if (!key) {
/* creating a string failed, but it is too complicated
* to propagate the error here, we just assume there is
* no converter and proceed */
break;
}
for (pos = colname; *pos != 0; pos++) {
if (*pos == '[') {
type_start = pos + 1;
} else if (*pos == ']' && type_start != (const char*)-1) {
key = PyString_FromStringAndSize(type_start, pos - type_start);
if (!key) {
/* creating a string failed, but it is too complicated
* to propagate the error here, we just assume there is
* no converter and proceed */
converter = PyDict_GetItem(converters, key);
Py_DECREF(key);
break;
}
converter = PyDict_GetItem(converters, key);
Py_DECREF(key);
break;
}
}
}
@ -276,6 +276,7 @@ PyObject* _fetch_one_row(Cursor* self)
void* raw_buffer;
const char* val_str;
char buf[200];
const char* colname;
Py_BEGIN_ALLOW_THREADS
numcols = sqlite3_data_count(self->statement->st);
@ -340,8 +341,12 @@ PyObject* _fetch_one_row(Cursor* self)
self->connection->text_factory == OptimizedUnicode ? 1 : 0);
if (!converted) {
colname = sqlite3_column_name(self->statement->st, i);
if (colname) {
colname = "<unknown column name>";
}
PyOS_snprintf(buf, sizeof(buf) - 1, "Could not decode to UTF-8 column %s with text %s",
sqlite3_column_name(self->statement->st, i), val_str);
colname , val_str);
PyErr_SetString(OperationalError, buf);
}
} else if (self->connection->text_factory == (PyObject*)&PyString_Type) {
@ -419,8 +424,7 @@ PyObject* _query_execute(Cursor* self, int multiple, PyObject* args)
} else {
/* sequence */
parameters_iter = PyObject_GetIter(second_argument);
if (!parameters_iter)
{
if (!parameters_iter) {
return NULL;
}
}
@ -506,12 +510,7 @@ PyObject* _query_execute(Cursor* self, int multiple, PyObject* args)
/* it's a DDL statement or something similar
- we better COMMIT first so it works for all cases */
if (self->connection->inTransaction) {
func_args = PyTuple_New(0);
if (!func_args) {
goto error;
}
result = connection_commit(self->connection, func_args);
Py_DECREF(func_args);
result = connection_commit(self->connection, NULL);
if (!result) {
goto error;
}
@ -701,7 +700,6 @@ PyObject* cursor_executescript(Cursor* self, PyObject* args)
const char* script_cstr;
sqlite3_stmt* statement;
int rc;
PyObject* func_args;
PyObject* result;
int statement_completed = 0;
@ -728,12 +726,7 @@ PyObject* cursor_executescript(Cursor* self, PyObject* args)
}
/* commit first */
func_args = PyTuple_New(0);
if (!func_args) {
goto error;
}
result = connection_commit(self->connection, func_args);
Py_DECREF(func_args);
result = connection_commit(self->connection, NULL);
if (!result) {
goto error;
}
@ -977,6 +970,9 @@ static struct PyMemberDef cursor_members[] =
{NULL}
};
static char cursor_doc[] =
PyDoc_STR("SQLite database cursor class.");
PyTypeObject CursorType = {
PyObject_HEAD_INIT(NULL)
0, /* ob_size */
@ -999,7 +995,7 @@ PyTypeObject CursorType = {
0, /* tp_setattro */
0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_ITER|Py_TPFLAGS_BASETYPE, /* tp_flags */
0, /* tp_doc */
cursor_doc, /* tp_doc */
0, /* tp_traverse */
0, /* tp_clear */
0, /* tp_richcompare */