Commit Graph

8702 Commits

Author SHA1 Message Date
Mike Bayer 2a25e42c08 - Fixed bug where :meth:.Query.get would fail to consistently
raise the :class:`.InvalidRequestError` that invokes when called
on a query with existing criterion, when the given identity is
already present in the identity map. [ticket:2951]
2014-02-10 16:33:48 -05:00
Mike Bayer ab738c21aa - Fixed an 0.9 regression where ORM instance or mapper events applied
to a base class such as a declarative base with the propagate=True
flag would fail to apply to existing mapped classes which also
used inheritance due to an assertion.  Addtionally, repaired an
attribute error which could occur during removal of such an event,
depending on how it was first assigned. [ticket:2949]
2014-02-09 16:47:20 -05:00
Mike Bayer ee88e648f7 - Fixed bug where the :class:.AutomapBase class of the
new automap extension would fail if classes
were pre-arranged in single or potentially joined inheritance patterns.
The repaired joined inheritance issue could also potentially apply when
using :class:`.DeferredReflection` as well.
2014-02-08 21:24:13 -05:00
Mike Bayer 5c188f6c1c - More issues with [ticket:2932] first resolved in 0.9.2 where
using a column key of the form ``<tablename>_<columnname>``
matching that of an aliased column in the text would still not
match at the ORM level, which is ultimately due to a core
column-matching issue.  Additional rules have been added so that the
column ``_label`` is taken into account when working with a
:class:`.TextAsFrom` construct or with literal columns.
[ticket:2932]
2014-02-05 19:25:13 -05:00
Mike Bayer c5dccd82da - Fixed regression in new "naming convention" feature where conventions
would fail if the referred table in a foreign key contained a schema
name.  Pull request courtesy Thomas Farvour. pullreq github:67
2014-02-05 16:54:31 -05:00
Tom Farvour d006198e17 Add naming convention support when using schema in the metadata. 2014-02-05 15:40:55 -06:00
Mike Bayer 16cd07c4f8 - Fixed bug where so-called "literal render" of :func:.bindparam
constructs would fail if the bind were constructed with a callable,
rather than a direct value.  This prevented ORM expressions
from being rendered with the "literal_binds" compiler flag.
2014-02-05 12:03:46 -05:00
Mike Bayer b069127b2d - Improved the initialization logic of composite attributes such that
calling ``MyClass.attribute`` will not require that the configure
mappers step has occurred, e.g. it will just work without throwing
any error. [ticket:2935]
2014-02-03 19:13:16 -05:00
Mike Bayer 69a66d58c2 0.9.3 2014-02-03 12:13:17 -05:00
Mike Bayer 7a9e8b2312 - this seems to be the best string for pymysql 2014-02-03 12:11:23 -05:00
Mike Bayer 8b08b1a35b - Fixed bug which prevented MySQLdb-based dialects (e.g.
pymysql) from working in Py3K, where a check for "connection
charset" would fail due to Py3K's more strict value comparison
rules.  The call in question  wasn't taking the database
version into account in any case as the server version was
still None at that point, so the method overall has been
simplified to rely upon connection.character_set_name().
[ticket:2933]
2014-02-03 12:04:51 -05:00
Mike Bayer 37d1f8983c typo rel_0_9_2 2014-02-02 19:28:41 -05:00
Mike Bayer 064df1d1ee 0.9.2 2014-02-02 19:19:24 -05:00
Mike Bayer b85f0b5681 - Added a tweak to the "history_meta" example where the check for
"history" on a relationship-bound attribute will now no longer emit
any SQL if the relationship is unloaded.
2014-02-02 19:05:36 -05:00
Mike Bayer 1b8a495767 - add a few missing methods to the cymysql dialect 2014-02-02 18:20:16 -05:00
Mike Bayer 4b39670875 - lets intersphinx the new alembic article on constraint names 2014-02-02 18:01:59 -05:00
Mike Bayer 0326f3cf01 - Added :paramref:.MetaData.reflect.**dialect_kwargs
to support dialect-level reflection options for all :class:`.Table`
objects reflected.

- Added a new dialect-level argument ``postgresql_ignore_search_path``;
this argument is accepted by both the :class:`.Table` constructor
as well as by the :meth:`.MetaData.reflect` method.  When in use
against Postgresql, a foreign-key referenced table which specifies
a remote schema name will retain that schema name even if the name
is present in the ``search_path``; the default behavior since 0.7.3
has been that schemas present in ``search_path`` would not be copied
to reflected :class:`.ForeignKey` objects.  The documentation has been
updated to describe in detail the behavior of the ``pg_get_constraintdef()``
function and how the ``postgresql_ignore_search_path`` feature essentially
determines if we will honor the schema qualification reported by
this function or not. [ticket:2922]
2014-02-02 16:33:54 -05:00
Mike Bayer 4ed4266803 - use from_statement() for the ORM column test
- with select_from(), add external order by so that Oracle orders correctly
2014-02-02 14:40:23 -05:00
Mike Bayer 2d4b457924 - The behavior of :meth:.Table.tometadata has been adjusted such that
the schema target of a :class:`.ForeignKey` will not be changed unless
that schema matches that of the parent table.  That is, if
a table "schema_a.user" has a foreign key to "schema_b.order.id",
the "schema_b" target will be maintained whether or not the
"schema" argument is passed to :meth:`.Table.tometadata`.  However
if a table "schema_a.user" refers to "schema_a.order.id", the presence
of "schema_a" will be updated on both the parent and referred tables.
This is a behavioral change hence isn't likely to be backported to
0.8; it is assumed that the previous behavior is pretty buggy
however and that it's unlikely anyone was relying upon it.

Additionally, a new parameter has been added
:paramref:`.Table.tometadata.referred_schema_fn`.  This refers to a
callable function which will be used to determine the new referred
schema for any :class:`.ForeignKeyConstraint` encountered in the
tometadata operation.  This callable can be used to revert to the
previous behavior or to customize how referred schemas are treated
on a per-constraint basis.  [ticket:2913]

- rework the tests in test.sql.test_metadata, all the "tometadata" tests
now under new class ToMetaDataTest
2014-02-02 14:37:43 -05:00
Mike Bayer 29de1077b3 - Fixed bug in new :class:.TextAsFrom construct where :class:.Column-
oriented row lookups were not matching up to the ad-hoc :class:`.ColumnClause`
objects that :class:`.TextAsFrom` generates, thereby making it not
usable as a target in :meth:`.Query.from_statement`.  Also fixed
:meth:`.Query.from_statement` mechanics to not mistake a :class:`.TextAsFrom`
for a :class:`.Select` construct.  This bug is also an 0.9 regression
as the :meth:`.Text.columns` method is called to accommodate the
:paramref:`.text.typemap` argument. [ticket:2932]
2014-02-02 11:06:08 -05:00
Mike Bayer 5b0919f3f5 - Added a new feature which allows automated naming conventions to be
applied to :class:`.Constraint` and :class:`.Index` objects.  Based
on a recipe in the wiki, the new feature uses schema-events to set up
names as various schema objects are associated with each other.  The
events then expose a configuration system through a new argument
:paramref:`.MetaData.naming_convention`.  This system allows production
of both simple and custom naming schemes for constraints and indexes
on a per-:class:`.MetaData` basis.  [ticket:2923]

commit 7e65e52c086652de3dd3303c723f98f09af54db8
Author: Mike Bayer <mike_mp@zzzcomputing.com>
Date:   Sat Feb 1 15:09:04 2014 -0500

    - first pass at new naming approach
2014-02-01 18:21:04 -05:00
Mike Bayer 32a1db3685 add a skip for oracle on this 2014-02-01 13:22:43 -05:00
Mike Bayer b8178a0bba - don't duplicate docs for Pool within QueuePool
- add huge warning regarding how use_threadlocal probably not what you want
2014-01-31 23:13:13 -05:00
Mike Bayer 33c7cfff6e - Added a new directive used within the scope of an attribute "set" operation
to disable autoflush, in the case that the attribute needs to lazy-load
the "old" value, as in when replacing one-to-one values or some
kinds of many-to-one.  A flush at this point otherwise occurs
at the point that the attribute is None and can cause NULL violations.
[ticket:2921]
2014-01-31 19:57:38 -05:00
Mike Bayer 6b3ecd14ea - Added a new parameter :paramref:.Operators.op.is_comparison. This
flag allows a custom op from :meth:`.Operators.op` to be considered
as a "comparison" operator, thus usable for custom
:paramref:`.relationship.primaryjoin` conditions.
2014-01-31 19:14:08 -05:00
Mike Bayer b360dbf7eb - Fixed bug whereby SQLite compiler failed to propagate compiler arguments
such as "literal binds" into a CAST expression.
- Fixed bug whereby binary type would fail in some cases
if used with a "test" dialect, such as a DefaultDialect or other
dialect with no DBAPI.
- Fixed bug where "literal binds" wouldn't work with a bound parameter
that's a binary type.  A similar, but different, issue is fixed
in 0.8.
2014-01-31 17:57:17 -05:00
Mike Bayer 4b57df9e30 changelog 2014-01-31 17:31:46 -05:00
Mike Bayer 8afb69ced8 - Fixed regression whereby the "annotation" system used by the ORM was leaking
into the names used by standard functions in :mod:`sqlalchemy.sql.functions`,
such as ``func.coalesce()`` and ``func.max()``.  Using these functions
in ORM attributes and thus producing annotated versions of them could
corrupt the actual function name rendered in the SQL. [ticket:2927]
2014-01-29 17:33:28 -05:00
Mike Bayer 00e78f5f76 - better way to do it 2014-01-29 14:57:18 -05:00
Mike Bayer 7d56e4f135 - add TypeError handling to the tests here, ensure TypeError
for the control is a TypeError for the row, as is raised on py3k when
less/greater operators are used on incompatible types
2014-01-29 14:55:58 -05:00
Mike Bayer d4c908ded1 - Fixed 0.9 regression where the new sortable support for :class:.RowProxy
would lead to ``TypeError`` when compared to non-tuple types as it attempted
to apply tuple() to the "other" object unconditionally.  The
full range of Python comparison operators have now been implemented on
:class:`.RowProxy`, using an approach that guarantees a comparison
system that is equivalent to that of a tuple, and the "other" object
is only coerced if it's an instance of RowProxy. [ticket:2924]
2014-01-28 23:43:14 -05:00
Mike Bayer d8d03011b8 - repair the fixture/test here to make sure state isn't left over causing other tests to fail 2014-01-27 13:34:33 -05:00
Mike Bayer d20d7549fd - docs 2014-01-26 20:02:08 -05:00
Mike Bayer ae3f2abe06 updates 2014-01-26 01:04:41 -05:00
Mike Bayer 9ad0e9a842 hypothetical "floaty thing" for navigation, doesn't really work yet 2014-01-25 17:26:07 -05:00
Mike Bayer 505ce79690 tweak text 2014-01-25 16:55:17 -05:00
Mike Bayer 38519e31b9 seealsos in the tutorial 2014-01-25 16:37:30 -05:00
Mike Bayer 7d45c88093 case 2014-01-25 16:20:46 -05:00
Mike Bayer fcc7e5b794 - start building out very comprehensive docstrings for core functions 2014-01-25 15:36:09 -05:00
Mike Bayer e2562fb9d9 lets document join() 2014-01-24 22:48:26 -05:00
Mike Bayer fd7b951f9d - doc updates, include links to create_engine from tutorials, cleanup
and modernize the engines chapter a bit
2014-01-23 19:38:46 -05:00
Mike Bayer 0234387188 typo 2014-01-23 17:45:13 -05:00
Mike Bayer 761511f3f2 - remove this leftover commented pdb 2014-01-23 14:50:23 -05:00
Mike Bayer 15b23c7f71 - Fixed an 0.9 regression where the automatic aliasing applied by
:class:`.Query` and in other situations where selects or joins
were aliased (such as joined table inheritance) could fail if a
user-defined :class:`.Column` subclass were used in the expression.
In this case, the subclass would fail to propagate ORM-specific
"annotations" along needed by the adaptation.  The "expression
annotations" system has been corrected to account for this case.
[ticket:2918]
2014-01-23 14:49:04 -05:00
mike bayer 9fef2c314b Merge pull request #60 from wichert/mutable-doc-import
Remove uneeded import from code example
2014-01-23 09:39:44 -08:00
Mike Bayer 7b90923eb1 used the wrong join 2014-01-22 21:42:56 -05:00
Mike Bayer 743ceb045e - Support is improved for supplying a :func:.join construct as the
target of :paramref:`.relationship.secondary` for the purposes
of creating very complex :func:`.relationship` join conditions.
The change includes adjustments to query joining, joined eager loading
to not render a SELECT subquery, changes to lazy loading such that
the "secondary" target is properly included in the SELECT, and
changes to declarative to better support specification of a
join() object with classes as targets.
2014-01-22 20:16:47 -05:00
Mike Bayer 1732414076 - Added new test coverage for so-called "down adaptions" of SQL types,
where a more specific type is adapted to a more generic one - this
use case is needed by some third party tools such as ``sqlacodegen``.
The specific cases that needed repair within this test suite were that
of :class:`.mysql.ENUM` being downcast into a :class:`.types.Enum`,
and that of SQLite date types being cast into generic date types.
The ``adapt()`` method needed to become more specific here to counteract
the removal of a "catch all" ``**kwargs`` collection on the base
:class:`.TypeEngine` class that was removed in 0.9. [ticket:2917]
2014-01-22 15:38:00 -05:00
Mike Bayer ee1f4d2103 - add redshift-sqlalchemy, essentially fixes [ticket:2727] 2014-01-21 19:33:25 -05:00
Mike Bayer 39ccdab8d5 - update docs for Numeric/Float, in particular warn against using mismatched
types (e.g. [ticket:2916])
2014-01-21 13:29:04 -05:00