Mike Bayer [Thu, 23 May 2013 16:59:53 +0000 (12:59 -0400)]
Fixed a bug where the routine to detect the correct kwargs
being sent to :func:`.create_engine` would fail in some cases,
such as with the Sybase dialect.
[ticket:2732]
Mike Bayer [Mon, 13 May 2013 20:13:15 +0000 (16:13 -0400)]
Fixed a regression from 0.7 caused by this ticket, which
made the check for recursion overflow in self-referential
eager joining too loose, missing a particular circumstance
where a subclass had lazy="joined" or "subquery" configured
and the load was a "with_polymorphic" against the base.
[ticket:2481]
Mike Bayer [Tue, 30 Apr 2013 14:02:49 +0000 (10:02 -0400)]
- Fixed a regression from 0.7 where the contextmanager feature
of :meth:`.Session.begin_nested` would fail to correctly
roll back the transaction when a flush error occurred, instead
raising its own exception while leaving the session still
pending a rollback. [ticket:2718]
Mike Bayer [Mon, 29 Apr 2013 23:49:28 +0000 (19:49 -0400)]
Updated mysqlconnector dialect to check for disconnect based
on the apparent string message sent in the exception; tested
against mysqlconnector 1.0.9.
Mike Bayer [Fri, 26 Apr 2013 19:51:29 +0000 (15:51 -0400)]
Fixes to the ``sqlalchemy.ext.serializer`` extension, including
that the "id" passed from the pickler is turned into a string
to prevent against bytes being parsed on Py3K, as well as that
``relationship()`` and ``orm.join()`` constructs are now properly
serialized. [ticket:2698] and some other observed issues.
Mike Bayer [Thu, 25 Apr 2013 18:44:37 +0000 (14:44 -0400)]
- further cleanup. in particular, the left clause is never None. But we still
can have errors when we do the auto-join, these are both covered in test_joins
Mike Bayer [Wed, 24 Apr 2013 22:58:09 +0000 (18:58 -0400)]
- attempt to replace the whole idea of "join_to_left" with a more
fundamental and general purpose heuristic. this initial approach
has about 60 tests failing but seems to have gone pretty far
Mike Bayer [Tue, 23 Apr 2013 17:23:48 +0000 (13:23 -0400)]
Added a conditional to the unpickling process for ORM
mapped objects, such that if the reference to the object
were lost when the object was pickled, we don't
erroneously try to set up _sa_instance_state - fixes
a NoneType error.
Mike Bayer [Mon, 22 Apr 2013 23:33:39 +0000 (19:33 -0400)]
Opened up the checking for "disconnect" with psycopg2/libpq
to check for all the various "disconnect" messages within
the full exception hierarchy. Specifically the
"closed the connection unexpectedly" message has now been
seen in at least three different exception types.
[ticket:2712]
Mike Bayer [Mon, 22 Apr 2013 23:12:47 +0000 (19:12 -0400)]
Fully implemented the IS and IS NOT operators with
regards to the True/False constants. An expression like
``col.is_(True)`` will now render ``col IS true``
on the target platform, rather than converting the True/
False constant to an integer bound parameter.
This allows the ``is_()`` operator to work on MySQL when
given True/False constants.
[ticket:2682]
Mike Bayer [Mon, 22 Apr 2013 20:57:15 +0000 (16:57 -0400)]
The operators for the Postgresql ARRAY type supports
input types of sets, generators, etc. but only when a dimension
is specified for the ARRAY; otherwise, the dialect
needs to peek inside of "arr[0]" to guess how many
dimensions are in use. If this occurs with a non
list/tuple type, the error message is now informative
and directs to specify a dimension for the ARRAY.
[ticket:2681]
Mike Bayer [Sun, 21 Apr 2013 21:09:45 +0000 (17:09 -0400)]
- Improvements to the operation of the pymysql dialect on
Python 3, including some important decode/bytes steps.
Issues remain with BLOB types due to driver issues.
Courtesy Ben Trofatter.
- start using util.py3k, we will eventually remove the
sa2to3 fixer entirely
Mike Bayer [Sun, 21 Apr 2013 15:31:29 +0000 (11:31 -0400)]
Fixed bug where many-to-many relationship with uselist=False
would fail to delete the association row and raise an error
if the scalar attribute were set to None. Also in 0.7.11.
[ticket:2710]
Mike Bayer [Sat, 20 Apr 2013 06:45:08 +0000 (02:45 -0400)]
Improved the behavior of instance management regarding
the creation of strong references within the Session;
an object will no longer have an internal reference cycle
created if it's in the transient state or moves into the
detached state - the strong ref is created only when the
object is attached to a Session and is removed when the
object is detached. This makes it somewhat safer for an
object to have a `__del__()` method, even though this is
not recommended, as relationships with backrefs produce
cycles too. A warning has been added when a class with
a `__del__()` method is mapped.
[ticket:2708]
Dan Ring [Sat, 20 Apr 2013 01:01:39 +0000 (18:01 -0700)]
Fix mysql+gaerdbms dialect for changed exception format
googleappengine v1.7.5 changed the exception format to be
incompatible with MySQLDialect_gaerdbms#_extract_error_code
This fix works for both old- and new-style exceptions.
Changes causing the breakage:
/trunk/python/google/storage/speckle/python/api/rdbms.py
at
https://code.google.com/p/googleappengine/source/detail?r=318
Mike Bayer [Fri, 19 Apr 2013 00:11:08 +0000 (20:11 -0400)]
Fixed a long-standing bug in the caching example, where
the limit/offset parameter values wouldn't be taken into
account when computing the cache key. The
_key_from_query() function has been simplified to work
directly from the final compiled statement in order to get
at both the full statement as well as the fully processed
parameter list.
Mike Bayer [Thu, 18 Apr 2013 21:41:30 +0000 (17:41 -0400)]
- this pymssql test needs to be against the pymssql dialect
- Part of a longer series of fixes needed for pyodbc+
mssql, a CAST to NVARCHAR(max) has been added to the bound
parameter for the table name and schema name in all information schema
queries to avoid the issue of comparing NVARCHAR to NTEXT,
which seems to be rejected by the ODBC driver in some cases,
such as FreeTDS (0.91 only?) plus unicode bound parameters being passed.
The issue seems to be specific to the SQL Server information
schema tables and the workaround is harmless for those cases
where the problem doesn't exist in the first place.
[ticket:2355]
Mike Bayer [Thu, 18 Apr 2013 15:00:12 +0000 (11:00 -0400)]
Reworked internal exception raises that emit
a rollback() before re-raising, so that the stack
trace is preserved from sys.exc_info() before entering
the rollback. This so that the traceback is preserved
when using coroutine frameworks which may have switched
contexts before the rollback function returns.
[ticket:2703]
Mike Bayer [Fri, 12 Apr 2013 00:04:57 +0000 (20:04 -0400)]
Fixed bug whereby ORM would run the wrong kind of
query when refreshing an inheritance-mapped class
where the superclass was mapped to a non-Table
object, like a custom join() or a select(),
running a query that assumed a hierarchy that's
mapped to individual Table-per-class.
[ticket:2697]
Mike Bayer [Thu, 11 Apr 2013 23:37:56 +0000 (19:37 -0400)]
Fixed `__repr__()` on mapper property constructs
to work before the object is initialized, so
that Sphinx builds with recent Sphinx versions
can read them.
Mike Bayer [Thu, 11 Apr 2013 23:34:46 +0000 (19:34 -0400)]
The _Binary base type now converts values through
the bytes() callable when run on Python 3; in particular
psycopg2 2.5 with Python 3.3 seems to now be returning
the "memoryview" type, so this is converted to bytes
before return.
Mike Bayer [Thu, 11 Apr 2013 23:10:02 +0000 (19:10 -0400)]
Improvements to Connection auto-invalidation
handling. If a non-disconnect error occurs,
but leads to a delayed disconnect error within error
handling (happens with MySQL), the disconnect condition
is detected. The Connection can now also be closed
when in an invalid state, meaning it will raise "closed"
on next usage, and additionally the "close with result"
feature will work even if the autorollback in an error
handling routine fails and regardless of whether the
condition is a disconnect or not.
[ticket:2695]