"""Target database must support INTERSECT or equivalent."""
return fails_if(
- [self._mysql_not_mariadb_103],
+ [self._mysql_not_mariadb_103_not_mysql8031],
"no support for INTERSECT",
)
@property
def except_(self):
"""Target database must support EXCEPT or equivalent (i.e. MINUS)."""
- return fails_if([self._mysql_not_mariadb_103], "no support for EXCEPT")
+ return fails_if(
+ [self._mysql_not_mariadb_103_not_mysql8031],
+ "no support for EXCEPT",
+ )
@property
def dupe_order_by_ok(self):
or config.db.dialect._mariadb_normalized_version_info < (10, 3)
)
+ def _mysql_not_mariadb_103_not_mysql8031(self, config):
+ return (against(config, ["mysql", "mariadb"])) and (
+ (
+ config.db.dialect._is_mariadb
+ and config.db.dialect._mariadb_normalized_version_info
+ < (10, 3)
+ )
+ or (
+ not config.db.dialect._is_mariadb
+ and config.db.dialect.server_version_info < (8, 0, 31)
+ )
+ )
+
def _mysql_not_mariadb_104(self, config):
return (against(config, ["mysql", "mariadb"])) and (
not config.db.dialect._is_mariadb
or config.db.dialect._mariadb_normalized_version_info < (10, 4)
)
+ def _mysql_not_mariadb_104_not_mysql8031(self, config):
+ return (against(config, ["mysql", "mariadb"])) and (
+ (
+ config.db.dialect._is_mariadb
+ and config.db.dialect._mariadb_normalized_version_info
+ < (10, 4)
+ )
+ or (
+ not config.db.dialect._is_mariadb
+ and config.db.dialect.server_version_info < (8, 0, 31)
+ )
+ )
+
def _has_mysql_on_windows(self, config):
with config.db.connect() as conn:
return (
@testing.crashes("oracle", "FIXME: unknown, verify not fails_on")
@testing.fails_on(
- testing.requires._mysql_not_mariadb_104, "FIXME: unknown"
+ testing.requires._mysql_not_mariadb_104_not_mysql8031, "FIXME: unknown"
)
@testing.fails_on("sqlite", "FIXME: unknown")
def test_union_all(self, connection):
eq_(found2, wanted)
@testing.fails_on(
- ["sqlite", testing.requires._mysql_not_mariadb_104],
+ ["sqlite", testing.requires._mysql_not_mariadb_104_not_mysql8031],
"Can't handle this style of nesting",
)
@testing.requires.except_
@testing.requires.intersect
@testing.fails_on(
- ["sqlite", testing.requires._mysql_not_mariadb_104],
+ ["sqlite", testing.requires._mysql_not_mariadb_104_not_mysql8031],
"sqlite can't handle leading parenthesis",
)
def test_intersect_unions(self, connection):