Commit Graph

5242 Commits

Author SHA1 Message Date
Mike Bayer 140e8254a2 - expect_warnings was not expecting and neither was assert_warnings
asserting.
2015-02-19 12:01:48 -05:00
Mike Bayer 145db3bed7 - repair merge failure 2015-02-19 12:01:22 -05:00
Mike Bayer b86b239c87 - autopep8 2015-02-19 11:37:44 -05:00
Mike Bayer 3209a73b92 - Mapped state internals have been reworked to allow for a 50% reduction
in callcounts specific to the "expiration" of objects, as in
the "auto expire" feature of :meth:`.Session.commit` and
for :meth:`.Session.expire_all`, as well as in the "cleanup" step
which occurs when object states are garbage collected.
fixes #3307
2015-02-18 16:08:19 -05:00
Mike Bayer 3eff76c4b0 - add the test_expire_lots test for comparison 2015-02-18 15:50:37 -05:00
Mike Bayer 3c46eb17ed - additional mysql cast-related test fixes 2015-02-09 20:49:19 -05:00
Mike Bayer af42398742 - The MySQL dialect now supports CAST on types that are constructed
as :class:`.TypeDecorator` objects.
2015-02-09 20:43:28 -05:00
Mike Bayer 8750596c11 - test skips for MySQL w new cast warning 2015-02-09 20:32:06 -05:00
Mike Bayer 1ad236127c - A warning is emitted when :func:.cast is used with the MySQL
dialect on a type where MySQL does not support CAST; MySQL only
supports CAST on a subset of datatypes.   SQLAlchemy has for a long
time just omitted the CAST for unsupported types in the case of
MySQL.  While we don't want to change this now, we emit a warning
to show that it's taken place.   A warning is also emitted when
a CAST is used with an older MySQL version (< 4) that doesn't support
CAST at all, it's skipped in this case as well.
fixes #3237
2015-02-09 15:29:14 -05:00
Mike Bayer 03038f7e75 - flake8 2015-02-09 15:08:52 -05:00
Mike Bayer 81aa5b376e - Literal values within a :class:.DefaultClause, which is invoked
when using the :paramref:`.Column.server_default` parameter, will
now be rendered using the "inline" compiler, so that they are rendered
as-is, rather than as bound parameters.
fixes #3087
2015-02-09 14:58:26 -05:00
Mike Bayer 7b9134be71 - test + changelog 2015-02-08 19:58:34 -05:00
Kai Groner 4a42bd5a2c Test for partial index support in sqlite dialects. 2015-01-26 14:48:23 -05:00
Mike Bayer c3d898e8d0 - Added new user-space accessors for viewing transaction isolation
levels; :meth:`.Connection.get_isolation_level`,
:attr:`.Connection.default_isolation_level`.
- enhance documentation inter-linkage between new accessors,
existing isolation_level parameters, as well as in
the dialect-level methods which should be fully covered
by Engine/Connection level APIs now.
2015-01-20 11:42:02 -05:00
Mike Bayer 10dd5fe810 formatting 2015-01-20 11:03:02 -05:00
Mike Bayer 234a5b9723 - restore r611883ffb35ca6664649f6328ae8 with additional fixes and an additional test
that is much more specific to #1326
2015-01-19 18:31:10 -05:00
Mike Bayer 26a1d8e77c - reverse the last commit temporarily as it breaks all the polymorphic cases 2015-01-19 18:00:21 -05:00
Mike Bayer 611883ffb3 - The primary :class:.Mapper of a :class:.Query is now passed to the
:meth:`.Session.get_bind` method when calling upon
:meth:`.Query.count`, :meth:`.Query.update`, :meth:`.Query.delete`,
as well as queries against mapped columns,
:obj:`.column_property` objects, and SQL functions and expressions
derived from mapped columns.   This allows sessions that rely upon
either customized :meth:`.Session.get_bind` schemes or "bound" metadata
to work in all relevant cases.
fixes #3227 fixes #3242 fixes #1326
2015-01-19 17:55:23 -05:00
Mike Bayer dacfe7dec2 - tests 2015-01-19 17:37:14 -05:00
Mike Bayer 6135c03230 - further fixes and even better tests for this block 2015-01-19 11:47:28 -05:00
Mike Bayer 28d0b8d1d1 - fix another issue from rf49c367ef, add another test 2015-01-18 23:32:52 -05:00
Mike Bayer f5d4f2685f - rework assertsql system, fixes #3293 2015-01-18 20:57:26 -05:00
Mike Bayer f49c367ef7 - fix a regression from ref #3178, where dialects that don't actually support
sane multi rowcount (e.g. pyodbc) would fail on multirow update.  add
a test that mocks this breakage into plain dialects
2015-01-17 21:58:49 -05:00
Mike Bayer 469b6fabaf - add an exclusion here that helps with the case of 3rd party
test suite redefining an existing test in test_suite
2015-01-17 12:46:20 -05:00
Mike Bayer f3a892a3ef - Custom dialects that implement :class:.GenericTypeCompiler can
now be constructed such that the visit methods receive an indication
of the owning expression object, if any.  Any visit method that
accepts keyword arguments (e.g. ``**kw``) will in most cases
receive a keyword argument ``type_expression``, referring to the
expression object that the type is contained within.  For columns
in DDL, the dialect's compiler class may need to alter its
``get_column_specification()`` method to support this as well.
The ``UserDefinedType.get_col_spec()`` method will also receive
``type_expression`` if it provides ``**kw`` in its argument
signature.
fixes #3074
2015-01-16 20:03:33 -05:00
Mike Bayer 79fa69f1f3 - Fixed bug where Postgresql dialect would fail to render an
expression in an :class:`.Index` that did not correspond directly
to a table-bound column; typically when a :func:`.text` construct
was one of the expressions within the index; or could misinterpret the
list of expressions if one or more of them were such an expression.
fixes #3174
2015-01-16 18:03:45 -05:00
Mike Bayer b63aae2c23 - The "wildcard" loader options, in particular the one set up by
the :func:`.orm.load_only` option to cover all attributes not
explicitly mentioned, now takes into account the superclasses
of a given entity, if that entity is mapped with inheritance mapping,
so that attribute names within the superclasses are also omitted
from the load.  Additionally, the polymorphic discriminator column
is unconditionally included in the list, just in the same way that
primary key columns are, so that even with load_only() set up,
polymorphic loading of subtypes continues to function correctly.
fixes #3287
2015-01-13 17:04:35 -05:00
Mike Bayer 92cc232726 - The multi-values version of :meth:.Insert.values has been
repaired to work more usefully with tables that have Python-
side default values and/or functions, as well as server-side
defaults. The feature will now work with a dialect that uses
"positional" parameters; a Python callable will also be
invoked individually for each row just as is the case with an
"executemany" style invocation; a server- side default column
will no longer implicitly receive the value explicitly
specified for the first row, instead refusing to invoke
without an explicit value. fixes #3288
2015-01-13 14:33:33 -05:00
Mike Bayer dc55ff6f99 repair formatting 2015-01-12 13:27:34 -05:00
Dimitris Theodorou f4b7b02e31 Add native_enum flag to Enum's repr() result
Needed for alembic autogenerate rendering.
2015-01-12 02:40:50 +01:00
Mike Bayer 67778e2062 - add a close here 2015-01-06 11:34:52 -05:00
Mike Bayer 57f684b4b4 - Fixed bug where if an exception were thrown at the start of a
:class:`.Query` before it fetched results, particularly when
row processors can't be formed, the cursor would stay open with
results pending and not actually be closed.  This is typically only
an issue on an interpreter like Pypy where the cursor isn't
immediately GC'ed, and can in some circumstances lead to transactions/
locks being open longer than is desirable.
fixes #3285
2015-01-05 21:38:19 -05:00
Mike Bayer 8257b3a017 - more callcounts
- add the platform key to the error output
2015-01-05 12:21:14 -05:00
Mike Bayer a324164933 - this is passing, no idea why 2015-01-04 21:05:53 -05:00
Mike Bayer 2a28dd9369 - callcounts
- this needs to be serializable and isn't high volume so just whack the slots
2015-01-04 21:01:27 -05:00
Mike Bayer 2f6ec41dc9 - fix test for new events 2015-01-04 19:43:48 -05:00
Mike Bayer b3bf7915b5 - scale back _Dispatch and _JoinedDispatcher to use a __getitem__ scheme
to start up listener collections; this pulls the overhead off of construction
and makes performance much like the descriptor version, while still allowing
slots.   Fix up some profiles.
2015-01-04 19:05:31 -05:00
Mike Bayer cf27232563 - wip - start factoring events so that we aren't using descriptors for dispatch,
allowing us to move to __slots__
2015-01-04 18:06:02 -05:00
Mike Bayer 315db703a6 - start trying to move things into __slots__. This seems to reduce the
size of the many per-column objects we're hitting, but somehow the overall memory is
hardly being reduced at all in initial testing
2015-01-04 01:53:42 -05:00
Mike Bayer 93742b3d5c - The :class:.mysql.SET type has been overhauled to no longer
assume that the empty string, or a set with a single empty string
value, is in fact a set with a single empty string; instead, this
is by default treated as the empty set.  In order to handle persistence
of a :class:`.mysql.SET` that actually wants to include the blank
value ``''`` as a legitimate value, a new bitwise operational mode
is added which is enabled by the
:paramref:`.mysql.SET.retrieve_as_bitwise` flag, which will persist
and retrieve values unambiguously using their bitflag positioning.
Storage and retrieval of unicode values for driver configurations
that aren't converting unicode natively is also repaired.
fixes #3283
2015-01-03 20:43:45 -05:00
Mike Bayer 01a22a673e - clean up SET tests 2015-01-03 18:49:14 -05:00
Mike Bayer 21f47124ab - restate sort_tables in terms of a more fine grained
sort_tables_and_constraints function.
- The DDL generation system of :meth:`.MetaData.create_all`
and :meth:`.Metadata.drop_all` has been enhanced to in most
cases automatically handle the case of mutually dependent
foreign key constraints; the need for the
:paramref:`.ForeignKeyConstraint.use_alter` flag is greatly
reduced.  The system also works for constraints which aren't given
a name up front; only in the case of DROP is a name required for
at least one of the constraints involved in the cycle.
fixes #3282
2015-01-01 20:17:06 -05:00
Mike Bayer 8f5e4acbf6 - Added a new accessor :attr:.Table.foreign_key_constraints
to complement the :attr:`.Table.foreign_keys` collection,
as well as :attr:`.ForeignKeyConstraint.referred_table`.
2015-01-01 13:39:42 -05:00
Mike Bayer d1ac6cb33a - Fixed bug where using a :class:.TypeDecorator that implemented
a type that was also a :class:`.TypeDecorator` would fail with
Python's "Cannot create a consistent method resolution order (MRO)"
error, when any kind of SQL comparison expression were used against
an object using this type.
2014-12-19 12:14:52 -05:00
Tony Locke 8038cfa077 pg8000 client_encoding in create_engine()
The pg8000 dialect now supports the setting of the PostgreSQL parameter
client_encoding from create_engine().
2014-12-16 20:55:55 +00:00
Mike Bayer 468db416db - rework sqlite FK and unique constraint system to combine both PRAGMA
and regexp parsing of SQL in order to form a complete picture of
constraints + their names.  fixes #3244 fixes #3261
- factor various PRAGMA work to be centralized into one call
2014-12-13 19:24:56 -05:00
Jon Nelson 85c04dd0bb - add test_get_unnamed_unique_constraints to SQLite reflection tests 2014-12-13 18:34:50 -05:00
Mike Bayer cf7981f60d - Added new method :meth:.Session.invalidate, functions similarly
to :meth:`.Session.close`, except also calls
:meth:`.Connection.invalidate`
on all connections, guaranteeing that they will not be returned to
the connection pool.  This is useful in situations e.g. dealing
with gevent timeouts when it is not safe to use the connection further,
even for rollbacks.
references #3258
2014-12-12 19:59:11 -05:00
Mike Bayer 08e02579e0 - update zoomark 2014-12-12 15:55:34 -05:00
Mike Bayer eee617e08e - rework the handle error on connect tests from test_parsconnect where
they don't really belong into a new suite in test_execute
2014-12-10 12:11:59 -05:00