Commit Graph

2307 Commits

Author SHA1 Message Date
Mike Bayer b9a2b58dd7 - Fixed bug in mutable extension as well as
:func:`.attributes.flag_modified` where the change event would not be
propagated if the attribute had been reassigned to itself.
fixes #2997
2014-03-19 11:09:38 -04:00
Mike Bayer fd8dbf8e78 Merge branch 'ca/dev/add_is_and_isnot_to_tutorial' of https://github.com/charlax/sqlalchemy 2014-03-17 17:27:21 -04:00
Mike Bayer 9ec01ab35a - Improved an error message which would occur if a query() were made
against a non-selectable, such as a :func:`.literal_column`, and then
an attempt was made to use :meth:`.Query.join` such that the "left"
side would be determined as ``None`` and then fail.  This condition
is now detected explicitly.
2014-03-17 16:25:51 -04:00
Mike Bayer e2214a61e8 typo 2014-03-16 14:51:06 -04:00
Mike Bayer fb09877270 - Added support for the not-quite-yet-documented `insert=True`
flag for :func:`.event.listen` to work with mapper / instance events.
2014-03-16 14:50:55 -04:00
Charles-Axel Dein fbfad42cb4 Add is_ and isnot filter to the tutorial
Most linter complain when comparing with None.
2014-03-15 14:42:43 -07:00
Mike Bayer 56e38b8e4e - fairly epic rework of the cascade documentation 2014-03-15 15:44:29 -04:00
Mike Bayer 11003828cb - Added support for literal rendering of boolean values, e.g.
"true" / "false" or "1" / "0".
- added Boolean tests to the test suite
2014-03-13 20:03:48 -04:00
Mike Bayer 36792434c7 - Added a new feature :func:.schema.conv, the purpose of which is to
mark a constraint name as already having had a naming convention applied.
This token will be used by Alembic migrations as of Alembic 0.6.4
in order to render constraints in migration scripts with names marked
as already having been subject to a naming convention.
re: #2991
2014-03-12 17:33:03 -04:00
Mike Bayer a7ef7eccaa :paramref:.MetaData.naming_convention feature will now also
apply to :class:`.CheckConstraint` objects that are associated
directly with a :class:`.Column` instead of just on the
:class:`.Table`.
2014-03-12 15:09:48 -04:00
Mike Bayer d85d6f9a3f - Fixed bug in new :paramref:.MetaData.naming_convention feature
where the name of a check constraint making use of the
`"%(constraint_name)s"` token would get doubled up for the
constraint generated by a boolean or enum type, and overall
duplicate events would cause the `"%(constraint_name)s"` token
to keep compounding itself.
fixes #2991
2014-03-12 14:46:55 -04:00
Mike Bayer 50f0d9be33 add a string example for self-refenretial many-to-many 2014-03-11 17:10:16 -04:00
Mike Bayer b7169f66d7 - A warning is emitted if the :meth:.MapperEvents.before_configured
or :meth:`.MapperEvents.after_configured` events are applied to a
specific mapper or mapped class, as the events are only invoked
for the :class:`.Mapper` target at the general level.
2014-03-11 12:39:00 -04:00
Mike Bayer 009df6a3d0 - Added a new keyword argument `once=True to :func:.event.listen`
and :func:`.event.listens_for`.  This is a convenience feature which
will wrap the given listener such that it is only invoked once.
2014-03-11 12:27:10 -04:00
Noufal Ibrahim 8b0bf57840 Fixes argument number in docs
The selectable is the third argument to with_polymorphic.
2014-03-11 17:22:01 +05:30
Mike Bayer 4175ca2050 - changelog for pullreq github:74
- various improvemnts to oracle docs, rewrite section on unicode, more linking,
enhance section on resolve_synonyms
2014-03-05 18:58:37 -05:00
Mike Bayer 48b82aebc3 - Fixed small issue in :class:.SingletonThreadPool where the current
connection to be returned might get inadvertently cleaned out during
the "cleanup" process.  Patch courtesy jd23.
2014-03-05 18:14:09 -05:00
Mike Bayer d6e8d5eddb - Fixed bug in association proxy where assigning an empty slice
(e.g. ``x[:] = [...]``) would fail on Py3k.
2014-03-04 10:59:27 -05:00
Mike Bayer f3becf64df add a seealso here 2014-03-04 00:44:57 -05:00
Mike Bayer ea05a23218 - Support has been added for pytest to run tests. This runner
is currently being supported in addition to nose, and will likely
be preferred to nose going forward.   The nose plugin system used
by SQLAlchemy has been split out so that it works under pytest as
well.  There are no plans to drop support for nose at the moment
and we hope that the test suite itself can continue to remain as
agnostic of testing platform as possible.  See the file
README.unittests.rst for updated information on running tests
with pytest.

The test plugin system has also been enhanced to support running
tests against mutiple database URLs at once, by specifying the ``--db``
and/or ``--dburi`` flags multiple times.  This does not run the entire test
suite for each database, but instead allows test cases that are specific
to certain backends make use of that backend as the test is run.
When using pytest as the test runner, the system will also run
specific test suites multiple times, once for each database, particularly
those tests within the "dialect suite".   The plan is that the enhanced
system will also be used by Alembic, and allow Alembic to run
migration operation tests against multiple backends in one run, including
third-party backends not included within Alembic itself.
Third party dialects and extensions are also encouraged to standardize
on SQLAlchemy's test suite as a basis; see the file README.dialects.rst
for background on building out from SQLAlchemy's test platform.
2014-03-03 15:55:17 -05:00
Mike Bayer 6750c39a4f - Fixed some test/feature failures occurring in Python 3.4,
in particular the logic used to wrap "column default" callables
wouldn't work properly for Python built-ins.
fixes #2979
2014-03-02 10:39:48 -05:00
Mike Bayer e58fdadb9b add a migration for this one 2014-02-28 14:23:44 -05:00
Mike Bayer 12ce2edc92 - Added a new option to :paramref:.relationship.innerjoin which is
to specify the string ``"nested"``.  When set to ``"nested"`` as opposed
to ``True``, the "chaining" of joins will parenthesize the inner join on the
right side of an existing outer join, instead of chaining as a string
of outer joins.   This possibly should have been the default behavior
when 0.9 was released, as we introduced the feature of right-nested
joins in the ORM, however we are keeping it as a non-default for now
to avoid further surprises.
fixes #2976
2014-02-28 14:15:13 -05:00
Mike Bayer e21cd0d95f - Fixed bug in :func:.tuple_ construct where the "type" of essentially
the first SQL expression would be applied as the "comparison type"
to a compared tuple value; this has the effect in some cases of an
inappropriate "type coersion" occurring, such as when a tuple that
has a mix of String and Binary values improperly coerces target
values to Binary even though that's not what they are on the left
side.  :func:`.tuple_` now expects heterogeneous types within its
list of values.
fixes #2977
2014-02-27 19:54:49 -05:00
Mike Bayer b6428219c6 - Fixed a regression in association proxy caused by 🎫2810 which
caused a user-provided "getter" to no longer receive values of ``None``
when fetching scalar values from a target that is non-present.  The
check for None introduced by this change is now moved into the default
getter, so a user-provided getter will also again receive values of
None.
re: #2810
2014-02-27 13:29:59 -05:00
Mike Bayer 2d146ddad9 - Removed stale names from `sqlalchemy.orm.interfaces.__all__` and
refreshed with current names, so that an ``import *`` from this
module again works.
fixes #2975
2014-02-26 19:27:22 -05:00
Mike Bayer 6aeec027a0 - Adjusted the logic which applies names to the .c collection when
a no-name :class:`.BindParameter` is received, e.g. via :func:`.sql.literal`
or similar; the "key" of the bind param is used as the key within
.c. rather than the rendered name.  Since these binds have "anonymous"
names in any case, this allows individual bound parameters to
have their own name within a selectable if they are otherwise unlabeled.
fixes #2974
2014-02-26 15:45:52 -05:00
Mike Bayer 302ad6228a - Some changes to how the :attr:.FromClause.c collection behaves
when presented with duplicate columns.  The behavior of emitting a
warning and replacing the old column with the same name still
remains to some degree; the replacement in particular is to maintain
backwards compatibility.  However, the replaced column still remains
associated with the ``c`` collection now in a collection ``._all_columns``,
which is used by constructs such as aliases and unions, to deal with
the set of columns in ``c`` more towards what is actually in the
list of columns rather than the unique set of key names.  This helps
with situations where SELECT statements with same-named columns
are used in unions and such, so that the union can match the columns
up positionally and also there's some chance of :meth:`.FromClause.corresponding_column`
still being usable here (it can now return a column that is only
in selectable.c._all_columns and not otherwise named).
The new collection is underscored as we still need to decide where this
list might end up.   Theoretically it
would become the result of iter(selectable.c), however this would mean
that the length of the iteration would no longer match the length of
keys(), and that behavior needs to be checked out.
fixes #2974
- add a bunch more tests for ColumnCollection
2014-02-26 15:34:49 -05:00
Mike Bayer bf67069d26 - Fixed issue in new :meth:.TextClause.columns method where the ordering
of columns given positionally would not be preserved.   This could
have potential impact in positional situations such as applying the
resulting :class:`.TextAsFrom` object to a union.
2014-02-26 13:28:14 -05:00
Mike Bayer f9492ef906 docs 2014-02-25 20:10:52 -05:00
Mike Bayer 33f07202ce - The new dialect-level keyword argument system for schema-level
constructs has been enhanced in order to assist with existing
schemes that rely upon addition of ad-hoc keyword arguments to
constructs.
- To suit the use case of allowing custom arguments at construction time,
the :meth:`.DialectKWArgs.argument_for` method now allows this registration.
fixes #2962
2014-02-25 19:52:17 -05:00
Mike Bayer e60529da79 - Fixed bug where events set to listen at the class
level (e.g. on the :class:`.Mapper` or :class:`.ClassManager`
level, as opposed to on an individual mapped class, and also on
:class:`.Connection`) that also made use of internal argument conversion
(which is most within those categories) would fail to be removable.
fixes #2973
2014-02-25 16:55:42 -05:00
Mike Bayer d966920b3d - Fixed regression from 0.8 where using an option like
:func:`.orm.lazyload` with the "wildcard" expression, e.g. ``"*"``,
would raise an assertion error in the case where the query didn't
contain any actual entities.  This assertion is meant for other cases
and was catching this one inadvertently.
2014-02-24 12:52:12 -05:00
Mike Bayer 537d921293 - Fixed bug in the versioned_history example where column-level INSERT
defaults would prevent history values of NULL from being written.
2014-02-24 12:34:54 -05:00
Mike Bayer 8b58c6adc2 more detail, what actually loads, etc. 2014-02-23 23:05:29 -05:00
Mike Bayer 948b14b65b -rewrite expire/refresh section 2014-02-23 16:30:09 -05:00
Mike Bayer ceaa6047ef - More fixes to SQLite "join rewriting"; the fix from 🎫2967
implemented right before the release of 0.9.3 affected the case where
a UNION contained nested joins in it.   "Join rewriting" is a feature
with a wide range of possibilities and is the first intricate
"SQL rewriting" feature we've introduced in years, so we're sort of
going through a lot of iterations with it (not unlike eager loading
back in the 0.2/0.3 series, polymorphic loading in 0.4/0.5). We should
be there soon so thanks for bearing with us :).
fixes #2969   re: #2967
- solve the issue of join rewriting inspecting various types of
from objects without using isinstance(), by adding some new
underscored inspection flags to the FromClause hierarchy.
2014-02-20 16:14:29 -05:00
Mike Bayer 5634a3f104 0.8.5 released same day 2014-02-19 23:05:06 -05:00
Mike Bayer b2fd85b7d5 0.9.3 2014-02-19 23:01:40 -05:00
Mike Bayer 57b214a0a4 - Added an additional message to psycopg2 disconnect detection,
"could not send data to server", which complements the existing
"could not receive data from server" and has been observed by users,
fixes #2936
2014-02-19 19:22:17 -05:00
Mike Bayer 69d1d08dc3 - re: #2967, also fixed a somewhat related issue where join rewriting would fail
on the columns clause of the SELECT statement if the targets were
aliased tables, as opposed to individual aliased columns.
2014-02-19 19:12:40 -05:00
Mike Bayer 25831872db - Fixed bug in SQLite "join rewriting" where usage of an exists() construct
would fail to be rewritten properly, such as when the exists is
mapped to a column_property in an intricate nested-join scenario. #2967
2014-02-19 19:04:04 -05:00
Mike Bayer 033463cd4b backport 2014-02-19 16:03:05 -05:00
Mike Bayer a552606091 - Added new MySQL-specific :class:.mysql.DATETIME which includes
fractional seconds support; also added fractional seconds support
to :class:`.mysql.TIMESTAMP`.  DBAPI support is limited, though
fractional seconds are known to be supported by MySQL Connector/Python.
Patch courtesy Geert JM Vanderkelen. #2941
2014-02-19 15:49:37 -05:00
Mike Bayer 0b4c0384f6 changelog for pullreq 12 2014-02-19 15:26:51 -05:00
Mike Bayer 77ed036525 - Fixed bug where calling :meth:.Insert.values with an empty list
or tuple would raise an IndexError.   It now produces an empty
insert construct as would be the case with an empty dictionary.
2014-02-19 15:18:22 -05:00
Mike Bayer dd32540dab - Fixed a critical regression caused by 🎫2880 where the newly
concurrent ability to return connections from the pool means that the
"first_connect" event is now no longer synchronized either, thus leading
to dialect mis-configurations under even minimal concurrency situations.
2014-02-19 10:48:32 -05:00
Mike Bayer ecdfc31774 - Support has been improved for Postgresql reflection behavior on very old
(pre 8.1) versions of Postgresql, and potentially other PG engines
such as Redshift (assuming Redshift reports the version as < 8.1).
The query for "indexes" as well as "primary keys" relies upon inspecting
a so-called "int2vector" datatype, which refuses to coerce to an array
prior to 8.1 causing failures regarding the "ANY()" operator used
in the query.  Extensive googling has located the very hacky, but
recommended-by-PG-core-developer query to use when PG version < 8.1
is in use, so index and primary key constraint reflection now work
on these versions.
2014-02-18 18:35:23 -05:00
Mike Bayer 5bc3b7fe6b - need qualifiers here... 2014-02-16 17:20:35 -05:00
Mike Bayer 5e100a70c5 - The SQLite dialect will now skip unsupported arguments when reflecting
types; such as if it encounters a string like ``INTEGER(5)``, the
:class:`.INTEGER` type will be instantiated without the "5" being included,
based on detecting a ``TypeError`` on the first attempt.
2014-02-16 17:20:18 -05:00