[pypy-commit] pypy default: check return value of sqlite3_bind_xxx
bdkearns
noreply at buildbot.pypy.org
Thu Mar 7 01:26:26 CET 2013
Author: Brian Kearns <bdkearns at gmail.com>
Branch:
Changeset: r62154:e14333f7fb32
Date: 2013-03-06 19:22 -0500
http://bitbucket.org/pypy/pypy/changeset/e14333f7fb32/
Log: check return value of sqlite3_bind_xxx
diff --git a/lib_pypy/_sqlite3.py b/lib_pypy/_sqlite3.py
--- a/lib_pypy/_sqlite3.py
+++ b/lib_pypy/_sqlite3.py
@@ -1075,25 +1075,25 @@
param = adapt(param)
if param is None:
- sqlite.sqlite3_bind_null(self._statement, idx)
+ rc = sqlite.sqlite3_bind_null(self._statement, idx)
elif type(param) in (bool, int, long):
if -2147483648 <= param <= 2147483647:
- sqlite.sqlite3_bind_int(self._statement, idx, param)
+ rc = sqlite.sqlite3_bind_int(self._statement, idx, param)
else:
- sqlite.sqlite3_bind_int64(self._statement, idx, param)
+ rc = sqlite.sqlite3_bind_int64(self._statement, idx, param)
elif type(param) is float:
- sqlite.sqlite3_bind_double(self._statement, idx, param)
+ rc = sqlite.sqlite3_bind_double(self._statement, idx, param)
elif isinstance(param, str):
self.__check_decodable(param)
- sqlite.sqlite3_bind_text(self._statement, idx, param, len(param), SQLITE_TRANSIENT)
+ rc = sqlite.sqlite3_bind_text(self._statement, idx, param, len(param), SQLITE_TRANSIENT)
elif isinstance(param, unicode):
param = param.encode("utf-8")
- sqlite.sqlite3_bind_text(self._statement, idx, param, len(param), SQLITE_TRANSIENT)
+ rc = sqlite.sqlite3_bind_text(self._statement, idx, param, len(param), SQLITE_TRANSIENT)
elif type(param) is buffer:
- sqlite.sqlite3_bind_blob(self._statement, idx, str(param), len(param), SQLITE_TRANSIENT)
+ rc = sqlite.sqlite3_bind_blob(self._statement, idx, str(param), len(param), SQLITE_TRANSIENT)
else:
- raise InterfaceError("parameter type %s is not supported" %
- str(type(param)))
+ rc = -1
+ return rc
def _set_params(self, params):
self._in_use = True
@@ -1107,7 +1107,10 @@
"there are %d supplied." %
(num_params_needed, num_params))
for i in range(num_params):
- self.__set_param(i + 1, params[i])
+ rc = self.__set_param(i + 1, params[i])
+ if rc != SQLITE_OK:
+ raise InterfaceError("Error binding parameter %d - "
+ "probably unsupported type." % i)
else:
for i in range(1, num_params_needed + 1):
param_name = sqlite.sqlite3_bind_parameter_name(self._statement, i)
@@ -1121,7 +1124,11 @@
except KeyError:
raise ProgrammingError("You did not supply a value for "
"binding %d." % i)
- self.__set_param(i, param)
+ rc = self.__set_param(i, param)
+ if rc != SQLITE_OK:
+ raise InterfaceError("Error binding parameter :%s - "
+ "probably unsupported type." %
+ param_name)
def _next(self, cursor):
if self._exhausted:
More information about the pypy-commit
mailing list