on the method object. [ticket:2352]
- sql
+ - [bug] Fixed memory leak in core which would
+ occur when C extensions were used with
+ particular types of result fetches,
+ in particular when orm query.count()
+ were called. [ticket:2427]
+
- [feature] Added support for SQL standard
common table expressions (CTE), allowing
SELECT objects as the CTE source (DML
PyObject *exc_module, *exception;
char *cstr_key;
long index;
+ int key_fallback = 0;
if (PyInt_CheckExact(key)) {
index = PyInt_AS_LONG(key);
"O", key);
if (record == NULL)
return NULL;
+ key_fallback = 1;
}
indexobject = PyTuple_GetItem(record, 2);
if (indexobject == NULL)
return NULL;
+ if (key_fallback) {
+ Py_DECREF(record);
+ }
+
if (indexobject == Py_None) {
exc_module = PyImport_ImportModule("sqlalchemy.exc");
if (exc_module == NULL)
metadata.drop_all()
assert_no_mappers()
+ @testing.fails_if(lambda : testing.db.dialect.name == 'sqlite' \
+ and testing.db.dialect.dbapi.version > '2.5')
+ @testing.provide_metadata
+ def test_key_fallback_result(self):
+ e = testing.db
+ m = self.metadata
+ t = Table('t', m, Column('x', Integer), Column('y', Integer))
+ m.create_all(e)
+ e.execute(t.insert(), {"x":1, "y":1})
+ @profile_memory
+ def go():
+ r = e.execute(t.alias().select())
+ for row in r:
+ row[t.c.x]
+ go()
+
# fails on newer versions of pysqlite due to unusual memory behvior
# in pysqlite itself. background at:
# http://thread.gmane.org/gmane.comp.python.db.pysqlite.user/2290