[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/databases/py-sqlalchemy py-sqlalchemy: updated to 1.3.10
user: adam <adam%pkgsrc.org@localhost>
date: Thu Oct 10 18:22:49 2019 +0000
py-sqlalchemy: updated to 1.3.10
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
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.
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.
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.
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.
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.
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 currently
entirely numeric/underscore based); Oracle in any case continues to quote parameter names that include special characters.
Added an explicit error message for the case when objects passed to Table are not SchemaItem objects, rather than resolving to an attribute error.
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.
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.
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.
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.
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.
databases/py-sqlalchemy/Makefile | 4 ++--
databases/py-sqlalchemy/distinfo | 10 +++++-----
2 files changed, 7 insertions(+), 7 deletions(-)
diffs (27 lines):
diff -r cb36e0b0083c -r 4691c85049d4 databases/py-sqlalchemy/Makefile
--- a/databases/py-sqlalchemy/Makefile Thu Oct 10 18:00:45 2019 +0000
+++ b/databases/py-sqlalchemy/Makefile Thu Oct 10 18:22:49 2019 +0000
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.56 2019/08/28 06:32:52 adam Exp $
+# $NetBSD: Makefile,v 1.57 2019/10/10 18:22:49 adam Exp $
CATEGORIES= databases python
diff -r cb36e0b0083c -r 4691c85049d4 databases/py-sqlalchemy/distinfo
--- a/databases/py-sqlalchemy/distinfo Thu Oct 10 18:00:45 2019 +0000
+++ b/databases/py-sqlalchemy/distinfo Thu Oct 10 18:22:49 2019 +0000
@@ -1,6 +1,6 @@
-$NetBSD: distinfo,v 1.51 2019/08/28 06:32:52 adam Exp $
+$NetBSD: distinfo,v 1.52 2019/10/10 18:22:49 adam Exp $
-SHA1 (SQLAlchemy-1.3.8.tar.gz) = 54d0f837e6855e1e76caa6ef521b76423c8f8a1a
-RMD160 (SQLAlchemy-1.3.8.tar.gz) = 8fd45d10108c75c539bcb3eb54c3d8de464fc27b
-SHA512 (SQLAlchemy-1.3.8.tar.gz) = 150f8b5220a58a91814fcfd1dc87e2a2082628c8bbbf01878cad9a2642d4257dcc45c5d578573bef828b3d05e316c7fa1cb268053fe62dce4cc442b7b080b0d0
-Size (SQLAlchemy-1.3.8.tar.gz) = 5933959 bytes
+SHA1 (SQLAlchemy-1.3.10.tar.gz) = b4e304fa157cd97856ba93c6df7ce9141e6e4baf
+RMD160 (SQLAlchemy-1.3.10.tar.gz) = 79cf291deb52dd122b202a93d7fe80d17671af41
+SHA512 (SQLAlchemy-1.3.10.tar.gz) = d4ea7c56b1a2e487f596db2d0968e2312cee2a7a0b68a9a98b5d9439974e79fcd21b7dda4cbdffd5013172ad4bdadf7283cade62b2c26875905fbeb318d0e83b
+Size (SQLAlchemy-1.3.10.tar.gz) = 5967223 bytes
Main Index |
Thread Index |