]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commit
Don't cache savepoint identifiers
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 6 Mar 2017 17:26:01 +0000 (12:26 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 6 Mar 2017 22:20:06 +0000 (17:20 -0500)
commitf4c4f784cde8e51301b09f187d2f086bfae47453
treef0fd96d4b7c59dfd3a662ae2b0f4bb0e9eee2884
parent66e483ebdca8f93d3e028a201e04f2be49c71c51
Don't cache savepoint identifiers

Fixed bug in compiler where the string identifier of a savepoint would
be cached in the identifier quoting dictionary; as these identifiers
are arbitrary, a small memory leak could occur if a single
:class:`.Connection` had an unbounded number of savepoints used,
as well as if the savepoint clause constructs were used directly
with an unbounded umber of savepoint names.   The memory leak does
**not** impact the vast majority of cases as normally the
:class:`.Connection`, which renders savepoint names with a simple
counter starting at "1", is used on a per-transaction or
per-fixed-number-of-transactions basis before being discarded.

The savepoint name in virtually all cases does not require quoting
at all, however to support potential third party use cases
the "check for quotes needed" logic is retained, at a small
performance cost.   Uncondtionally quoting the name is another
option, but this would turn the name into a case sensitive name
which runs the risk of poor interactions with existing deployments
that may be looking at these names in other contexts.

Change-Id: I6b53c96abf7fdf1840592bbca5da81347911844c
Fixes: #3931
doc/build/changelog/changelog_11.rst
lib/sqlalchemy/sql/compiler.py
test/aaa_profiling/test_memusage.py