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),
)
-@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),
)
-@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),
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."""
@property
def check_constraints_w_enforcement(self):
- return exclusions.fails_on("mysql")
+ return exclusions.fails_on(["mysql", "mariadb"])
@property
def unnamed_constraints(self):
@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):
@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):
@property
def mysql(self):
- return exclusions.only_on(["mysql"])
+ return exclusions.only_on(["mysql", "mariadb"])
@property
def oracle(self):
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
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)
# 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)
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)
# 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):
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)