From: Mike Bayer Date: Sat, 15 Aug 2020 18:07:44 +0000 (-0400) Subject: continue adding mariadb placeholder impl X-Git-Tag: rel_1_4_3~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=985422d42f0670c4019cd3d208aa90d2cdbbe421;p=thirdparty%2Fsqlalchemy%2Falembic.git continue adding mariadb placeholder impl the change in 14b6b24c3e3950a6255333b3a01f47a819040ea0 was nearly pointless by itself as I forgot to add "mariadb" to compiles rules and requirements. Change-Id: I6e17f65842bda0aaf6e67437d12078318311eb60 --- diff --git a/alembic/ddl/mysql.py b/alembic/ddl/mysql.py index 32f04d61..96383fb2 100644 --- a/alembic/ddl/mysql.py +++ b/alembic/ddl/mysql.py @@ -288,17 +288,17 @@ class MySQLModifyColumn(MySQLChangeColumn): pass -@compiles(ColumnNullable, "mysql") -@compiles(ColumnName, "mysql") -@compiles(ColumnDefault, "mysql") -@compiles(ColumnType, "mysql") +@compiles(ColumnNullable, "mysql", "mariadb") +@compiles(ColumnName, "mysql", "mariadb") +@compiles(ColumnDefault, "mysql", "mariadb") +@compiles(ColumnType, "mysql", "mariadb") def _mysql_doesnt_support_individual(element, compiler, **kw): raise NotImplementedError( "Individual alter column constructs not supported by MySQL" ) -@compiles(MySQLAlterDefault, "mysql") +@compiles(MySQLAlterDefault, "mysql", "mariadb") def _mysql_alter_default(element, compiler, **kw): return "%s ALTER COLUMN %s %s" % ( alter_table(compiler, element.table_name, element.schema), @@ -309,7 +309,7 @@ def _mysql_alter_default(element, compiler, **kw): ) -@compiles(MySQLModifyColumn, "mysql") +@compiles(MySQLModifyColumn, "mysql", "mariadb") def _mysql_modify_column(element, compiler, **kw): return "%s MODIFY %s %s" % ( alter_table(compiler, element.table_name, element.schema), @@ -325,7 +325,7 @@ def _mysql_modify_column(element, compiler, **kw): ) -@compiles(MySQLChangeColumn, "mysql") +@compiles(MySQLChangeColumn, "mysql", "mariadb") def _mysql_change_column(element, compiler, **kw): return "%s CHANGE %s %s %s" % ( alter_table(compiler, element.table_name, element.schema), @@ -368,7 +368,7 @@ def _mysql_colspec( return spec -@compiles(schema.DropConstraint, "mysql") +@compiles(schema.DropConstraint, "mysql", "mariadb") def _mysql_drop_constraint(element, compiler, **kw): """Redefine SQLAlchemy's drop constraint to raise errors for invalid constraint type.""" diff --git a/tests/requirements.py b/tests/requirements.py index d6794a54..45990138 100644 --- a/tests/requirements.py +++ b/tests/requirements.py @@ -39,7 +39,7 @@ class DefaultRequirements(SuiteRequirements): @property def check_constraints_w_enforcement(self): - return exclusions.fails_on("mysql") + return exclusions.fails_on(["mysql", "mariadb"]) @property def unnamed_constraints(self): @@ -59,7 +59,7 @@ class DefaultRequirements(SuiteRequirements): @property def reflects_fk_options(self): - return exclusions.only_on(["postgresql", "mysql", "sqlite"]) + return exclusions.only_on(["postgresql", "mysql", "mariadb", "sqlite"]) @property def fk_initially(self): @@ -82,7 +82,7 @@ class DefaultRequirements(SuiteRequirements): @property def reflects_unique_constraints_unambiguously(self): - return exclusions.fails_on("mysql", "oracle") + return exclusions.fails_on(["mysql", "mariadb", "oracle"]) @property def reflects_pk_names(self): @@ -104,7 +104,7 @@ class DefaultRequirements(SuiteRequirements): @property def mysql(self): - return exclusions.only_on(["mysql"]) + return exclusions.only_on(["mysql", "mariadb"]) @property def oracle(self): @@ -163,14 +163,14 @@ class DefaultRequirements(SuiteRequirements): def autocommit_isolation(self): """target database should support 'AUTOCOMMIT' isolation level""" - return exclusions.only_on("postgresql", "mysql") + return exclusions.only_on(["postgresql", "mysql", "mariadb"]) @property def computed_columns(self): # TODO: in theory if these could come from SQLAlchemy dialects # that would be helpful return self.computed_columns_api + exclusions.only_on( - ["postgresql >= 12", "oracle", "mssql", "mysql >= 5.7"] + ["postgresql >= 12", "oracle", "mssql", "mysql >= 5.7", "mariadb"] ) @property @@ -242,7 +242,7 @@ class DefaultRequirements(SuiteRequirements): def _mariadb_102(self, config): return ( - exclusions.against(config, "mysql") + exclusions.against(config, ["mysql", "mariadb"]) and sqla_compat._is_mariadb(config.db.dialect) and sqla_compat._mariadb_normalized_version_info(config.db.dialect) > (10, 2) @@ -252,7 +252,7 @@ class DefaultRequirements(SuiteRequirements): # MySQL has check constraints that enforce an reflect, however # they prevent a column's name from being changed due to a bug in # MariaDB 10.2 as well as MySQL 8.0.16 - if exclusions.against(config, "mysql"): + if exclusions.against(config, ["mysql", "mariadb"]): if sqla_compat._is_mariadb(config.db.dialect): mnvi = sqla_compat._mariadb_normalized_version_info norm_version_info = mnvi(config.db.dialect) @@ -271,7 +271,7 @@ class DefaultRequirements(SuiteRequirements): def _mysql_and_check_constraints_exist(self, config): # 1. we have mysql / mariadb and # 2. it enforces check constraints - if exclusions.against(config, "mysql"): + if exclusions.against(config, ["mysql", "mariadb"]): if sqla_compat._is_mariadb(config.db.dialect): mnvi = sqla_compat._mariadb_normalized_version_info norm_version_info = mnvi(config.db.dialect) @@ -286,7 +286,7 @@ class DefaultRequirements(SuiteRequirements): # 1. we dont have mysql / mariadb or # 2. we have mysql / mariadb that enforces check constraints return not exclusions.against( - config, "mysql" + config, ["mysql", "mariadb"] ) or self._mysql_and_check_constraints_exist(config) def _mysql_check_constraints_dont_exist(self, config): @@ -295,7 +295,7 @@ class DefaultRequirements(SuiteRequirements): return not self._mysql_check_constraints_exist(config) def _mysql_not_mariadb_102(self, config): - return exclusions.against(config, "mysql") and ( + return exclusions.against(config, ["mysql", "mariadb"]) and ( not sqla_compat._is_mariadb(config.db.dialect) or sqla_compat._mariadb_normalized_version_info(config.db.dialect) < (10, 2)