supports_for_update_of = False # default for MySQL ...
# ... may be updated to True for MySQL 8+ in initialize()
+ supports_notnull_generated_columns = False # Only available ...
+ # ... in MySQL 5.7+
+
_requires_alias_for_on_duplicate_key = False # Only available ...
# ... in MySQL 8+
self._is_mysql and self.server_version_info >= (8,)
)
+ self.supports_notnull_generated_columns = (
+ self._is_mysql and self.server_version_info >= (5, 7)
+ )
+
self._needs_correct_for_88718_96365 = (
not self.is_mariadb and self.server_version_info >= (8,)
)
).first()
explicit_defaults_for_timestamp = row[1].lower() in ("on", "1", "true")
- reflected = []
- for idx, cols in enumerate(
+ test_cases = [
[
- [
- "x INTEGER NULL",
- "y INTEGER NOT NULL",
- "z INTEGER",
- "q TIMESTAMP NULL",
- ],
- ["p TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP"],
- ["r TIMESTAMP NOT NULL"],
- ["s TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP"],
- ["t TIMESTAMP"],
- ["u TIMESTAMP DEFAULT CURRENT_TIMESTAMP"],
- ["v INTEGER GENERATED ALWAYS AS (4711) VIRTUAL NOT NULL"],
- ]
- ):
+ "x INTEGER NULL",
+ "y INTEGER NOT NULL",
+ "z INTEGER",
+ "q TIMESTAMP NULL",
+ ],
+ ["p TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP"],
+ ["r TIMESTAMP NOT NULL"],
+ ["s TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP"],
+ ["t TIMESTAMP"],
+ ["u TIMESTAMP DEFAULT CURRENT_TIMESTAMP"],
+ ["v INTEGER GENERATED ALWAYS AS (4711) VIRTUAL NOT NULL"],
+ ]
+ if connection.dialect.supports_notnull_generated_columns:
+ test_cases.append(
+ ["v INTEGER GENERATED ALWAYS AS (4711) VIRTUAL NOT NULL"])
+
+ reflected = []
+ for idx, cols in enumerate(test_cases):
Table("nn_t%d" % idx, meta) # to allow DROP
connection.exec_driver_sql(