]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/log
thirdparty/sqlalchemy/sqlalchemy.git
3 years agoMerge "cx_Oracle modernize" into main
mike bayer [Thu, 7 Apr 2022 15:19:10 +0000 (15:19 +0000)] 
Merge "cx_Oracle modernize" into main

3 years agocx_Oracle modernize
Mike Bayer [Mon, 4 Apr 2022 14:13:23 +0000 (10:13 -0400)] 
cx_Oracle modernize

Full "RETURNING" support is implemented for the cx_Oracle dialect, meaning
multiple RETURNING rows are now recived for DML statements that produce
more than one row for RETURNING.

cx_Oracle 7 is now the minimum version for cx_Oracle.

Getting Oracle to do multirow returning took about 5 minutes.  however,
getting Oracle's RETURNING system to integrate with ORM-enabled
insert, update, delete, is a big deal because that architecture wasn't
really working very robustly, including some recent changes in 1.4
for FromStatement were done in a hurry, so this patch also cleans up
the FromStatement situation and begins to establish it more concretely
as the base for all ReturnsRows / TextClause ORM scenarios.

Fixes: #6245
Change-Id: I2b4e6007affa51ce311d2d5baa3917f356ab961f

3 years agocherry-pick changelog update for 1.4.36
Mike Bayer [Wed, 6 Apr 2022 15:34:25 +0000 (11:34 -0400)] 
cherry-pick changelog update for 1.4.36

3 years agocherry-pick changelog from 1.4.35
Mike Bayer [Wed, 6 Apr 2022 15:34:24 +0000 (11:34 -0400)] 
cherry-pick changelog from 1.4.35

3 years agoclassify issue
Mike Bayer [Wed, 6 Apr 2022 15:17:05 +0000 (11:17 -0400)] 
classify issue

Change-Id: Id1e59fee382d1d72d78e99b1c56a5837b5503fed

3 years agomaintain complete cloned_set for BindParameter
Mike Bayer [Wed, 6 Apr 2022 13:41:11 +0000 (09:41 -0400)] 
maintain complete cloned_set for BindParameter

Fixed regression caused by :ticket:`7823` which impacted the caching
system, such that bound parameters that had been "cloned" within ORM
operations, such as polymorphic loading, would in some cases not acquire
their correct execution-time value leading to incorrect bind values being
rendered.

Fixes: #7903
Change-Id: I61c802749b859bebeb127d24e66d6e77d13ce57a

3 years agofix typo in lambda example
Mike Bayer [Tue, 5 Apr 2022 18:39:32 +0000 (14:39 -0400)] 
fix typo in lambda example

we might have an actual customer so clean up shop

Change-Id: I0b1e36ad78f364805a3a7bfd6fac953cf94b838f

3 years agopep484 - sql.selectable
Mike Bayer [Wed, 30 Mar 2022 22:01:58 +0000 (18:01 -0400)] 
pep484 - sql.selectable

the pep484 task becomes more intense as there is mounting
pressure to come up with a consistency in how data moves
from end-user to instance variable.

current thinking is coming into:

1. there are _typing._XYZArgument objects that represent "what the
   user sent"
2. there's the roles, which represent a kind of "filter" for different
   kinds of objects.   These are mostly important as the argument
   we pass to coerce().
3. there's the thing that coerce() returns, which should be what the
   construct uses as its internal representation of the thing.
   This is _typing._XYZElement.

but there's some controversy over whether or
not we should pass actual ClauseElements around by their role
or not.   I think we shouldn't at the moment, but this makes the
"role-ness" of something a little less portable. Like, we have
to set DMLTableRole for TableClause, Join, and Alias, but then
also we have to repeat those three types in order to set up
_DMLTableElement.

Other change introduced here, there was a deannotate=True
for the left/right of a sql.join().    All tests pass without that.
I'd rather not have that there as if we have a join(A, B) where
A, B are mapped classes, we want them inside of the _annotations.
The rationale seems to be performance, but this performance can
be illustrated to be on the compile side which we hope is cached
in the normal case.

CTEs now accommodate for text selects including recursive.

Get typing to accommodate "util.preloaded" cleanly; add "preloaded"
as a real module.  This seemed like we would have needed
pep562 `__getattr__()` but we don't, just set names in
globals() as we import them.

References: #6810
Change-Id: I34d17f617de2fe2c086fc556bd55748dc782faf0

3 years agoMerge "use .fromisoformat() for sqlite datetime, date, time parsing" into main
mike bayer [Sun, 3 Apr 2022 19:20:32 +0000 (19:20 +0000)] 
Merge "use .fromisoformat() for sqlite datetime, date, time parsing" into main

3 years agouse .fromisoformat() for sqlite datetime, date, time parsing
Mike Bayer [Sun, 3 Apr 2022 17:44:57 +0000 (13:44 -0400)] 
use .fromisoformat() for sqlite datetime, date, time parsing

SQLite datetime, date, and time datatypes now use Python standard lib
``fromisoformat()`` methods in order to parse incoming datetime, date, and
time string values. This improves performance vs. the previous regular
expression-based approach, and also automatically accommodates for datetime
and time formats that contain either a six-digit "microseconds" format or a
three-digit "milliseconds" format.

Fixes: #7029
Change-Id: I67aab4fe5ee3055e5996050cf4564981413cc221

3 years agoTableValuedAlias generation fixes
Mike Bayer [Sun, 3 Apr 2022 15:28:57 +0000 (11:28 -0400)] 
TableValuedAlias generation fixes

Fixed bug in newly implemented
:paramref:`.FunctionElement.table_valued.joins_implicitly` feature where
the parameter would not automatically propagate from the original
:class:`.TableValuedAlias` object to the secondary object produced when
calling upon :meth:`.TableValuedAlias.render_derived` or
:meth:`.TableValuedAlias.alias`.

Additionally repaired these issues in :class:`.TableValuedAlias`:

* repaired a potential memory issue which could occur when
repeatedly calling :meth:`.TableValuedAlias.render_derived` against
successive copies of the same object (for .alias(), we currently
have to still continue chaining from the previous element.  not sure
if this can be improved but this is standard behavior for .alias()
elsewhere)
* repaired issue where the individual element types would be lost when
calling upon :meth:`.TableValuedAlias.render_derived` or
:meth:`.TableValuedAlias.alias`.

Fixes: #7890
Change-Id: Ie5120c7ff1e5c1bba5aaf77c782a51c637860208

3 years agoclarify alternative mapping example
Mike Bayer [Sun, 3 Apr 2022 14:39:19 +0000 (10:39 -0400)] 
clarify alternative mapping example

this second example is not part of the doctest steps,
clarify that it's not part of code examples to be present
in execution steps.   Add an extra registry +
declarative base on top
so that even if someone does run it, the Base will have
been reset and the examples will continue to work
(noting that column order in statements may change, but
probably nothing else).

Fixes: #7891
Change-Id: Icb1ba310230841e502185d9d0cadd3c18d467292

3 years agofix small indentation typo (#7882)
Maple [Sun, 3 Apr 2022 09:30:08 +0000 (17:30 +0800)] 
fix small indentation typo (#7882)

3 years agocherry-pick changelog update for 1.4.35
Mike Bayer [Thu, 31 Mar 2022 22:28:33 +0000 (18:28 -0400)] 
cherry-pick changelog update for 1.4.35

3 years agocherry-pick changelog from 1.4.34
Mike Bayer [Thu, 31 Mar 2022 22:28:33 +0000 (18:28 -0400)] 
cherry-pick changelog from 1.4.34

3 years agoallow executemany values for ON CONFLICT DO NOTHING
Mike Bayer [Thu, 31 Mar 2022 20:53:43 +0000 (16:53 -0400)] 
allow executemany values for ON CONFLICT DO NOTHING

Scaled back a fix made for :ticket:`6581` where "executemany values" mode
for psycopg2 were disabled for all "ON CONFLICT" styles of INSERT, to
not apply to the "ON CONFLICT DO NOTHING" clause, which does not include
any parameters and is safe for "executemany values" mode.  "ON CONFLICT
DO UPDATE" is still blocked from "executemany values" as there may
be additional parameters in the DO UPDATE clause that cannot be batched
(which is the original issue fixed by :ticket:`6581`).

Fixes: #7880
Change-Id: Id3e23a0c6699333409a50148fa8923cb8e564bdc

3 years agoadd template methods for ORMInsert
Mike Bayer [Thu, 31 Mar 2022 18:56:52 +0000 (14:56 -0400)] 
add template methods for ORMInsert

Fixed regression caused by :ticket:`7861` where invoking an
:class:`.Insert` construct which contained ORM entities via
:meth:`_orm.Session.execute` would fail.

Fixes: #7878
Change-Id: Icc4d8028249cc417f504fdd3e31e206b5bbc89f8

3 years agocherry-pick changelog update for 1.4.34
Mike Bayer [Thu, 31 Mar 2022 14:38:05 +0000 (10:38 -0400)] 
cherry-pick changelog update for 1.4.34

3 years agocherry-pick changelog from 1.4.33
Mike Bayer [Thu, 31 Mar 2022 14:38:05 +0000 (10:38 -0400)] 
cherry-pick changelog from 1.4.33

3 years agoMerge "add close=False parameter to engine.dispose()" into main
mike bayer [Thu, 31 Mar 2022 14:05:09 +0000 (14:05 +0000)] 
Merge "add close=False parameter to engine.dispose()" into main

3 years agoadd close=False parameter to engine.dispose()
Mike Bayer [Thu, 31 Mar 2022 13:08:11 +0000 (09:08 -0400)] 
add close=False parameter to engine.dispose()

Added new parameter :paramref:`.Engine.dispose.close`, defaulting to True.
When False, the engine disposal does not touch the connections in the old
pool at all, simply dropping the pool and replacing it. This use case is so
that when the original pool is transferred from a parent process, the
parent process may continue to use those connections.

Fixes: #7877
Change-Id: I88b0808442381ba5e50674787cdb64f0e77d8b54

3 years agoUpdate bindparam cache key
Federico Caselli [Wed, 30 Mar 2022 20:50:18 +0000 (22:50 +0200)] 
Update bindparam cache key

The ``literal_execute`` parameter now takes part of the cache
generation of a bindparam, since it changes the sql string generated
by the compiler.
Previously the correct bind values were used, but the ``literal_execute``
would be ignored on subsequent executions of the same query.

Fixes: #7876
Change-Id: I6bf887f1a2fe31f9d0ab68f5b4ff315004d006b2

3 years agoMerge "Add links to database url section from URL docs" into main
mike bayer [Wed, 30 Mar 2022 21:02:59 +0000 (21:02 +0000)] 
Merge "Add links to database url section from URL docs" into main

3 years agoMerge "pep-484: the pep-484ening, SQL part three" into main
mike bayer [Wed, 30 Mar 2022 18:36:52 +0000 (18:36 +0000)] 
Merge "pep-484: the pep-484ening, SQL part three" into main

3 years agopep-484: the pep-484ening, SQL part three
Mike Bayer [Fri, 25 Mar 2022 21:08:48 +0000 (17:08 -0400)] 
pep-484: the pep-484ening, SQL part three

hitting DML which is causing us to open up the
ColumnCollection structure a bit, as we do put anonymous
column expressions with None here.  However, we still want
Table /TableClause to have named column collections that
don't return None, so parametrize the "key" in this
collection also.

* rename some "immutable" elements to "readonly".  we change
  the contents of immutablecolumncollection underneath, so it's
  not "immutable"

Change-Id: I2593995a4e5c6eae874bed5bf76117198be8ae97

3 years agofurther changelog / doc fixes
Mike Bayer [Wed, 30 Mar 2022 15:44:23 +0000 (11:44 -0400)] 
further changelog / doc fixes

Change-Id: I959f242272ff5147b7c1f721cf119d09309a8c57

3 years agodont use cyext for sphinx builds
Mike Bayer [Wed, 30 Mar 2022 15:40:21 +0000 (11:40 -0400)] 
dont use cyext for sphinx builds

if these files are stale, imports fail and the build
silently excludes docstrings.  also , typing / docstrings
are generally in the _py version of things, so just
don't include cyexts in doc builds.

Change-Id: Ibec927c7646d4b870a84a297d1b199ccecf3afef

3 years agochangelog fixes
Mike Bayer [Wed, 30 Mar 2022 14:52:29 +0000 (10:52 -0400)] 
changelog fixes

Change-Id: I24e3de82d656d59719fd067bc81b2948e725b487

3 years agoAdd links to database url section from URL docs
Federico Caselli [Tue, 29 Mar 2022 20:49:47 +0000 (22:49 +0200)] 
Add links to database url section from URL docs

Change-Id: Ifa6dc14bf95762b9477560f485f43efa11af421b

3 years agoFix spacing on ``bindparam`` docs
Federico Caselli [Tue, 29 Mar 2022 20:51:43 +0000 (22:51 +0200)] 
Fix spacing on ``bindparam`` docs

Change-Id: I9daad5293a4887734f14e6e5de6014aca415453c

3 years agoMerge "Remove "autoload" references in Table docs" into main
mike bayer [Tue, 29 Mar 2022 20:04:29 +0000 (20:04 +0000)] 
Merge "Remove "autoload" references in Table docs" into main

3 years agoMerge "use annotated entity when adding secondary" into main
mike bayer [Tue, 29 Mar 2022 17:56:29 +0000 (17:56 +0000)] 
Merge "use annotated entity when adding secondary" into main

3 years agoRemove "autoload" references in Table docs
Gord Thompson [Mon, 28 Mar 2022 15:38:38 +0000 (09:38 -0600)] 
Remove "autoload" references in Table docs

Replace with "autoload_with" as appropriate.

Change-Id: I8bb2a7e40f116e8e5dea2b8e25d0c160bb6da94e

3 years agouse annotated entity when adding secondary
Mike Bayer [Tue, 29 Mar 2022 13:48:24 +0000 (09:48 -0400)] 
use annotated entity when adding secondary

Fixed regression in "dynamic" loader strategy where the
:meth:`_orm.Query.filter_by` method would not be given an appropriate
entity to filter from, in the case where a "secondary" table were present
in the relationship being queried and the mapping were against something
complex such as a "with polymorphic".

Fixes: #7868
Change-Id: I3b82eec6485c5a92b56a596da0cfb009e9e67883

3 years agoMerge "apply loader criteria more specifically when refresh is true" into main
mike bayer [Tue, 29 Mar 2022 14:05:12 +0000 (14:05 +0000)] 
Merge "apply loader criteria more specifically when refresh is true" into main

3 years agoMerge "fix quotes regexp for SQLite CHECK constraints" into main
mike bayer [Mon, 28 Mar 2022 22:47:09 +0000 (22:47 +0000)] 
Merge "fix quotes regexp for SQLite CHECK constraints" into main

3 years agoapply loader criteria more specifically when refresh is true
Mike Bayer [Mon, 28 Mar 2022 22:39:19 +0000 (18:39 -0400)] 
apply loader criteria more specifically when refresh is true

Fixed bug in :func:`_orm.with_loader_criteria` function where loader
criteria would not be applied to a joined eager load that were invoked
within the scope of a refresh operation for the parent object.

Fixes: #7862
Change-Id: If1ac86eaa95880b5ec5bdeee292d6e8000aac705

3 years agocolumn_descriptions or equiv for DML, core select
Mike Bayer [Sat, 26 Mar 2022 20:20:34 +0000 (16:20 -0400)] 
column_descriptions or equiv for DML, core select

Added new attributes :attr:`.ValuesBase.returning_column_descriptions` and
:attr:`.ValuesBase.entity_description` to allow for inspection of ORM
attributes and entities that are installed as part of an :class:`.Insert`,
:class:`.Update`, or :class:`.Delete` construct. The
:attr:`.Select.column_descriptions` accessor is also now implemented for
Core-only selectables.

Fixes: #7861
Change-Id: Ia6a1cd24c798ba61f4e8e8eac90a0fd00d738342

3 years agofix quotes regexp for SQLite CHECK constraints
Mike Bayer [Mon, 28 Mar 2022 17:46:24 +0000 (13:46 -0400)] 
fix quotes regexp for SQLite CHECK constraints

Fixed bug where the name of CHECK constraints under SQLite would not be
reflected if the name were created using quotes, as is the case when the
name uses mixed case or special characters.

Fixes: #5463
Change-Id: Ic3b1e0a0385fb9e727b0880e90815ea2814df313

3 years agobump black to 22.3.0
Mike Bayer [Mon, 28 Mar 2022 19:52:27 +0000 (15:52 -0400)] 
bump black to 22.3.0

both black and click were released in the past
few hours, and black 21.5b1 seems to suddenly
be failing on a missing symbol from click.  just
update to the latest

Change-Id: Idf76732479a264f7f2245699a6bdaff018e3a123

3 years agoblock asyncmy 0.2.4
Mike Bayer [Mon, 28 Mar 2022 15:23:39 +0000 (11:23 -0400)] 
block asyncmy 0.2.4

asyncmy made a backwards incompatible change to the
TIME datatype in 0.2.4 which hopefully will be reverted
as this change does not belong in a minor point release

Change-Id: Id8bf932d70f52caba06094308a5b87387e69b94b
References: https://github.com/long2ice/asyncmy/issues/37

3 years agosupport BLANK_SCHEMA, RETAIN_SCHEMA FK schema on copy
Mike Bayer [Sat, 26 Mar 2022 14:09:10 +0000 (10:09 -0400)] 
support BLANK_SCHEMA, RETAIN_SCHEMA FK schema on copy

Added support so that the :paramref:`.Table.tometadata.referred_schema_fn`
callable passed to :meth:`.Table.to_metadata` may return the value
:data:`.BLANK_SCHEMA` to indicate that the referenced foreign key should be
reset to None. The :data.`RETAIN_SCHEMA` symbol may also be returned from
this function to indicate "no change", which will behave the same as
``None`` currently does which also indicates no change.

Fixes: #7860
Change-Id: I82a45988d534295d8356453f68001b21d4ff706d

3 years agoMerge "generalize conditional DDL throughout schema / DDL" into main
mike bayer [Fri, 25 Mar 2022 19:35:32 +0000 (19:35 +0000)] 
Merge "generalize conditional DDL throughout schema / DDL" into main

3 years agogeneralize conditional DDL throughout schema / DDL
Mike Bayer [Thu, 27 Jan 2022 20:07:17 +0000 (15:07 -0500)] 
generalize conditional DDL throughout schema / DDL

Expanded on the "conditional DDL" system implemented by the
:class:`_schema.DDLElement` class to be directly available on
:class:`_schema.SchemaItem` constructs such as :class:`_schema.Index`,
:class:`_schema.ForeignKeyConstraint`, etc. such that the conditional logic
for generating these elements is included within the default DDL emitting
process. This system can also be accommodated by a future release of
Alembic to support conditional DDL elements within all schema-management
systems.

Fixes: #7631
Change-Id: I9457524d7f66f49696187cf7d2b37dbb44f0e20b

3 years agoMerge "pep484 - SQL internals" into main
mike bayer [Thu, 24 Mar 2022 21:30:52 +0000 (21:30 +0000)] 
Merge "pep484 - SQL internals" into main

3 years agoMerge "Clarify associationproxy.rst examples by using a one word keyword" into main
mike bayer [Thu, 24 Mar 2022 21:13:29 +0000 (21:13 +0000)] 
Merge "Clarify associationproxy.rst examples by using a one word keyword" into main

3 years agoClarify associationproxy.rst examples by using a one word keyword
aathan [Wed, 23 Feb 2022 22:06:42 +0000 (17:06 -0500)] 
Clarify associationproxy.rst examples by using a one word keyword

The examples are based on a `keyword` attribute but use a value
that a human may interpret as multiple keywords.

Closes: #7582
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/7582
Pull-request-sha: 18b027035ece587c8bfbecff5a96385bf908edca

Change-Id: I30e8c3c0f46c66058131dfadd2b70959913a6335

3 years agopep484 - SQL internals
Mike Bayer [Sun, 20 Mar 2022 20:39:36 +0000 (16:39 -0400)] 
pep484 - SQL internals

non-strict checking for mostly internal or semi-internal
code

Change-Id: Ib91b47f1a8ccc15e666b94bad1ce78c4ab15b0ec

3 years agoMerge "more autocommit messaging" into main
mike bayer [Thu, 24 Mar 2022 18:53:34 +0000 (18:53 +0000)] 
Merge "more autocommit messaging" into main

3 years agomore autocommit messaging
Mike Bayer [Thu, 24 Mar 2022 17:58:20 +0000 (13:58 -0400)] 
more autocommit messaging

Further clarified connection-level logging to indicate the BEGIN, ROLLBACK
and COMMIT log messages do not actually indicate a real transaction when
the AUTOCOMMIT isolation level is in use; messaging has been extended to
include the BEGIN message itself, and the messaging has also been fixed to
accommodate when the :class:`.Engine` level
:paramref:`.create_engine.isolation_level` parameter was used directly.

Fixes: #7853
Change-Id: Iafc78070737ad117f84262e4bde84b81a81e4ea1

3 years agoMerge "Add option to disable from linting for table valued function" into main
mike bayer [Wed, 23 Mar 2022 16:59:30 +0000 (16:59 +0000)] 
Merge "Add option to disable from linting for table valued function" into main

3 years agoMerge "trust user PK argument as given; don't reduce" into main
mike bayer [Wed, 23 Mar 2022 16:58:12 +0000 (16:58 +0000)] 
Merge "trust user PK argument as given; don't reduce" into main

3 years agotrust user PK argument as given; don't reduce
Mike Bayer [Wed, 23 Mar 2022 00:14:04 +0000 (20:14 -0400)] 
trust user PK argument as given; don't reduce

Fixed issue where the :class:`_orm.Mapper` would reduce a user-defined
:paramref:`_orm.Mapper.primary_key` argument too aggressively, in the case
of mapping to a ``UNION`` where for some of the SELECT entries, two columns
are essentially equivalent, but in another, they are not, such as in a
recursive CTE. The logic here has been changed to accept a given
user-defined PK as given, where columns will be related to the mapped
selectable but no longer "reduced" as this heuristic can't accommodate for
all situations.

Fixes: #7842
Change-Id: Ie46f0a3d42cae0501641fa213da0a9d5ca26c3ad

3 years agoAdd option to disable from linting for table valued function
Mike Bayer [Wed, 23 Mar 2022 14:07:13 +0000 (10:07 -0400)] 
Add option to disable from linting for table valued function

Added new parameter
:paramref:`.FunctionElement.table_valued.joins_implicitly`, for the
:meth:`.FunctionElement.table_valued` construct. This parameter indicates
that the given table-valued function implicitly joins to the table it
refers towards, essentially disabling the "from linting" feature, i.e. the
"cartesian product" warning, from taking effect due to the presence of this
parameter. May be used for functions such as ``func.json_each()``.

Fixes: #7845
Change-Id: I80edcb74efbd4417172132c0db4d9c756fdd5eae

3 years agofix generate series example
Mike Bayer [Wed, 23 Mar 2022 14:09:18 +0000 (10:09 -0400)] 
fix generate series example

this just drove me nuts because it didn't include
render_derived(), doesn't run on PG as given

Change-Id: I5d39336231c97b6cd5477644a718282709db2e1f

3 years agoUpgrade parts of the documentation to 2.0 style
provinzkraut [Tue, 22 Mar 2022 17:17:56 +0000 (13:17 -0400)] 
Upgrade parts of the documentation to 2.0 style

<!-- Provide a general summary of your proposed changes in the Title field above -->

I've started to work on #7659, implementing the low hanging fruit changes for now. Some still remain, which I've outlined as a [comment](https://github.com/sqlalchemy/sqlalchemy/issues/7659#issuecomment-1073029151), and probably also some that I didn't catch.

<!-- 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:

- [x] A documentation / typographical error fix
- Good to go, no issue or tests are needed
- [ ] 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.

**Have a nice day!**

Closes: #7829
Pull-request: https://github.com/sqlalchemy/sqlalchemy/pull/7829
Pull-request-sha: a89561dd0c96c2f9a6d992fa0fb94683afaf7e30

Change-Id: Ibc5ea94b5c4b2d7b1cf7bea24f4394d1fde749be

3 years agoMerge branch 'abitrolly-patch-1'
Mike Bayer [Tue, 22 Mar 2022 13:57:14 +0000 (09:57 -0400)] 
Merge branch 'abitrolly-patch-1'

Change-Id: I049baded97844916869619f91b09ac71ef95907a

3 years agoMerge branch 'patch-1' of https://github.com/abitrolly/sqlalchemy into abitrolly...
Mike Bayer [Tue, 22 Mar 2022 13:55:53 +0000 (09:55 -0400)] 
Merge branch 'patch-1' of https://github.com/abitrolly/sqlalchemy into abitrolly-patch-1

Change-Id: Ic312eed882e9d6b547e8b4ef0c6f184c2b253547

3 years agouse begin() for settting up first PK
Mike Bayer [Mon, 21 Mar 2022 21:47:34 +0000 (17:47 -0400)] 
use begin() for settting up first PK

Change-Id: I227bbb46fbcbae1f60d3f5bb4dd2b9f41ca3dd0c

3 years agonote that horizontal sharding supports multi schema translates
Mike Bayer [Mon, 21 Mar 2022 21:35:26 +0000 (17:35 -0400)] 
note that horizontal sharding supports multi schema translates

the horizontal sharding API needs some work as it is
still exposing some legacy details, but in any case illustrate
how we can, for the moment, to use multiple schema translate
maps in a single session.

A lot more cleanup is needed in horizontal sharding, see #7837

Change-Id: Ia925e2226ecee9d747a8c4fc1772917f10bc505f
References: #7832
References: #7837

3 years agoadditional updates to stream results note
Mike Bayer [Mon, 21 Mar 2022 20:29:59 +0000 (16:29 -0400)] 
additional updates to stream results note

Change-Id: I9d7ed9f412a2d9384f6c0b50316df79b6f8f481a

3 years agoMerge "test #7820" into main
mike bayer [Mon, 21 Mar 2022 19:57:52 +0000 (19:57 +0000)] 
Merge "test #7820" into main

3 years agoadd note that schema translate not supported per object
Mike Bayer [Mon, 21 Mar 2022 13:07:51 +0000 (09:07 -0400)] 
add note that schema translate not supported per object

Fixes: #7832
Change-Id: I241e4cbd1b5d6df46e49e29e4ab1cac021f2895c

3 years agoMerge "pep 484 for types" into main
mike bayer [Sun, 20 Mar 2022 13:48:17 +0000 (13:48 +0000)] 
Merge "pep 484 for types" into main

3 years agoMerge "Remove duplicate entry in .gitignore" into main
mike bayer [Sun, 20 Mar 2022 13:43:38 +0000 (13:43 +0000)] 
Merge "Remove duplicate entry in .gitignore" into main

3 years agoMerge "catch unexpected errors when accessing clslevel attribute" into main
mike bayer [Sun, 20 Mar 2022 13:37:37 +0000 (13:37 +0000)] 
Merge "catch unexpected errors when accessing clslevel attribute" into main

3 years agoSmall docs fix in 'Relationship Loading Techniques' (#7824)
Andrés Álvarez [Sun, 20 Mar 2022 11:26:25 +0000 (05:26 -0600)] 
Small docs fix in 'Relationship Loading Techniques' (#7824)

3 years agopep 484 for types
Mike Bayer [Thu, 17 Mar 2022 20:18:55 +0000 (16:18 -0400)] 
pep 484 for types

strict types type_api.py, including TypeDecorator,
NativeForEmulated, etc.

Change-Id: Ib2eba26de0981324a83733954cb7044a29bbd7db

3 years agocatch unexpected errors when accessing clslevel attribute
Mike Bayer [Fri, 18 Mar 2022 14:33:40 +0000 (10:33 -0400)] 
catch unexpected errors when accessing clslevel attribute

Improved the error message that's raised for the case where the
:func:`.association_proxy` construct attempts to access a target attribute
at the class level, and this access fails. The particular use case here is
when proxying to a hybrid attribute that does not include a working
class-level implementation.

Fixes: #7827
Change-Id: Ic6ff9df010f49253e664a1e7c7e16d8546006965

3 years agoRemove duplicate entry in .gitignore
Gord Thompson [Thu, 17 Mar 2022 19:38:39 +0000 (13:38 -0600)] 
Remove duplicate entry in .gitignore

Change-Id: I0785c77398d067d06434f387897874aaf137b18d

3 years agoMerge "Fix "Ambiguous column name" error on FK reflection" into main
mike bayer [Thu, 17 Mar 2022 18:21:30 +0000 (18:21 +0000)] 
Merge "Fix "Ambiguous column name" error on FK reflection" into main

3 years agoMerge "remove intermediary _is_clone_of entries when cloning" into main
mike bayer [Thu, 17 Mar 2022 17:22:05 +0000 (17:22 +0000)] 
Merge "remove intermediary _is_clone_of entries when cloning" into main

3 years agoremove intermediary _is_clone_of entries when cloning
Mike Bayer [Wed, 16 Mar 2022 16:37:20 +0000 (12:37 -0400)] 
remove intermediary _is_clone_of entries when cloning

Improvements in memory usage by the ORM, removing a significant set of
intermediary expression objects that are typically stored when a copy of an
expression object is created. These clones have been greatly reduced,
reducing the number of total expression objects stored in memory by
ORM mappings by about 30%.

note this change causes the tests to have a bit of a harder time with
GC, which we would assume is because mappings now have a lot more
garbage to clean up after mappers are configured.   it remains
to be seen what the long term effects of this are.

Fixes: #7823
Change-Id: If8729747ffb9bf27e8974f069a994b5a823ee095

3 years agopep484 for hybrid
Mike Bayer [Wed, 16 Mar 2022 16:07:25 +0000 (12:07 -0400)] 
pep484 for hybrid

Change-Id: I53274b13094d996e11b04acb03f9613edbddf87f
References: #6810

3 years agopep-484 - SQL column operations
Mike Bayer [Sun, 13 Mar 2022 17:37:11 +0000 (13:37 -0400)] 
pep-484 - SQL column operations

note we are taking out the
ColumnOperartors[SQLCoreOperations] thing; not really clear
why that was needed and at the moment it seems I was likely
confused.

Change-Id: I834b75f9b44f91b97e29f2e1a7b1029bd910e0a1

3 years agotest #7820
Mike Bayer [Mon, 14 Mar 2022 18:09:03 +0000 (14:09 -0400)] 
test #7820

There was an apparent improvement in the distill params
methodology used in exec_driver_sql which allows raw tuples to
pass through.  In 1.4 there seems to be a _distill_cursor_params()
function that says it can handle this kind of parameter, but it isn't
used and when I tried to substitute it in for exec_driver_sql(),
things still fail.

In any case, add coverage here for the use case of passing
direct tuple params to exec_driver_sql including as the first
param, to note that it isn't mis-interpreted the way it is
in 1.x.

Change-Id: I27b875c0f874aee3f6f0d3e28c4c858dd39344e9

3 years agoFix "Ambiguous column name" error on FK reflection
Gord Thompson [Mon, 14 Mar 2022 17:26:54 +0000 (11:26 -0600)] 
Fix "Ambiguous column name" error on FK reflection

Fixes: #7812
Change-Id: Ic16eff9a9201d34515cb8eb884270eced4e1196a

3 years agomove compiler / pool critical casts away
Mike Bayer [Mon, 14 Mar 2022 18:34:05 +0000 (14:34 -0400)] 
move compiler / pool critical casts away

callcount tests were being impacted by a few cast() calls,
move them behind TYPE_CHECKING

Change-Id: I633bbfe55313db94ebb22f87cc4216f8e50d807e

3 years agorestore an updated version of cascade backrefs
Mike Bayer [Mon, 14 Mar 2022 04:01:30 +0000 (00:01 -0400)] 
restore an updated version of cascade backrefs

these sections were removed totally from SQLAlchemy 2.0
as the ``cascade_backrefs`` option was removed.  However,
the current behavior is still one that should be documented,
so restore the two removed sections in a re-worded form
that presents the current behavior as well as some
explaination.

Change-Id: I43fc0bca926a90937d419a1d11c27d18d5d5b4b8

3 years agopep-484: sqlalchemy.sql pass one
Mike Bayer [Tue, 8 Mar 2022 22:14:41 +0000 (17:14 -0500)] 
pep-484: sqlalchemy.sql pass one

sqlalchemy.sql will require many passes to get all
modules even gradually typed.  Will have to pick and
choose what modules can be strictly typed vs. which
can be gradual.

in this patch, emphasis is on visitors.py, cache_key.py,
annotations.py for strict typing, compiler.py is on gradual
typing but has much more structure, in particular where it
connects with the outside world.

The work within compiler.py also reached back out to
engine/cursor.py , default.py quite a bit.

References: #6810
Change-Id: I6e8a29f6013fd216e43d45091bc193f8be0368fd

3 years agoMerge "additional mypy strictness" into main
mike bayer [Sat, 12 Mar 2022 19:59:29 +0000 (19:59 +0000)] 
Merge "additional mypy strictness" into main

3 years agoadditional mypy strictness
Mike Bayer [Thu, 10 Mar 2022 16:57:00 +0000 (11:57 -0500)] 
additional mypy strictness

enable type checking within untyped defs.  This allowed
some more internals to be fixed up with assertions etc.

some internals that were unnecessary or not even used
at all were removed.  BaseCursorResult was no longer
necessary since we only have one kind of CursorResult
now.  The different ResultProxy subclasses that had
alternate "strategies" dont appear to be used at all
even in 1.4.x, as there's no code that accesses the
_cursor_strategy_cls attribute, which is also removed.
As these were mostly private constructs that weren't
even functioning correctly in any case,
it's fine to remove these over the 2.0 boundary.

Change-Id: Ifd536987d104b1cd8b546cefdbd5c1e5d1801082

3 years agorestore quickstart to toc
Mike Bayer [Fri, 11 Mar 2022 21:23:14 +0000 (16:23 -0500)] 
restore quickstart to toc

this was coming out wrong due to the wrong header level
on the page.  it needs to be in a visible toc so that
the inner elements show up on the sidebar / top mobile nav.

Change-Id: I13acbe0d82c6a839230bc2e2454e4ab82e4879e6

3 years agofurther simplify pool-sharing doc
Mike Bayer [Fri, 11 Mar 2022 21:01:09 +0000 (16:01 -0500)] 
further simplify pool-sharing doc

1. the event based approach doesn't require dispose() to be
   called at all, and the note that the "pool will hang" makes
   no sense.   I have no idea what that refers towards
2. the subsequent paragraph about connections and sessions
   is unintelligible.  old paragraphs like these are likely
   why people complain about the docs so much.  try to just
   say "don't do this", as that is easier than trying to
   explain to use connection.invalidate() etc.

Change-Id: Id840c65a2f71583ced4dc82fd8690e7da4c4b10e

3 years agodispose session outside of child proc
Mike Bayer [Fri, 11 Mar 2022 19:59:04 +0000 (14:59 -0500)] 
dispose session outside of child proc

disposing inside the child proc can interfere with the parent
process.  we likely never considered this.

Fixes: #7815
Change-Id: I6ad0e5840655ed99a9d30002eba280c8e44a5c2e

3 years agotake quickstart out of main TOC for now
Mike Bayer [Fri, 11 Mar 2022 19:10:17 +0000 (14:10 -0500)] 
take quickstart out of main TOC for now

looks kind of awkward and isn't reference

Change-Id: I4fb664f79b792a32c6695a9cae7b1845a3044271

3 years agofix section format headings, remove "Step: "
Mike Bayer [Fri, 11 Mar 2022 19:07:09 +0000 (14:07 -0500)] 
fix section format headings, remove "Step: "

Change-Id: I25a837cf866b152a30aa373d07f704e0cc11d497

3 years agoadd copybutton
Mike Bayer [Fri, 11 Mar 2022 18:40:16 +0000 (13:40 -0500)] 
add copybutton

works great, including for plain code plus prompt code
with SQL (copies only the prompt code when prompts are present).
added some styling to zzzeeksphinx

Change-Id: I1b94b0488689e875adfb90ec171e04f7e8022415

3 years agoORM quickstart
Mike Bayer [Fri, 11 Mar 2022 15:08:36 +0000 (10:08 -0500)] 
ORM quickstart

This is done in 1.4 style so it can be backported to 1.4.
Will put this up as is, we can work on it.   For 2.0, the
ORM mapping will be updated to mapped_column() style when
we do the full pass.

Change-Id: Icfdf81449973844dac244b3a107ce955a7d3b16c

3 years agoMerge "support adapt_on_names for with_polymorphic" into main
mike bayer [Wed, 9 Mar 2022 15:37:00 +0000 (15:37 +0000)] 
Merge "support adapt_on_names for with_polymorphic" into main

3 years agoadd note about slots=True for attrs
Mike Bayer [Tue, 8 Mar 2022 23:38:11 +0000 (18:38 -0500)] 
add note about slots=True for attrs

Fixes: #7802
Change-Id: Ic5fadd369a0b63309cd9c44798ee5395efdbab2b

3 years agopop the stack that we pushed
Mike Bayer [Tue, 8 Mar 2022 18:40:12 +0000 (13:40 -0500)] 
pop the stack that we pushed

Fixed regression caused by :ticket:`7760` where the new capabilities of
:class:`.TextualSelect` were not fully implemented within the compiler
properly, leading to issues with composed INSERT constructs such as "INSERT
FROM SELECT" and "INSERT...ON CONFLICT" when combined with CTE and textual
statements.

Fixes: #7798
Change-Id: Ia2ce92507e574dd36fd26dd38ec9dd2713584467

3 years agosupport adapt_on_names for with_polymorphic
Mike Bayer [Tue, 8 Mar 2022 14:34:09 +0000 (09:34 -0500)] 
support adapt_on_names for with_polymorphic

Added :paramref:`_orm.with_polymorphic.adapt_on_names` to the
:func:`_orm.with_polymorphic` function, which allows a polymorphic load
(typically with concrete mapping) to be stated against an alternative
selectable that will adapt to the original mapped selectable on column
names alone.

Fixes: #7805
Change-Id: I933e180a489fec8a6f4916d1622d444dd4434f30

3 years agoMerge "support selectin_polymorphic w/ no fixed polymorphic_on" into main
mike bayer [Tue, 8 Mar 2022 15:20:09 +0000 (15:20 +0000)] 
Merge "support selectin_polymorphic w/ no fixed polymorphic_on" into main

3 years agosupport selectin_polymorphic w/ no fixed polymorphic_on
Mike Bayer [Mon, 7 Mar 2022 20:11:29 +0000 (15:11 -0500)] 
support selectin_polymorphic w/ no fixed polymorphic_on

Fixed issue where the :func:`_orm.polymorphic_selectin` loader option would
not work with joined inheritance mappers that don't have a fixed
"polymorphic_on" column.   Additionally added test support for a wider
variety of usage patterns with this construct.

Fixed bug where :func:`_orm.composite` attributes would not work in
conjunction with the :func:`_orm.selectin_polymorphic` loader strategy for
joined table inheritance.

Fixes: #7799
Fixes: #7801
Change-Id: I7cfe32dfe844b188403b39545930c0aee71d0119

3 years agoMerge "adapt create_engine from sqlalchemy2-stubs" into main
mike bayer [Tue, 8 Mar 2022 04:25:21 +0000 (04:25 +0000)] 
Merge "adapt create_engine from sqlalchemy2-stubs" into main

3 years agoadapt create_engine from sqlalchemy2-stubs
Mike Bayer [Mon, 7 Mar 2022 17:01:42 +0000 (12:01 -0500)] 
adapt create_engine from sqlalchemy2-stubs

this is much simplified, will try to see if _IsolationLevel
can work out, technically some driver can have custom values
here but in practice this might not be a thing

Change-Id: I6085ccb559c377fab03c8ce79f0eecb240c56f7a

3 years agotest sqlite w/ savepoint workaround in session fixture test
Mike Bayer [Mon, 7 Mar 2022 16:17:47 +0000 (11:17 -0500)] 
test sqlite w/ savepoint workaround in session fixture test

Fixes: #7795
Change-Id: Ib790581555656c088f86c00080c70d19ca295a03

3 years agocherry-pick changelog update for 1.4.33
Mike Bayer [Sun, 6 Mar 2022 22:43:27 +0000 (17:43 -0500)] 
cherry-pick changelog update for 1.4.33

3 years agocherry-pick changelog from 1.4.32
Mike Bayer [Sun, 6 Mar 2022 22:43:26 +0000 (17:43 -0500)] 
cherry-pick changelog from 1.4.32