From f684bb7659ff195d4c55414162c1de4fbfdafc2f Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Wed, 3 Aug 2022 14:08:32 -0400 Subject: ensure RETURNING renders in stringify w/ no server version just in my own testing, if I say insert().return_defaults() and stringify, I should see it, so make sure all the dialects default to "insert_returning" etc. , with downgrade on server version check. Change-Id: Id64e78fcb03c48b5dcb0feb21cb9cc495edd15e9 --- lib/sqlalchemy/dialects/mysql/base.py | 6 ++++++ lib/sqlalchemy/dialects/sqlite/base.py | 7 +++++-- lib/sqlalchemy/engine/default.py | 4 ++++ 3 files changed, 15 insertions(+), 2 deletions(-) (limited to 'lib/sqlalchemy') diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index 596ca34f2..9e7ba4646 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -2568,6 +2568,12 @@ class MySQLDialect(default.DefaultDialect): # this would have been set by the default dialect already, # so set it again self.identifier_preparer = self.preparer(self) + + # this will be updated on first connect in initialize() + # if using older mariadb version + self.delete_returning = True + self.insert_returning = True + self.is_mariadb = is_mariadb def do_begin_twophase(self, connection, xid): diff --git a/lib/sqlalchemy/dialects/sqlite/base.py b/lib/sqlalchemy/dialects/sqlite/base.py index ce688741f..222f3a137 100644 --- a/lib/sqlalchemy/dialects/sqlite/base.py +++ b/lib/sqlalchemy/dialects/sqlite/base.py @@ -1930,6 +1930,9 @@ class SQLiteDialect(default.DefaultDialect): tuple_in_values = True supports_statement_cache = True insert_null_pk_still_autoincrements = True + insert_returning = True + update_returning = True + delete_returning = True default_paramstyle = "qmark" execution_ctx_cls = SQLiteExecutionContext @@ -2037,10 +2040,10 @@ class SQLiteDialect(default.DefaultDialect): 14, ) - if self.dbapi.sqlite_version_info >= (3, 35): + if self.dbapi.sqlite_version_info < (3, 35): self.update_returning = ( self.delete_returning - ) = self.insert_returning = True + ) = self.insert_returning = False _isolation_lookup = util.immutabledict( {"READ UNCOMMITTED": 1, "SERIALIZABLE": 0} diff --git a/lib/sqlalchemy/engine/default.py b/lib/sqlalchemy/engine/default.py index cab96eac1..4b312dceb 100644 --- a/lib/sqlalchemy/engine/default.py +++ b/lib/sqlalchemy/engine/default.py @@ -903,6 +903,10 @@ class StrCompileDialect(DefaultDialect): type_compiler_cls = compiler.StrSQLTypeCompiler preparer = compiler.IdentifierPreparer + insert_returning = True + update_returning = True + delete_returning = True + supports_statement_cache = True supports_identity_columns = True -- cgit v1.2.1