Fred Fettinger <fetti...@gmail.com> added the comment:

I've never really looked at the python source before, but this is my best guess 
at the problem:

For the standard SELECT query:
In Modules/_sqlite/cursor.c, _pysqlite_fetch_one_row() has this code:
PY_LONG_LONG intval;
...
} else if (coltype == SQLITE_INTEGER) {
    intval = sqlite3_column_int64(self->statement->st, i);
    if (intval < INT32_MIN || intval > INT32_MAX) {
        converted = PyLong_FromLongLong(intval);
    } else {
        converted = PyInt_FromLong((long)intval);
    }
}

For user-defined function arguments:
In Modules/_sqlite/connection.c, _pysqlite_build_py_params() has this code:
PY_LONG_LONG val_int;
...
case SQLITE_INTEGER:
    val_int = sqlite3_value_int64(cur_value);
    cur_py_value = PyInt_FromLong((long)val_int);
    break;

A select query can return long integers from C to python but a user-defined 
function argument cannot.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue8033>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to