summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Merge "Modernize tests - query_from_self" into mainmike bayer2021-10-181-1/+0
|\ \ \
| * | | Modernize tests - query_from_selfGord Thompson2021-10-171-1/+0
| |/ / | | | | | | | | | Change-Id: Ic14fdb5b6c49b668698de146bbafbd996da3d843
* | | vendor asynccontextmanager outside of greenlet dependencyMike Bayer2021-10-183-65/+84
|/ / | | | | | | | | | | | | | | | | | | | | Fixed installation issue where the ``sqlalchemy.dialects.mysql`` module would not be importable if "greenlet" were not installed. This was actually breaking the sphinx build for when greenlet were not installed. Fixes: #7204 Change-Id: Ia351c124a2f1ca44bafe20a97267ce20cb55808f
* | Merge "re-enable asnycmy >= 0.2.3; disable aiomysql totally" into mainmike bayer2021-10-171-3/+6
|\ \ | |/ |/|
| * re-enable asnycmy >= 0.2.3; disable aiomysql totallyMike Bayer2021-10-151-3/+6
| | | | | | | | Change-Id: I94bc22db0462509003c8241d0ccef915fe6513c6
* | Add missing note: bind arg will be required in 2.0 (#7195)Sergey Golitsynskiy2021-10-161-0/+6
| | | | | | Applies to Index.create() and Index.drop()
* | Merge "fix with_loader_criteria for select(A).join(B)" into mainmike bayer2021-10-151-6/+52
|\ \ | |/ |/|
| * fix with_loader_criteria for select(A).join(B)Mike Bayer2021-10-151-6/+52
| | | | | | | | | | | | | | | | | | | | Also revise the contains_eager() note that was just added in fec2b6560c14bb28ee7f, as I mistakenly forgot that WLC also affects elements of the query that are there as part of the normal entites/criteria. Fixes: #7189 Change-Id: Ibd8a1826aaee8e91ab6704173df5fccb56b7e785
* | Merge "support bind expressions w/ expanding IN; apply to psycopg2" into mainmike bayer2021-10-155-52/+101
|\ \ | |/ |/|
| * support bind expressions w/ expanding IN; apply to psycopg2Mike Bayer2021-10-155-52/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed issue where "expanding IN" would fail to function correctly with datatypes that use the :meth:`_types.TypeEngine.bind_expression` method, where the method would need to be applied to each element of the IN expression rather than the overall IN expression itself. Fixed issue where IN expressions against a series of array elements, as can be done with PostgreSQL, would fail to function correctly due to multiple issues within the "expanding IN" feature of SQLAlchemy Core that was standardized in version 1.4. The psycopg2 dialect now makes use of the :meth:`_types.TypeEngine.bind_expression` method with :class:`_types.ARRAY` to portably apply the correct casts to elements. The asyncpg dialect was not affected by this issue as it applies bind-level casts at the driver level rather than at the compiler level. as part of this commit the "bind translate" feature has been simplified and also applies to the names in the POSTCOMPILE tag to accommodate for brackets. Fixes: #7177 Change-Id: I08c703adb0a9bd6f5aeee5de3ff6f03cccdccdc5
* | Fix reflection of FK against a unique indexGord Thompson2021-10-141-24/+135
|/ | | | | | | | Also implement reflection of ON DELETE, ON UPDATE as the data is right there. Fixes: #7160 Change-Id: Ifff871a8cb1d1bea235616042e16ed3b5c5f19f9
* clarify that with_loader_criteria does not affect contains_eager()Mike Bayer2021-10-141-0/+7
| | | | | | | | | | | The ORM contains_eager() option does not affect the rendering of a SQL query in any way except that it adds additional columns to the columns clause of the SELECT. Therefore the with_loader_criteria() function has no interaction with this loader option. Fixes: #7189 Change-Id: I2e5439746de92382615b652c0e0801b6e48210c8
* Merge "Reflect table can reflect table with no columns" into mainmike bayer2021-10-143-2/+67
|\
| * Reflect table can reflect table with no columnsSumit Khanna2021-10-143-2/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The :meth:`_engine.Inspector.reflect_table` method now supports reflecting tables that do not have user defined columns. This allows :meth:`_schema.MetaData.reflect` to properly complete reflection on databases that contain such tables. Currently, only PostgreSQL is known to support such a construct among the common database backends. Fixes: #3247 Closes: #7118 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/7118 Pull-request-sha: cb8ce01957e9a1453290a7c2728af8c60ef55fa1 Change-Id: I906cebe17d13554d79086b92f3e1e51ffba3e818
* | Merge "Pickling fixes for ORM / Core" into mainmike bayer2021-10-132-11/+51
|\ \
| * | Pickling fixes for ORM / CoreMike Bayer2021-10-132-11/+51
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed regression where ORM loaded objects could not be pickled in cases where loader options making use of ``"*"`` were used in certain combinations, such as combining the :func:`_orm.joinedload` loader strategy with ``raiseload('*')`` of sub-elements. Fixes: #7134 Fixed issue where SQL queries using the :meth:`_functions.FunctionElement.within_group` construct could not be pickled, typically when using the ``sqlalchemy.ext.serializer`` extension but also for general generic pickling. Fixes: #6520 Change-Id: Ib73fd49c875e6da9898493c190f610e68b88ec72
* | Merge "Fix has_table() false negative for #temp tables" into mainmike bayer2021-10-131-8/+12
|\ \
| * | Fix has_table() false negative for #temp tablesGord Thompson2021-10-121-8/+12
| |/ | | | | | | | | | | | | | | | | | | | | Fixed issue with :meth:`.Inspector.has_table` where it would return False if a local temp table with the same name from a different session happened to be returned first when querying tempdb. This is a continuation of :ticket:`6910` which accounted for the temp table existing only in the alternate session and not the current one. Fixes: #7168 Change-Id: I19dbb71a63184c6d41822b0e882b7b284ac83786
* | Fix recursive CTE to support nestingEric Masseran2021-10-122-38/+72
|/ | | | | | | | | | | | | | | | | | | | | | | | | | Repaired issue in new :paramref:`_sql.HasCTE.cte.nesting` parameter introduced with :ticket:`4123` where a recursive :class:`_sql.CTE` using :paramref:`_sql.HasCTE.cte.recursive` in typical conjunction with UNION would not compile correctly. Additionally makes some adjustments so that the :class:`_sql.CTE` construct creates a correct cache key. Pull request courtesy Eric Masseran. Fixes: #4123 > This has not been caught by the tests because the nesting recursive queries there did not union against itself, eg there was only the i root clause... - Now tests are real recursive queries - Add tests on aliased nested CTEs (recursive or not) - Adapt the `_restates` attribute to use it as a reference - Add some docs around to explain some variables usage Closes: #7133 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/7133 Pull-request-sha: 2633f34f7f5336a4a85bd3f71d07bca33ce27a2c Change-Id: I15512c94e1bc1f52afc619d82057ca647d274e92
* rename elements to mainMike Bayer2021-10-112-2/+2
| | | | | | | There are still some SQLite / MySQL specific occurrences of "master" but this is most of it. Change-Id: I0144c992e2f0207777e20e058b63a11c031986b9
* Merge "fixes for usage of the null() and similar constants"mike bayer2021-10-084-29/+98
|\
| * fixes for usage of the null() and similar constantsMike Bayer2021-10-084-29/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adjusted the "column disambiguation" logic that's new in 1.4, where the same expression repeated gets an "extra anonymous" label, so that the logic more aggressively deduplicates those labels when the repeated element is the same Python expression object each time, as occurs in cases like when using "singleton" values like :func:`_sql.null`. This is based on the observation that at least some databases (e.g. MySQL, but not SQLite) will raise an error if the same label is repeated inside of a subquery. Related to :ticket:`7153`, fixed an issue where result column lookups would fail for "adapted" SELECT statements that selected for "constant" value expressions most typically the NULL expression, as would occur in such places as joined eager loading in conjunction with limit/offset. This was overall a regression due to issue :ticket:`6259` which removed all "adaption" for constants like NULL, "true", and "false", but this broke the case where the same adaption logic were used to match the constant to a labeled expression referring to the constant in a subquery. Fixes: #7153 Fixes: #7154 Change-Id: I43823343721b9e70524ea3f5e8f39dd543a3e92b
* | Add documentation on how to use the events with asyncioFederico Caselli2021-10-082-0/+46
|/ | | | | | Co-authored-by: Mike Bayer <mike_mp@zzzcomputing.com> Fixes: #6899 Change-Id: I965af321fb36d9645fe3fc2675ad9943f24e32f2
* Merge "Enable tests of fetch/offset for mariadb>=10.6"mike bayer2021-10-082-0/+10
|\
| * Enable tests of fetch/offset for mariadb>=10.6Federico Caselli2021-10-082-0/+10
| | | | | | | | | | Fixes: #6999 Change-Id: I29cf3908a6c872611409a3e7256296314c81dea1
* | Merge "Add autocommit documentation for Azure SQL DW"mike bayer2021-10-061-3/+42
|\ \
| * | Add autocommit documentation for Azure SQL DWGord Thompson2021-09-281-3/+42
| | | | | | | | | | | | | | | Fixes: #7065 Change-Id: I3666e16f9a8c47f9784ea11f38972cda6b08c146
* | | Merge "Bugfix: MySQL expression: may be bindparam or other expression"mike bayer2021-10-051-1/+1
|\ \ \
| * | | Bugfix: MySQL expression: may be bindparam or other expressionAnton Kovalevich2021-10-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed issue in MySQL :func:`_mysql.match` construct where passing a clause expression such as :func:`_sql.bindparam` or other SQL expression for the "against" parameter would fail. Pull request courtesy Anton Kovalevich. Fixes: #7144 Closes: #7145 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/7145 Pull-request-sha: 3757ffa51a3ff5919278165aaf906c8d2f9940c0 Change-Id: I7bb95f338afe3a17296a7b60e8c973f93b4f5e62
* | | | Merge "fix(6435): support `MemberExpr` for enum column declaration"mike bayer2021-10-051-1/+1
|\ \ \ \
| * | | | fix(6435): support `MemberExpr` for enum column declarationHiroshi Ogawa2021-10-051-1/+1
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed issue in mypy plugin to improve upon some issues detecting ``Enum()`` SQL types containing custom Python enumeration classes. Pull request courtesy Hiroshi Ogawa. Fixes: #6435 Closes: #7048 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/7048 Pull-request-sha: 59f5c89688792f6af3b07488d5cf97f8f2e964dc Change-Id: I05adbec74ceac1ecfdc5a242bfe7aa4b2eb805e4
* | | | Handle SSL SYSCALL error: Bad Address in postgresql/pyscopg2Zeke Brechtel2021-10-051-1/+2
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added a "disconnect" condition for the "SSL SYSCALL error: Bad address" error message as reported by psycopg2. Pull request courtesy Zeke Brechtel. Fixes: #5387 Closes: #7087 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/7087 Pull-request-sha: 66af76a107a22d9119edc8edcacc1e4ef66dc50d Change-Id: Ia4afc9683b8175a8ca282e07e0f83c65657544ab
* | | Merge "disallow adding to identity map that's been discarded"mike bayer2021-10-042-0/+15
|\ \ \
| * | | disallow adding to identity map that's been discardedMike Bayer2021-10-042-0/+15
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed bug where iterating a :class:`.Result` from a :class:`_orm.Session` after that :class:`_orm.Session` were closed would partially attach objects to that session in an essentially invalid state. It now raises an exception with a link to new documentation if an **un-buffered** result is iterated from a :class:`_orm.Session` that was closed or otherwise had the :meth:`_orm.Session.expunge_all` method called after that :class:`.Result` was generated. The "prebuffer_rows" execution option, as is used by the asyncio extension, may be used to produce a :class:`.Result` where the ORM objects are prebuffered, and in this case iterating the result will produce a series of detached objects. Fixes: #7128 Change-Id: I59f0ae32a83a64587937741b80f31ff825bbb574
* | | Merge "Warn when trying to execute a query object with a session."mike bayer2021-10-041-1/+22
|\ \ \
| * | | Warn when trying to execute a query object with a session.Federico Caselli2021-10-041-1/+22
| |/ / | | | | | | | | | | | | | | | | | | | | | Passing a :class:`.Query` object to :meth:`_orm.Session.execute` is not the intended use of this object, and will now raise a deprecation warning. Fixes: #6284 Change-Id: I30a406d5a72335f9405f10f0a2030a32ccda41b9
* | | repair any_() / all_() "implicit flip" behavior for NoneMike Bayer2021-10-045-73/+111
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed an inconsistency in the any_() / all_() functions / methods where the special behavior these functions have of "flipping" the expression such that the "ANY" / "ALL" expression is always on the right side would not function if the comparison were against the None value, that is, "column.any_() == None" should produce the same SQL expression as "null() == column.any_()". Added more docs to clarify this as well, plus mentions that any_() / all_() generally supersede the ARRAY version "any()" / "all()". Fixes: #7140 Change-Id: Ia5d55414ba40eb3fbda3598931fdd24c9b4a4411
* | Merge "Ensure all SQLAlchemy exception can be properly pickled"mike bayer2021-10-011-2/+20
|\ \
| * | Ensure all SQLAlchemy exception can be properly pickledFederico Caselli2021-10-011-2/+20
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | Implemented proper ``__reduce__()`` methods for all SQLAlchemy exception objects to ensure they all support clean round trips when pickling, as exception objects are often serialized for the purposes of various debugging tools. Fixes #7077 Closes: #7078 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/7078 Pull-request-sha: 8ba69f26532f0f60f679289702c9477e25149bf8 Change-Id: Id62f8d351cd9180c441ffa9201efcf5f1876bf83
* | Merge "Fixes: #3160"mike bayer2021-10-011-6/+25
|\ \
| * | Fixes: #3160jonathan vanasco2021-09-281-6/+25
| | | | | | | | | | | | | | | | | | | | | Clarify that match() emits `to_tsquery`, which expects input text to be in postgresql's own format. Change-Id: Id723032bca2eededc03ac30681c0dd4ddf76c232
* | | Merge "Account for `schema` in `table()` `fullname` attribute."mike bayer2021-10-011-1/+5
|\ \ \
| * | | Account for `schema` in `table()` `fullname` attribute.Federico Caselli2021-10-011-1/+5
| | | | | | | | | | | | | | | | | | | | Fixes: #7061 Change-Id: I715da89591c03d40d77734473bd42b34b9c4e1dc
* | | | Merge "Fixes: #4504"mike bayer2021-10-011-0/+30
|\ \ \ \
| * | | | Fixes: #4504jonathan vanasco2021-09-291-0/+30
| | |_|/ | |/| | | | | | | | | | | | | | | | | | Docstring for EXTRACT Change-Id: Ie529ceb3551adedf0df873c22e65f8615cd1c9ef
* | | | organize datetime types for correct implsMike Bayer2021-10-012-3/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed bug in SQL Server ``DATETIMEOFFSET`` where the ODBC implementation would not generate the correct DDL, for cases where the type were converted using the ``dialect.type_descriptor()`` method, the usage of which is illustrated in some documented examples for :class:`.TypeDecorator`, though not necessary for most datatypes. Regression was introduced by :ticket:`6366`. As part of this change, the full list of SQL Server date types have been amended to return a "dialect impl" that generates the same DDL name as the supertype. Fixes: #7129 Change-Id: I7d9bea54c0c38e16d1a6ad978cca996006a1b624
* | | | Merge "indicate private use of URL.__new__ privately only"mike bayer2021-10-011-1/+3
|\ \ \ \
| * | | | indicate private use of URL.__new__ privately onlyMike Bayer2021-10-011-1/+3
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed issue where the deprecation warning for the :class:`.URL` constructor which indicates that the :meth:`.URL.create` method should be used would not emit if a full positional argument list of seven arguments were passed; additionally, validation of URL arguments will now occur if the constructor is called in this way, which was being skipped previously. Fixes: #7130 Change-Id: I8c8491d8aa7774afaf67c22b4f8e9859f780f2d9
* | | | correct charset for mariadb connector with mdb 10.6Georg Richter2021-10-011-0/+2
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Updated test suite to pass correctly for MariaDB 10.6 when using the mariadb-connector driver, which made some adjustments to default encoding. Pull request courtesy Georg Richter. Use character set utf8mb4 instead of utf8: 1) Character set for mariadb connector is utf8mb4 and cannot be changed. 2) Since MariaDB 10.6.1 utf8 is mapped to utf8mb3, and will be mapped to utf8mb4 in 10.7, see [MDEV-8334](https://jira.mariadb.org/browse/MDEV-8334) (rename utf8 to utf8mb3) utf8mb4 character set support was added 12 years ago and will work with all non eoled MariaDB server versions. Fixes: #7115 Closes: #7116 Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/7116 Pull-request-sha: 79516ccce2dead11e6658596c9ad400b964d24c9 Change-Id: I86c30fb636c46307cb551080641e324d2bbc1cb3
* | | Modernize tests - calling_mapper_directlyGord Thompson2021-09-304-47/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a few changes for py2k: * map_imperatively() includes the check that a class is being sent, this was only working for mapper() before * the test suite didn't place the py2k "autouse" workaround in the correct order, seemingly, tried to adjust the per-test ordering setup in pytestplugin.py Change-Id: I4cc39630724e810953cfda7b2afdadc8b948e3c2