summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfarcepest <farcepest@gmail.com>2012-10-17 18:30:19 -0400
committerfarcepest <farcepest@gmail.com>2012-10-17 18:30:19 -0400
commit369810dff7d2e9d7371776f9dc58cedf5b794567 (patch)
treece854a998ea449cef7acb900d83d3c0f6935b892
parentc9b282f8b5f7595e7dc3c92b8964a423ba0fabdb (diff)
downloadmysqldb1-369810dff7d2e9d7371776f9dc58cedf5b794567.tar.gz
PyPy fixes, and probably some reference issues for CPython too.
Derived from a patch at https://bitbucket.org/pypy/compatibility/wiki/edit/mysql-python
-rw-r--r--MySQLdb/converters.py7
-rw-r--r--_mysql.c12
-rw-r--r--tests/test_MySQLdb_capabilities.py2
-rw-r--r--tests/test_MySQLdb_dbapi20.py2
-rw-r--r--tests/test_MySQLdb_nonstandard.py3
5 files changed, 21 insertions, 5 deletions
diff --git a/MySQLdb/converters.py b/MySQLdb/converters.py
index 14b1f52..953c4e5 100644
--- a/MySQLdb/converters.py
+++ b/MySQLdb/converters.py
@@ -49,6 +49,11 @@ except ImportError:
import array
try:
+ ArrayType = array.ArrayType
+except AttributeError:
+ ArrayType = array.array
+
+try:
set
except NameError:
from sets import Set as set
@@ -133,7 +138,7 @@ conversions = {
ListType: escape_sequence,
DictType: escape_dict,
InstanceType: Instance2Str,
- array.ArrayType: array2Str,
+ ArrayType: array2Str,
StringType: Thing2Literal, # default
UnicodeType: Unicode2Str,
ObjectType: Instance2Str,
diff --git a/_mysql.c b/_mysql.c
index 5fee5ce..c0ffddb 100644
--- a/_mysql.c
+++ b/_mysql.c
@@ -481,6 +481,7 @@ _mysql_ResultObject_Initialize(
PyObject *pmask=NULL;
pmask = PyTuple_GET_ITEM(t, 0);
fun2 = PyTuple_GET_ITEM(t, 1);
+ Py_XINCREF(fun2);
if (PyInt_Check(pmask)) {
mask = PyInt_AS_LONG(pmask);
flags = fields[i].flags;
@@ -501,8 +502,10 @@ _mysql_ResultObject_Initialize(
}
Py_DECREF(t);
}
- if (!fun2) fun2 = Py_None;
- Py_INCREF(fun2);
+ if (!fun2) {
+ fun2 = Py_None;
+ Py_INCREF(fun2);
+ }
Py_DECREF(fun);
fun = fun2;
}
@@ -1190,7 +1193,9 @@ _escape_item(
"no default type converter defined");
goto error;
}
+ Py_INCREF(d);
quoted = PyObject_CallFunction(itemconv, "OO", item, d);
+ Py_DECREF(d);
Py_DECREF(itemconv);
error:
return quoted;
@@ -2985,6 +2990,9 @@ _mysql_NewException(
if (!(e = PyDict_GetItemString(edict, name)))
return NULL;
if (PyDict_SetItemString(dict, name, e)) return NULL;
+#ifdef PYPY_VERSION
+ Py_INCREF(e);
+#endif
return e;
}
diff --git a/tests/test_MySQLdb_capabilities.py b/tests/test_MySQLdb_capabilities.py
index 60bbfad..ebec1e6 100644
--- a/tests/test_MySQLdb_capabilities.py
+++ b/tests/test_MySQLdb_capabilities.py
@@ -4,7 +4,7 @@ import unittest
import MySQLdb
import warnings
-warnings.filterwarnings('error')
+warnings.filterwarnings('ignore')
class test_MySQLdb(capabilities.DatabaseTest):
diff --git a/tests/test_MySQLdb_dbapi20.py b/tests/test_MySQLdb_dbapi20.py
index 44830e0..2832e32 100644
--- a/tests/test_MySQLdb_dbapi20.py
+++ b/tests/test_MySQLdb_dbapi20.py
@@ -3,6 +3,8 @@ import dbapi20
import unittest
import MySQLdb
from configdb import connection_kwargs
+import warnings
+warnings.simplefilter("ignore")
class test_MySQLdb(dbapi20.DatabaseAPI20Test):
driver = MySQLdb
diff --git a/tests/test_MySQLdb_nonstandard.py b/tests/test_MySQLdb_nonstandard.py
index 92fcbdc..a5c0e84 100644
--- a/tests/test_MySQLdb_nonstandard.py
+++ b/tests/test_MySQLdb_nonstandard.py
@@ -4,7 +4,8 @@ import _mysql
import MySQLdb
from MySQLdb.constants import FIELD_TYPE
from configdb import connection_factory
-
+import warnings
+warnings.simplefilter("ignore")
class TestDBAPISet(unittest.TestCase):
def test_set_equality(self):