summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
Commit message (Collapse)AuthorAgeFilesLines
* Perform fewer dict lookups - tiny microoptimizationpr/35Alex Gaynor2013-10-141-5/+4
|
* - Added new option to :func:`.relationship` ``distinct_target_key``.Mike Bayer2013-10-132-5/+44
| | | | | | | | | | | | | | | This enables the subquery eager loader strategy to apply a DISTINCT to the innermost SELECT subquery, to assist in the case where duplicate rows are generated by the innermost query which corresponds to this relationship (there's not yet a general solution to the issue of dupe rows within subquery eager loading, however, when joins outside of the innermost subquery produce dupes). When the flag is set to ``True``, the DISTINCT is rendered unconditionally, and when it is set to ``None``, DISTINCT is rendered if the innermost relationship targets columns that do not comprise a full primary key. The option defaults to False in 0.8 (e.g. off by default in all cases), None in 0.9 (e.g. automatic by default). Thanks to Alexander Koval for help with this. [ticket:2836]
* MySQL-connector dialect now allows options in the create_engineMike Bayer2013-10-131-2/+3
| | | | | | query string to override those defaults set up in the connect, including "buffered" and "raise_on_warnings". [ticket:2515]
* Parenthesis will be applied to a compound SQL expression asMike Bayer2013-10-121-1/+4
| | | | | rendered in the column list of a CREATE INDEX statement. [ticket:2742]
* - Fixed bug in default compiler plus those of postgresql, mysql, andMike Bayer2013-10-125-34/+15
| | | | | | | | mssql to ensure that any literal SQL expression values are rendered directly as literals, instead of as bound parameters, within a CREATE INDEX statement. [ticket:2742] - don't need expression_as_ddl(); literal_binds and include_table take care of this functionality.
* use accepts scalar loader here so we deal with _ProxyImpl correctlyMike Bayer2013-10-111-6/+4
|
* - fix bug due to regression from #2793, make sure we only go to loadMike Bayer2013-10-112-2/+11
| | | | | scalar attributes here and not relationships, else we get an error if there's no actual scalars to load
* The ``default`` argument of :class:`.Column` now accepts a classMike Bayer2013-10-111-1/+1
| | | | | or object method as an argument, in addition to a standalone function; will properly detect if the "context" argument is accepted or not.
* The "name" attribute is set on :class:`.Index` before the "attach"Mike Bayer2013-10-111-3/+4
| | | | | | events are called, so that attachment events can be used to dynamically generate a name for the index based on the parent table and/or columns. [ticket:2835]
* - The method signature of :meth:`.Dialect.reflecttable`, which inMike Bayer2013-10-112-11/+12
| | | | | | | all known cases is provided by :class:`.DefaultDialect`, has been tightened to expect ``include_columns`` and ``exclude_columns`` arguments without any kw option, reducing ambiguity - previously ``exclude_columns`` was missing. [ticket:2748]
* A :func:`.select` that is made to refer to itself in its FROM clause,Mike Bayer2013-10-081-0/+3
| | | | | | typically via in-place mutation, will raise an informative error message rather than causing a recursion overflow. [ticket:2815]
* Fixed bug where using an annotation such as :func:`.remote` orMike Bayer2013-10-081-1/+6
| | | | | | | :func:`.foreign` on a :class:`.Column` before association with a parent :class:`.Table` could produce issues related to the parent table not rendering within joins, due to the inherent copy operation performed by an annotation. [ticket:2813]
* The erroneous kw arg "schema" has been removed from the :class:`.ForeignKey`Mike Bayer2013-10-081-1/+0
| | | | | object. this was an accidental commit that did nothing; a warning is raised in 0.8.3 when this kw arg is used. [ticket:2831]
* - fix a bunch of test failuresMike Bayer2013-10-081-1/+1
|
* - add an option to Bundle single_entity=True to allow for singleMike Bayer2013-10-072-3/+25
| | | | entity returns without otherwise changing much [ticket:2824]
* - fix a glitch with how the default thing worked outMike Bayer2013-10-071-4/+5
|
* - add some tests for propagate of wildcard lazyloadMike Bayer2013-10-062-5/+5
|
* 11th hour realization that Load() needs to do the _chop_path() thing asMike Bayer2013-10-062-25/+55
| | | | well. this probably has some bugs
* - merge ticket_1418 branch, [ticket:1418]Mike Bayer2013-10-0611-878/+1190
| | | | | | | | | | | | | - The system of loader options has been entirely rearchitected to build upon a much more comprehensive base, the :class:`.Load` object. This base allows any common loader option like :func:`.joinedload`, :func:`.defer`, etc. to be used in a "chained" style for the purpose of specifying options down a path, such as ``joinedload("foo").subqueryload("bar")``. The new system supersedes the usage of dot-separated path names, multiple attributes within options, and the usage of ``_all()`` options. - Added a new load option :func:`.orm.load_only`. This allows a series of column names to be specified as loading "only" those attributes, deferring the rest.
* - fix propagation of quote flag within _gen_label() so that if theMike Bayer2013-10-051-1/+8
| | | | | | name is already an instance of _anonymous_label(), we don't downgrade it to a plain quoted_name - fixes regression from [ticket:2812]. [ticket:2834]
* fix entity_zero resolutionMike Bayer2013-10-041-1/+10
|
* - A new construct :class:`.Bundle` is added, which allows for specificationMike Bayer2013-10-035-11/+204
| | | | | | | | | | | | | | | | of groups of column expressions to a :class:`.Query` construct. The group of columns are returned as a single tuple by default. The behavior of :class:`.Bundle` can be overridden however to provide any sort of result processing to the returned row. One example included is :attr:`.Composite.Comparator.bundle`, which applies a bundled form of a "composite" mapped attribute. [ticket:2824] - The :func:`.composite` construct now maintains the return object when used in a column-oriented :class:`.Query`, rather than expanding out into individual columns. This makes use of the new :class:`.Bundle` feature internally. This behavior is backwards incompatible; to select from a composite column which will expand out, use ``MyClass.some_composite.clauses``.
* - add support for removal of instance methods as event listeners, takingMike Bayer2013-10-011-2/+6
| | | | into account the id() of the function itself and self, [ticket:2832]
* - put exact version string in the testMike Bayer2013-09-291-2/+2
| | | | - use match with a .* preceding instead of search
* Merge pull request #26 from hackop/ticket_2819mike bayer2013-09-291-1/+1
|\ | | | | re.match to re.search
| * re.match to re.searchpr/26Scott Schaefer2013-09-061-1/+1
| | | | | | | | | | Convert to re.search to eliminate the restriction on only matching the beginning of the string
* | Merge pull request #25 from gthb/ticket_2821mike bayer2013-09-292-3/+10
|\ \ | | | | | | Hide password in URL and Engine __repr__
| * | Hide password in URL and Engine __repr__pr/25Gunnlaugur Þór Briem2013-09-062-3/+10
| |/ | | | | | | Fixes #2821
* | Replace a big loop + dict lookup in Connection.execute() with a simple visitorpr/30Alex Gaynor2013-09-256-18/+22
| | | | | | | | pattern
* | - Removed some now unneeded version checks [ticket:2829] courtesy alex gaynorMike Bayer2013-09-222-12/+1
| |
* | - modify what we did in [ticket:2793] so that we can also set theMike Bayer2013-09-063-7/+10
|/ | | | | version id programmatically outside of the generator. using this system, we can also leave the version id alone.
* Fixed Query.exists() method for the case, when query doesn't have any ↵Vladimir Magamedov2013-09-041-1/+1
| | | | filters applied.
* add caveats regarding RETURNINGMike Bayer2013-09-022-3/+59
|
* plus some more adjustments for mysql, or in general if an Index refers toMike Bayer2013-08-281-1/+9
| | | | in-python only cols
* Fixed bug where using the ``column_reflect`` event to change the ``.key``Mike Bayer2013-08-281-6/+17
| | | | | | of the incoming :class:`.Column` would prevent primary key constraints, indexes, and foreign key constraints from being correctly reflected. Also in 0.8.3. [ticket:2811]
* - fix bug here in profiling.pyMike Bayer2013-08-281-11/+11
| | | | - callcount
* comment this alternative approach...Mike Bayer2013-08-281-0/+7
|
* - rework the profile thing to just rewrite all failing numbers when ↵Mike Bayer2013-08-281-6/+18
| | | | | | --write-profiles is set - some sqlite callcounts
* - cx_oracle seems to have a bug here though it is hard to track downMike Bayer2013-08-272-2/+0
| | | | - cx_oracle dialect doesn't use normal col names, lets just not rely on that for now
* more seealsos...Mike Bayer2013-08-271-3/+4
|
* - A rework to the way that "quoted" identifiers are handled, in thatMike Bayer2013-08-2714-127/+317
| | | | | | | | | | | | | | | | instead of relying upon various ``quote=True`` flags being passed around, these flags are converted into rich string objects with quoting information included at the point at which they are passed to common schema constructs like :class:`.Table`, :class:`.Column`, etc. This solves the issue of various methods that don't correctly honor the "quote" flag such as :meth:`.Engine.has_table` and related methods. The :class:`.quoted_name` object is a string subclass that can also be used explicitly if needed; the object will hold onto the quoting preferences passed and will also bypass the "name normalization" performed by dialects that standardize on uppercase symbols, such as Oracle, Firebird and DB2. The upshot is that the "uppercase" backends can now work with force-quoted names, such as lowercase-quoted names and new reserved words. [ticket:2812]
* - ensure rowcount is returned for an UPDATE with no implicit returningMike Bayer2013-08-252-7/+6
| | | | | - modernize test for that - use py3k compatible next() in test_returning/test_versioning
* - restore constructor docs blown away in the mergeMike Bayer2013-08-251-0/+141
|
* - The ``version_id_generator`` parameter of ``Mapper`` can now be specifiedMike Bayer2013-08-258-224/+293
| | | | | | | | | | | | | | | | | | | | | to rely upon server generated version identifiers, using triggers or other database-provided versioning features, by passing the value ``False``. The ORM will use RETURNING when available to immediately load the new version identifier, else it will emit a second SELECT. [ticket:2793] - The ``eager_defaults`` flag of :class:`.Mapper` will now allow the newly generated default values to be fetched using an inline RETURNING clause, rather than a second SELECT statement, for backends that support RETURNING. - Added a new variant to :meth:`.ValuesBase.returning` called :meth:`.ValuesBase.return_defaults`; this allows arbitrary columns to be added to the RETURNING clause of the statement without interfering with the compilers usual "implicit returning" feature, which is used to efficiently fetch newly generated primary key values. For supporting backends, a dictionary of all fetched values is present at :attr:`.ResultProxy.returned_defaults`. - add a glossary entry for RETURNING - add documentation for version id generation, [ticket:867]
* forgot to add system to the copy() methodMike Bayer2013-08-251-0/+1
| | | | | Conflicts: lib/sqlalchemy/schema.py
* added "system=True" to Column, so that we generally don't have to botherMike Bayer2013-08-253-5/+26
| | | | with CreateColumn rules
* Merge pull request #23 from yoloseem/mastermike bayer2013-08-252-3/+3
|\ | | | | Fixed two typos.
| * fix typospr/23Hyunjun Kim2013-08-252-3/+3
| |
* | - The :class:`.CreateColumn` construct can be appled to a customMike Bayer2013-08-242-3/+34
|/ | | | | compilation rule which allows skipping of columns, by producing a rule that returns ``None``. Also in 0.8.3.
* - "primary mapper entity" is now an attribute on Query,Mike Bayer2013-08-241-16/+11
| | | | | | | | making _MapperEntity slightly less dependent on a particular parent Query (in theory more shareable by multiple Query objects in different contexts) - remove some comments that have been misunderstanding what _mapper_entities does, or perhaps forgot to get removed - simplify _mapper_entities