summaryrefslogtreecommitdiff
path: root/lib
Commit message (Collapse)AuthorAgeFilesLines
...
| * | Use cx_oracle.LONG_STRING /LONG_BINARY for CLOB/BLOBMike Bayer2020-05-082-8/+27
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | Changed the implementation of fetching CLOB and BLOB objects to use cx_Oracle's native implementation which fetches CLOB/BLOB objects inline with other result columns, rather than performing a separate fetch. As always, this can be disabled by setting auto_convert_lobs to False. As part of this change, the behavior of a CLOB that was given a blank string on INSERT now returns None on SELECT, which is now consistent with that of VARCHAR on Oracle. Fixes: #5314 Change-Id: I7b46c91704b6f5d6c157e083505dac6e0cb3ef6e
* | Merge "Warn when sorted_tables is not actually sorting"mike bayer2020-05-093-25/+81
|\ \
| * | Warn when sorted_tables is not actually sortingMike Bayer2020-05-073-25/+81
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | A warning is emitted when making use of the :attr:`.MetaData.sorted_tables` attribute as well as the :func:`_schema.sort_tables` function, and the given tables cannot be correctly sorted due to a cyclic dependency between foreign key constraints. In this case, the functions will no longer sort the involved tables by foreign key, and a warning will be emitted. Other tables that are not part of the cycle will still be returned in dependency order. Previously, the sorted_table routines would return a collection that would unconditionally omit all foreign keys when a cycle was detected, and no warning was emitted. Fixes: #5316 Change-Id: I14f72ccf39cb568bc77e8da16d0685718b2b9960
* | Merge "Add sync_backref flag in a relationship"mike bayer2020-05-082-26/+77
|\ \ | |/ |/|
| * Add sync_backref flag in a relationshipFederico Caselli2020-05-052-26/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | Introduce :paramref:`_orm.relationship.sync_backref` flag in a relationship to control if the synchronization events that mutate the in-Python attributes are added. This flag is implied in a ``viewonly=True`` relationship. This supersedes the previous change #5149, that warned that ``viewonly=True`` relationship target of a back_populates or backref configuration would be disallowed. Fixes: #5237 Change-Id: I22c5ba28dcea22fc78a83e68e667140edffc515c
* | Merge "Add warn_deprecated_limited feature"mike bayer2020-05-061-0/+11
|\ \
| * | Add warn_deprecated_limited featureGord Thompson2020-05-011-0/+11
| | | | | | | | | | | | | | | Fixes: #5268 Change-Id: I2f976048af4f8d6dd03a14efa31d179bd7324ba6
* | | Merge "fixes #4212 raise an error if selectable and flat/aliased are sent to ↵mike bayer2020-05-061-0/+7
|\ \ \ | | | | | | | | | | | | with_polymorphic simultaenously"
| * | | fixes #4212 raise an error if selectable and flat/aliased are sent to ↵RamonWill2020-04-281-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | with_polymorphic simultaenously <!-- Provide a general summary of your proposed changes in the Title field above --> Hi, This is a proposed fix for Issue #4212 When the selectable argument is passed to with_polymorphic it is already aliased. Therefore an argument error should be raised if flat is also True. I have added an if statement to the with_polymorphic function, that raises an Argument Error if selectable is none/False AND if flat=True. I have also included a test. ### Checklist <!-- go over following points. check them with an `x` if they do apply, (they turn into clickable checkboxes once the PR is submitted, so no need to do everything at once) --> This pull request is: - [ ] A documentation / typographical error fix - Good to go, no issue or tests are needed - [X ] A short code fix - please include the issue number, and create an issue if none exists, which must include a complete example of the issue. one line code fixes without an issue and demonstration will not be accepted. - Please include: `Fixes: #<issue number>` in the commit message - please include tests. one line code fixes without tests will not be accepted. - [ ] A new feature implementation - please include the issue number, and create an issue if none exists, which must include a complete example of how the feature would look. - Please include: `Fixes: #<issue number>` in the commit message - please include tests. Kind Regards, Ramon Closes: #5232 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/5232 Pull-request-sha: eae20cdadac82ca1e0352000fe0211e20b590e8b Change-Id: I49c3022296608ede43de7f508fa993fa97dda81a
* | | | Clarify create_engine encoding; update cx_OracleMike Bayer2020-05-063-71/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The create_engine()->encoding parameter is mostly irrelevant under Python 3. make it clear this parameter is not generally useful anymore and refer readers to the dialect documenation. Update cx_Oracle documentation to feature many examples of the encoding / nencoding parameters, remove extra detail that is not generally useful and reorganize information into more specific sections, de-emphasizing legacy / Python 2 specific sections. Change-Id: I42dafb85de0a585c9e05e1e3d787d8d6bfa632c0
* | | | Consider aliased=True, from_joinpoint as legacyMike Bayer2020-05-042-171/+179
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For a 1.4 / 1.3 merge, rewrite the documentation for Query.join() to indicate calling forms that are now considered legacy, including the use of strings in join(), sending a series of join paths in one call, and using the aliased=True flag. update the elementtree examples as well to use aliased() (they are much simpler to understand this way too) and update other links. Also improve docs for aliased() and some other ORM targets such as PropComparator. Change-Id: I636e3a9130dc5509e51c2cf60a52f38fcadffbc6 References: #4705
* | | | Merge "Don't apply sets or similar to objects in IdentitySet"mike bayer2020-05-041-44/+27
|\ \ \ \
| * | | | Don't apply sets or similar to objects in IdentitySetMike Bayer2020-05-031-44/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Modified the internal "identity set" implementation, which is a set that hashes objects on their id() rather than their hash values, to not actually call the ``__hash__()`` method of the objects, which are typically user-mapped objects. Some methods were calling this method as a side effect of the implementation. Fixes: #5304 Change-Id: I0ed8762f47622215a54dcad9f210377b1becf8e8
* | | | | Baked query needs to spoil fully on uncachable optionMike Bayer2020-05-041-2/+2
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed issue in the area of where loader options such as selectinload() interact with the baked query system, such that the caching of a query is not supposed to occur if the loader options themselves have elements such as with_polymorphic() objects in them that currently are not cache-compatible. The baked loader could sometimes not fully invalidate itself in these some of these scenarios leading to missed eager loads. Fixes: #5303 Change-Id: Iecf847204a619694d89297f83b63b613ef9767de
* | | | Fix links in future engine to refer to engine.ResultMike Bayer2020-05-021-4/+4
| | | | | | | | | | | | | | | | Change-Id: I1d24db707de15fbdc05e80e0705590eb93d055d0
* | | | Integrate new Result into ORM queryMike Bayer2020-05-025-93/+117
| |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The next step in the 2.0 ORM changes is to have the ORM integrate with the new Result object fully. this patch uses Result to represent ORM objects rather than lists. public API to get at this Result is not added yet. dogpile.cache and horizontal sharding recipe/extensions have small adjustments to accommodate this change. Callcounts have fluctuated, some slightly better and some slightly worse. A few have gone up by a bit, however as the codebase is still in flux it is anticipated there will be some performance gains later on as ORM fetching is refined to no longer need to accommodate for extensive aliasing. The addition of caching will then change the entire story. References: #5087 References: #4395 Change-Id: If1a23824ffb77d8d58cf2338cf35dd6b5963b17f
* | | Merge "Capitalize documentation for relationship params"mike bayer2020-05-021-21/+21
|\ \ \
| * | | Capitalize documentation for relationship paramsFederico Caselli2020-04-281-21/+21
| | | | | | | | | | | | | | | | Change-Id: Iec1f0afcc57177a7463d8238f1c5d6bb8b86bbb3
* | | | Merge "Handle non-string, non column expression in index for deferred attach"mike bayer2020-05-021-2/+3
|\ \ \ \
| * | | | Handle non-string, non column expression in index for deferred attachMike Bayer2020-05-011-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed issue where an :class:`.Index` that is deferred in being associated with a table, such as as when it contains a :class:`.Column` that is not associated with any :class:`.Table` yet, would fail to attach correctly if it also contained a non table-oriented expession. Fixes: #5298 Change-Id: I0111c400f6bd4a9f31bf00a9957816c7a3fac783
* | | | | Documentation updates for ResultProxy -> ResultMike Bayer2020-05-0120-47/+111
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is based off of I8091919d45421e3f53029b8660427f844fee0228 and includes all documentation-only changes as a separate merge, once the parent is merged. Change-Id: I711adea23df0f9f0b1fe7c76210bd2de6d31842d
* | | | Merge "Propose Result as immediate replacement for ResultProxy"mike bayer2020-05-0118-1919/+2752
|\ \ \ \ | |_|_|/ |/| | |
| * | | Propose Result as immediate replacement for ResultProxyMike Bayer2020-05-0118-1919/+2752
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As progress is made on the _future.Result, including breaking it out such that DBAPI behaviors are local to specific implementations, it becomes apparent that the Result object is a functional superset of ResultProxy and that basic operations like fetchone(), fetchall(), and fetchmany() behave pretty much exactly the same way on the new object. Reorganize things so that ResultProxy is now referred to as LegacyCursorResult, which subclasses CursorResult that represents the DBAPI-cursor version of Result, making use of a multiple inheritance pattern so that the functionality of Result is also available in non-DBAPI contexts, as will be necessary for some ORM patterns. Additionally propose the composition system for Result that will form the basis for ORM-alternative result systems such as horizontal sharding and dogpile cache. As ORM results will soon be coming directly from instances of Result, these extensions will instead build their own ResultFetchStrategies that perform the special steps to create composed or cached result sets. Also considering at the moment not emitting deprecation warnings for fetchXYZ() methods; the immediate issue is Keystone tests are calling upon it, but as the implementations here are proving to be not in any kind of conflict with how Result works, there's not too much issue leaving them around and deprecating at some later point. References: #5087 References: #4395 Fixes: #4959 Change-Id: I8091919d45421e3f53029b8660427f844fee0228
* | | | Merge "Enable loading of external Firebird dialect, if available"Gord Thompson2020-05-011-1/+8
|\ \ \ \ | |/ / / |/| | |
| * | | Enable loading of external Firebird dialect, if availableGord Thompson2020-04-301-1/+8
| | |/ | |/| | | | | | | | | | Fixes: #5278 Change-Id: I1660abb11c02656fbf388f2f9c4257075111be58
* | | Deprecate unsupported dialects and dbapiFederico Caselli2020-04-2913-94/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Deprecate dialects firebird and sybase. - Deprecate DBAPI - mxODBC for mssql - oursql for mysql - pygresql and py-postgresql for postgresql - Removed adodbapi DBAPI for mssql Fixes: #5189 Change-Id: Id9025f4f4de7e97d65aacd0eb4b0c21beb9a67b5
* | | Restore a line break that is needed for a clean mergeMike Bayer2020-04-291-0/+1
| |/ |/| | | | | Change-Id: Ib433920080ba159a1478c48d2f837bc71bf5bbbc
* | Alias the onclause if ORM join is to same polymorphic selectableMike Bayer2020-04-272-2/+4
|/ | | | | | | | | | Fixed bug where using :func:`.with_polymorphic` as the target of a join via :meth:`.RelationshipComparator.of_type` on a mapper that already has a subquery-based with_polymorphic setting that's equivalent to the one requested would not correctly alias the ON clause in the join. Fixes: #5288 Change-Id: I0212a990ee67a344c87fe21833bf47fdb72ca0cc
* Merge "Fix regression when reflecting tables in MSSQL"mike bayer2020-04-221-12/+29
|\
| * Fix regression when reflecting tables in MSSQLFederico Caselli2020-04-221-12/+29
| | | | | | | | | | | | | | | | | | | | | | | | Fix a regression introduced by the reflection of computed column in MSSQL when using SQL server versions before 2012, which does not support the ``concat`` function and when using the legacy TDS version 4.2. The dialect will try to detect the protocol version of first connect and run in compatibility mode if it cannot detect it. Fixes: #5255 Fixes: #5271 Change-Id: I7b33f7889ac0784cd8ae5385cbd50bc8c862398a
* | Merge "Add ColumnProperty.Comparator.expressions"mike bayer2020-04-211-1/+29
|\ \
| * | Add ColumnProperty.Comparator.expressionsMike Bayer2020-04-201-1/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | Added an accessor :attr:`.ColumnProperty.Comparator.expressions` which provides access to the group of columns mapped under a multi-column :class:`.ColumnProperty` attribute. Fixes: #5262 Change-Id: I44cf53ff0e6cf76a0c90eee4638ca96da3df8088
* | | Fix typo in pymssql documentation; minor clarificationGord Thompson2020-04-201-2/+3
| |/ |/| | | | | Change-Id: I4aaf0627d2f1ccae82c2eb41db9ec219d73ce4ea
* | Merge "Deprecate ``DISTINCT ON`` when not targeting PostgreSQL"mike bayer2020-04-2010-22/+54
|\ \
| * | Deprecate ``DISTINCT ON`` when not targeting PostgreSQLFederico Caselli2020-04-2010-22/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | Deprecate usage of ``DISTINCT ON`` in dialect other than PostgreSQL. Previously this was silently ignored. Deprecate old usage of string distinct in MySQL dialect Fixes: #4002 Change-Id: I38fc64aef75e77748083c11d388ec831f161c9c9
* | | Merge "Support `ARRAY` of `Enum`, `JSON` or `JSONB`"mike bayer2020-04-205-54/+91
|\ \ \ | |_|/ |/| |
| * | Support `ARRAY` of `Enum`, `JSON` or `JSONB`Federico Caselli2020-04-205-54/+91
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | Added support for columns or type :class:`.ARRAY` of :class:`.Enum`, :class:`.JSON` or :class:`_postgresql.JSONB` in PostgreSQL. Previously a workaround was required in these use cases. Raise an explicit :class:`.exc.CompileError` when adding a table with a column of type :class:`.ARRAY` of :class:`.Enum` configured with :paramref:`.Enum.native_enum` set to ``False`` when :paramref:`.Enum.create_constraint` is not set to ``False`` Fixes: #5265 Fixes: #5266 Change-Id: I83a2d20a599232b7066d0839f3e55ff8b78cd8fc
* | Merge "Raise informative error when non-object m2o comparison used"mike bayer2020-04-201-1/+12
|\ \
| * | Raise informative error when non-object m2o comparison usedMike Bayer2020-04-191-1/+12
| |/ | | | | | | | | | | | | | | | | | | | | An informative error message is raised when an ORM many-to-one comparison is attempted against an object that is not an actual mapped instance. Comparisons such as those to scalar subqueries aren't supported; generalized comparison with subqueries is better achieved using :meth:`~.RelationshipProperty.Comparator.has`. Fixes: #5269 Change-Id: I2e23178eb59728c39241a46bfa7411239a87492e
* | Merge "Update pymssql information for mssql dialect"mike bayer2020-04-201-5/+18
|\ \
| * | Update pymssql information for mssql dialectGord Thompson2020-04-201-5/+18
| |/ | | | | | | Change-Id: I94cf63299a094b53e7078b282311f7d0faa256a6
* | Merge "Rename py.test to pytest"mike bayer2020-04-205-7/+7
|\ \
| * | Rename py.test to pytestGord Thompson2020-04-165-7/+7
| |/ | | | | | | Change-Id: I431e1ef41e26d490343204a75a5c097768749768
* | Add @requirements.schemas to test_create_table_schemaGord Thompson2020-04-181-0/+1
|/ | | | | | Prevent test_create_table_schema from failing for databases that do not support schemas. Change-Id: I0f5f129c313ee6023be2e6d84610355afc48c05c
* Create initial 2.0 engine implementationMike Bayer2020-04-1631-209/+1225
| | | | | | | | | | | | | | | | | | | Implemented the SQLAlchemy 2 :func:`.future.create_engine` function which is used for forwards compatibility with SQLAlchemy 2. This engine features always-transactional behavior with autobegin. Allow execution options per statement execution. This includes that the before_execute() and after_execute() events now accept an additional dictionary with these options, empty if not passed; a legacy event decorator is added for backwards compatibility which now also emits a deprecation warning. Add some basic tests for execution, transactions, and the new result object. Build out on a new testing fixture that swaps in the future engine completely to start with. Change-Id: I70e7338bb3f0ce22d2f702537d94bb249bd9fb0a Fixes: #4644
* Merge "Pass connection to TablesTest.insert_data()"mike bayer2020-04-157-161/+145
|\
| * Pass connection to TablesTest.insert_data()Mike Bayer2020-04-157-161/+145
| | | | | | | | | | | | | | | | | | | | towards the goal of reducing verbosity and repetition in test fixtures as well as that we are moving to connection only for execution, move the insert_data() classmethod to accept a connection and adjust all fixtures to use it. Change-Id: I3bf534acca0d5f4cda1d4da8ae91f1155b829b09
* | Set up absolute references for create_engine and relatedMike Bayer2020-04-1434-189/+248
| | | | | | | | | | | | | | includes more replacements for create_engine(), Connection, disambiguation of Result from future/baked Change-Id: Icb60a79ee7a6c45ea9056c211ffd1be110da3b5e
* | Merge "Run search and replace of symbolic module names"mike bayer2020-04-1477-2702/+3643
|\ \ | |/ |/|
| * Run search and replace of symbolic module namesMike Bayer2020-04-1477-2702/+3643
| | | | | | | | | | | | | | | | Replaces a wide array of Sphinx-relative doc references with an abbreviated absolute form now supported by zzzeeksphinx. Change-Id: I94bffcc3f37885ffdde6238767224296339698a2