| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
| |
When the class_ passed is not a mapped class but is actually an iterable, the string formatting operation fails with a TypeError, and the expected ArgumentError is not raised. Calling code which is using reflection and expects this error will fail (e.g. the sadisplay module).
|
| |
|
| |
|
|\ |
|
| | |
|
| |
| |
| |
| |
| |
| | |
correct string class when setting up a backref based on a name,
therefore causing the error "too many values to unpack". This was
related to the Py3k conversion. [ticket:2901]
|
|/
|
|
|
|
|
|
|
|
| |
alias when saying query(B).join(B.cs), where "C" is a joined inh
class; however, this implicit alias was created only considering
the immediate left side, and not a longer chain of joins along different
joined-inh subclasses of the same base. As long as we're still
implicitly aliasing in this case, the behavior is dialed back a bit
so that it will alias the right side in a wider variety of cases.
[ticket:2903]
|
| |
|
| |
|
|
|
|
|
|
|
| |
the query runs after the loading process has begun; this is so that
the subqueryload takes precedence over other loaders that may be
hitting the same attribute due to other eager/noload situations
at the wrong time. [ticket:2887]
|
|
|
|
|
|
|
| |
select/alias on the base, where the PK columns were also not same
named; the persistence system would fail to copy primary key values
from the base table to the inherited table upon INSERT.
[ticket:2885]
|
| |
|
|
|
|
| |
not be superseded. both have a potential use.
|
|
|
|
| |
composites to many-to-ones now also
|
|
|
|
|
|
| |
columns/attribute (names) passed don't resolve to a Column or mapped
attribute (such as an erroneous tuple); previously raised an unbound
local. [ticket:2889]
|
|
|
|
|
|
|
| |
doesn't resolve to a class or mapper has been corrected to work
the same way as when a non-string arg is received, which indicates
the name of the relationship which had the configurational error.
[ticket:2888]
|
|
|
|
|
|
|
|
|
|
| |
now can accomodate additional information about the "reason" for
the exception; the :class:`.Session` now adds some detail to it
when the exception occurs within an autoflush. This approach
is taken as opposed to combining :class:`.FlushError` with
a Python 3 style "chained exception" approach so as to maintain
compatibility both with Py2K code as well as code that already
catches ``IntegrityError`` or similar.
|
| |
|
|
|
|
|
|
|
| |
:func:`.validates` function; when set to False, a validation event
will not be triggered if the event was initated as a backref to
an attribute operation from the other side. [ticket:1535]
- break out validation tests into an updated module test_validators
|
|
|
|
| |
- put list.clear() instrumentation under "if not py2k"
|
|\
| |
| |
| | |
github.com:schettino72/sqlalchemy into list_clear
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
are still useful, just include notes that for more complex descriptor operations,
hybrids are probably preferable
|
|\ \
| | |
| | | |
Fix sessionmaker.__repr__
|
| | |
| | |
| | | |
A comma separating 'class_' from the other args. It's still there even when kw is empty, which is syntactically correct.
|
|\ \ \
| | | |
| | | | |
More fixes for cross references and reducing warnings (3rd wave)
|
| | | | |
|
| |/ / |
|
| | |
| | |
| | |
| | | |
here is that "lockmode" is also public in Session.refresh().
|
| | |
| | |
| | |
| | |
| | | |
- implement Query with_for_update()
- rework docs and tests
|
| | |
| | |
| | |
| | |
| | |
| | | |
- move out tests, dialect specific out of compiler, compiler tests use new API,
legacy API tests in test_selecatble
- add support for adaptation of ForUpdateArg, alias support in compilers
|
| | | |
|
|\ \ \
| | | |
| | | |
| | | | |
for_update_of
|
| | | | |
|
| | | | |
|
| | |/
| |/| |
|
| | |
| | |
| | |
| | | |
didn't match. use straight memoized_props here for now, add a perf test to check it
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
to descriptors, like hybrids, synonyms, composites, user-defined
descriptors, etc. The attribute
adaptation which goes on has been made more robust, such that if a descriptor
returns another instrumented attribute, rather than a compound SQL
expression element, the operation will still proceed.
Addtionally, the "adapted" operator will retain its class; previously,
a change in class from ``InstrumentedAttribute`` to ``QueryableAttribute``
(a superclass) would interact with Python's operator system such that
an expression like ``aliased(MyClass.x) > MyClass.x`` would reverse itself
to read ``myclass.x < myclass_1.x``. The adapted attribute will also
refer to the new :class:`.AliasedClass` as its parent which was not
always the case before. [ticket:2872]
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
attribute history from being written on behalf of the target attribute.
This has the effect of the object not being written to the
Session.dirty list if it is mutated. Previously, the object would
be present in Session.dirty, but no change would take place on behalf
of the modified attribute during flush. The attribute still emits
events such as backref events and user-defined events and will still
receive mutations from backrefs. [ticket:2833]
|
| |/
|/|
| |
| | |
:class:`.scoped_session`.
|
|\ \ |
|
| | | |
|
| | | |
|
| | | |
|
|/ /
| |
| |
| | |
the :attr:`.Query.column_descriptions` attribute to fail.
|
| | |
|
|/ |
|
|
|
|
|
|
| |
query being generated would produce a "columns being replaced"
warning for a statement with two same-named columns,
as the internal SELECT wouldn't have use_labels set.
|
| |
|