Mike Bayer [Wed, 11 Apr 2012 17:03:52 +0000 (13:03 -0400)]
- [feature] Added new flag to @validates
include_removes. When True, collection
remove and attribute del events
will also be sent to the validation function,
which accepts an additional argument
"is_remove" when this flag is used.
Mike Bayer [Tue, 10 Apr 2012 23:38:22 +0000 (19:38 -0400)]
- [feature] Added new connection event
dbapi_error(). Is called for all DBAPI-level
errors passing the original DBAPI exception
before SQLAlchemy modifies the state
of the cursor.
Mike Bayer [Sun, 8 Apr 2012 15:18:39 +0000 (11:18 -0400)]
- adjust mysql patch a bit so that we use
built in quoting for the "idx_" name as well
- [bug] Fixed bug whereby column name inside
of "KEY" clause for autoincrement composite
column with InnoDB would double quote a
name that's a reserved word. Courtesy Jeff
Dairiki. [ticket:2460]
Mike Bayer [Thu, 5 Apr 2012 18:31:28 +0000 (14:31 -0400)]
- [bug] Repaired the use_scope_identity
create_engine() flag when using the pyodbc
dialect. Previously this flag would be
ignored if set to False. When set to False,
you'll get "SELECT @@identity" after each
INSERT to get at the last inserted ID,
for those tables which have "implicit_returning"
set to False.
Mike Bayer [Sun, 1 Apr 2012 23:42:54 +0000 (19:42 -0400)]
- sql
- [bug] Removed warning when Index is created
with no columns; while this might not be what
the user intended, it is a valid use case
as an Index could be a placeholder for just an
index of a certain name.
- mssql
- [feature] Added interim create_engine flag
supports_unicode_binds to PyODBC dialect,
to force whether or not the dialect
passes Python unicode literals to PyODBC
or not.
Mike Bayer [Sat, 31 Mar 2012 17:35:05 +0000 (13:35 -0400)]
- [bug] Fixed bug in expression annotation
mechanics which could lead to incorrect
rendering of SELECT statements with aliases
and joins, particularly when using
column_property(). [ticket:2453]
Mike Bayer [Sat, 31 Mar 2012 16:55:42 +0000 (12:55 -0400)]
- [bug] Fixed bug whereby polymorphic_on
column that's not otherwise mapped on the
class would be incorrectly included
in a merge() operation, raising an error.
[ticket:2449]
Mike Bayer [Wed, 21 Mar 2012 00:12:26 +0000 (20:12 -0400)]
- 0.7.7
- [feature] Added prefix_with() method
to Query, calls upon select().prefix_with()
to allow placement of MySQL SELECT
directives in statements. Courtesy
Diana Clarke [ticket:2443]
Mike Bayer [Wed, 14 Mar 2012 21:34:36 +0000 (14:34 -0700)]
- [bug] Fixed issue whereby attribute-based
column access on a row would raise
AttributeError with non-C version,
NoSuchColumnError with C version. Now
raises AttributeError in both cases.
[ticket:2398]
Mike Bayer [Wed, 14 Mar 2012 21:32:13 +0000 (14:32 -0700)]
- [feature] Added support for MySQL index and
primary key constraint types
(i.e. USING) via new mysql_using parameter
to Index and PrimaryKeyConstraint,
courtesy Diana Clarke. [ticket:2386]
Mike Bayer [Wed, 14 Mar 2012 03:38:30 +0000 (20:38 -0700)]
- [bug] Fixed bug in C extensions whereby
string format would not be applied to a
Numeric value returned as integer; this
affected primarily SQLite which does
not maintain numeric scale settings.
[ticket:2432]
Mike Bayer [Mon, 12 Mar 2012 20:35:27 +0000 (13:35 -0700)]
- [bug] Fixed bug whereby a primaryjoin
condition with a "literal" in it would
raise an error on compile with certain
kinds of deeply nested expressions
which also needed to render the same
bound parameter name more than once.
[ticket:2425]
Mike Bayer [Mon, 12 Mar 2012 20:14:14 +0000 (13:14 -0700)]
- add __table_cls__ option to declarative, not publicized yet, is for the moment
for the benefit of the test.lib.schema package.
- use test.lib.schema.Table for the table within test.lib.fixtures.DeclarativeMappedTest
- [bug] Removed the check for number of
rows affected when doing a multi-delete
against mapped objects. If an ON DELETE
CASCADE exists between two rows, we can't
get an accurate rowcount from the DBAPI;
this particular count is not supported
on most DBAPIs in any case, MySQLdb
is the notable case where it is.
[ticket:2403]
Mike Bayer [Sun, 11 Mar 2012 00:18:52 +0000 (16:18 -0800)]
- [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]
Mike Bayer [Thu, 8 Mar 2012 03:36:22 +0000 (22:36 -0500)]
- [bug] Fixed event registration bug
which would primarily show up as
events not being registered with
sessionmaker() instances created
after the event was associated
with the Session class. [ticket:2424]
Mike Bayer [Sat, 3 Mar 2012 18:00:44 +0000 (13:00 -0500)]
- [feature] Added cte() method to Query,
invokes common table expression support
from the Core (see below). [ticket:1859]
- [feature] Added support for SQL standard
common table expressions (CTE), allowing
SELECT objects as the CTE source (DML
not yet supported). This is invoked via
the cte() method on any select() construct.
[ticket:1859]
Mike Bayer [Wed, 29 Feb 2012 22:47:59 +0000 (17:47 -0500)]
- expand the check to determine if a selectable column is embedded
in the corresponding selectable to take into account clones
of the target column. fixes [ticket:2419]
- have _make_proxy() copy out the _is_clone_of attribute on the
new column so that even more corresponding_column() checks
work as expected for cloned elements.
- add a new test fixture so that mapped tests can be specified
using declarative.
Mike Bayer [Tue, 28 Feb 2012 21:13:26 +0000 (16:13 -0500)]
remove the "produce test" approach from the polymorphic_rel tests,
break out fixtures into a separate module which will be
used by some future test suites as well
Mike Bayer [Tue, 21 Feb 2012 15:49:38 +0000 (10:49 -0500)]
- [bug] A warning is emitted when a not-present
column is stated in the values() clause
of an insert() or update() construct.
Will move to an exception in 0.8.
[ticket:2413]
Mike Bayer [Fri, 17 Feb 2012 00:29:00 +0000 (19:29 -0500)]
break up _join_left_to_right to call upon _prepare_right_side and _join_to_left.
this separates the handling of each side totally making it easier to see
what's going on.
Mike Bayer [Thu, 16 Feb 2012 23:54:10 +0000 (18:54 -0500)]
- fix some unclear phrases in query regarding polymorphic,
slowly approaching [ticket:2333]
- pep8 most of the big old polymorphic tests, break lots
of the inheritance/test_query tests into individual tests
since these are the ones that are easily broken when
screwing with query
Mike Bayer [Tue, 14 Feb 2012 17:04:04 +0000 (12:04 -0500)]
- [bug] Altered _params_from_query() function
in Beaker example to pull bindparams from the
fully compiled statement, as a quick means
to get everything including subqueries in the
columns clause, etc.
Mike Bayer [Tue, 14 Feb 2012 01:07:44 +0000 (20:07 -0500)]
- [feature] Added "no_parameters=True" execution
option for connections. If no parameters
are present, will pass the statement
as cursor.execute(statement), thereby invoking
the DBAPIs behavior when no parameter collection
is present; for psycopg2 and mysql-python, this
means not interpreting % signs in the string.
This only occurs with this option, and not
just if the param list is blank, as otherwise
this would produce inconsistent behavior
of SQL expressions that normally escape percent
signs (and while compiling, can't know ahead of
time if parameters will be present in
some cases). [ticket:2407]
Mike Bayer [Mon, 13 Feb 2012 21:04:57 +0000 (16:04 -0500)]
- [bug] Fixed bug whereby MappedCollection
would not get the appropriate collection
instrumentation if it were only used
in a custom subclass that used
@collection.internally_instrumented.
[ticket:2406]
- added docs for collection
Mike Bayer [Mon, 13 Feb 2012 00:06:49 +0000 (19:06 -0500)]
- break out sample URLs into individual, per-database sections each with a link
to the dialect page.
- add a section for unix domain sockets under psycopg2 [ticket:2393]
Mike Bayer [Sun, 12 Feb 2012 23:45:17 +0000 (18:45 -0500)]
- [feature] Added a new oracle create_engine() flag
coerce_to_decimal=False, disables the precision
numeric handling which can add lots of overhead
by converting all numeric values to
Decimal. [ticket:2399]
Mike Bayer [Sun, 12 Feb 2012 23:07:41 +0000 (18:07 -0500)]
- [feature] Added support for the "isolation_level"
parameter to all MySQL dialects. Thanks
to mu_mind for the patch here. [ticket:2394]
- add documentation examples for mysql, postgresql
- pep8ing
Mike Bayer [Sun, 12 Feb 2012 22:47:36 +0000 (17:47 -0500)]
- [bug] Index will raise when arguments passed
cannot be interpreted as columns or expressions.
Will warn when Index is created
with no columns at all. [ticket:2380]
Mike Bayer [Sun, 12 Feb 2012 22:28:20 +0000 (17:28 -0500)]
- [bug] Fixed bug whereby if a method name
conflicted with a column name, a
TypeError would be raised when the mapper
tried to inspect the __get__() method
on the method object. [ticket:2352]
Mike Bayer [Sun, 12 Feb 2012 21:43:26 +0000 (16:43 -0500)]
- add a context manager availble via Engine.begin()
- add a test suite for all the Engine/Connection/TLEngine transaction/begin
helpers/context managers
- update docs
Mike Bayer [Wed, 8 Feb 2012 22:41:40 +0000 (17:41 -0500)]
some work on the #1401 branch has discovered that this very old test is pointless;
it slightly exercises post_update but not much compared to modern tests,
and also illustrates a mapping that doesn't actually work currently.
Mike Bayer [Sun, 5 Feb 2012 21:58:32 +0000 (16:58 -0500)]
- [bug] Added support for using the .key
of a Column as a string identifier in a
result set row. The .key is currently
listed as an "alternate" name for a column,
and is superseded by the name of a column
which has that key value as its regular name.
For the next major release
of SQLAlchemy we may reverse this precedence
so that .key takes precedence, but this
is not decided on yet. [ticket:2392]
Mike Bayer [Sun, 5 Feb 2012 19:22:55 +0000 (14:22 -0500)]
- [bug] A significant change to how labeling
is applied to columns in SELECT statements
allows "truncated" labels, that is label names
that are generated in Python which exceed
the maximum identifier length (note this is
configurable via label_length on create_engine()),
to be properly referenced when rendered inside
of a subquery, as well as to be present
in a result set row using their original
in-Python names. [ticket:2396]
Mike Bayer [Wed, 1 Feb 2012 15:14:28 +0000 (10:14 -0500)]
- [feature] Added pool_reset_on_return argument
to create_engine, allows control over
"connection return" behavior. Also added
new arguments 'rollback', 'commit', None
to pool.reset_on_return to allow more control
over connection return activity. [ticket:2378]
Mike Bayer [Tue, 31 Jan 2012 00:52:07 +0000 (19:52 -0500)]
break out _save_obj(), _delete_obj(), _post_update() into a new module
persistence.py - Mapper loses awareness of how to emit INSERT/UPDATE/DELETE,
persistence.py is only used by unitofwork.py. Then break each method out
into a top level with almost no logic, calling into _organize_states_for_XYZ(),
_collect_XYZ_commands(), _emit_XYZ_statements().