Path to this page:
Subject: CVS commit: pkgsrc/databases/py-sqlalchemy
From: Adam Ciarcinski
Date: 2019-10-10 20:22:49
Message id: 20191010182249.5AB28FBF4@cvs.NetBSD.org
Log Message:
py-sqlalchemy: updated to 1.3.10
1.3.10
mssql
[mssql] [bug]
Fixed bug in SQL Server dialect with new “max_identifier_length” feature \
where the mssql dialect already featured this flag, and the implementation did \
not accommodate for the new initialization hook correctly.
oracle
[oracle] [bug]
Fixed regression in Oracle dialect that was inadvertently using max identifier \
length of 128 characters on Oracle server 12.2 and greater even though the \
stated contract for the remainder of the 1.3 series is that this value stays at \
30 until version SQLAlchemy 1.4. Also repaired issues with the retrieval of the \
“compatibility” version, and removed the warning emitted when the \
“v$parameter” view was not accessible as this was causing user confusion.
1.3.9
orm
[orm] [bug]
Fixed regression in selectinload loader strategy caused by 4775 (released in \
version 1.3.6) where a many-to-one attribute of None would no longer be \
populated by the loader. While this was usually not noticeable due to the \
lazyloader populating None upon get, it would lead to a detached instance error \
if the object were detached.
[orm] [bug]
Passing a plain string expression to Session.query() is deprecated, as all \
string coercions were removed in 4481 and this one should have been included. \
The literal_column() function may be used to produce a textual column \
expression.
[orm] [bug]
A warning is emitted for a condition in which the Session may implicitly swap an \
object out of the identity map for another one with the same primary key, \
detaching the old one, which can be an observed result of load operations which \
occur within the SessionEvents.after_flush() hook. The warning is intended to \
notify the user that some special condition has caused this to happen and that \
the previous object may not be in the expected state.
engine
[engine] [usecase]
Added new create_engine() parameter create_engine.max_identifier_length. This \
overrides the dialect-coded “max identifier length” in order to accommodate \
for databases that have recently changed this length and the SQLAlchemy dialect \
has not yet been adjusted to detect for that version. This parameter interacts \
with the existing create_engine.label_length parameter in that it establishes \
the maximum (and default) value for anonymously generated labels. Additionally, \
post-connection detection of max identifier lengths has been added to the \
dialect system. This feature is first being used by the Oracle dialect.
sql
[sql] [bug]
Characters that interfere with “pyformat” or “named” formats in bound \
parameters, namely %, (, ) and the space character, as well as a few other \
typically undesirable characters, are stripped early for a bindparam() that is \
using an anonymized name, which is typically generated automatically from a \
named column which itself includes these characters in its name and does not use \
a .key, so that they do not interfere either with the SQLAlchemy compiler’s \
use of string formatting or with the driver-level parsing of the parameter, both \
of which could be demonstrated before the fix. The change only applies to \
anonymized parameter names that are generated and consumed internally, not \
end-user defined names, so the change should have no impact on any existing \
code. Applies in particular to the psycopg2 driver which does not otherwise \
quote special parameter names, but also strips leading underscores to suit \
Oracle (but not yet leading numbers, as some anon parameters are c
urrently entirely numeric/underscore based); Oracle in any case continues to \
quote parameter names that include special characters.
[sql] [usecase]
Added an explicit error message for the case when objects passed to Table are \
not SchemaItem objects, rather than resolving to an attribute error.
sqlite
[sqlite] [usecase]
Added support for sqlite “URI” connections, which allow for sqlite-specific \
flags to be passed in the query string such as “read only” for Python \
sqlite3 drivers that support this.
mssql
[mssql] [bug]
Added identifier quoting to the schema name applied to the “use” statement \
which is invoked when a SQL Server multipart schema name is used within a Table \
that is being reflected, as well as for Inspector methods such as \
Inspector.get_table_names(); this accommodates for special characters or spaces \
in the database name. Additionally, the “use” statement is not emitted if \
the current database matches the target owner database name being passed.
oracle
[oracle] [bug]
Restored adding cx_Oracle.DATETIME to the setinputsizes() call when a SQLAlchemy \
Date, DateTime or Time datatype is used, as some complex queries require this to \
be present. This was removed in the 1.2 series for arbitrary reasons.
[oracle] [usecase]
The Oracle dialect now emits a warning if Oracle version 12.2 or greater is \
used, and the create_engine.max_identifier_length parameter is not set. The \
version in this specific case defaults to that of the “compatibility” \
version set in the Oracle server configuration, not the actual server version. \
In version 1.4, the default max_identifier_length for 12.2 or greater will move \
to 128 characters. In order to maintain forwards compatibility, applications \
should set create_engine.max_identifier_length to 30 in order to maintain the \
same length behavior, or to 128 in order to test the upcoming behavior. This \
length determines among other things how generated constraint names are \
truncated for statements like CREATE CONSTRAINT and DROP CONSTRAINT, which means \
a the new length may produce a name-mismatch against a name that was generated \
with the old length, impacting database migrations.
misc
[bug] [tests]
Fixed unit test regression released in 1.3.8 that would cause failure for \
Oracle, SQL Server and other non-native ENUM platforms due to new enumeration \
tests added as part of 4285 enum sortability in the unit of work; the \
enumerations created constraints that were duplicated on name.
Files: