diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2023-01-05 14:17:01 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@ci3.zzzcomputing.com> | 2023-01-05 14:17:01 +0000 |
| commit | aafded2fe6f955d23ab974574978f2a6f96234b9 (patch) | |
| tree | 5cea729aa1e4985a236ca7efa181055ee0ca7546 /lib/sqlalchemy/dialects/mysql | |
| parent | a36830eaae3f7cf75ec1fabc7213dcec6e6e4349 (diff) | |
| parent | 4a31f97824095610cfdbc1ac1180fd8690f9f477 (diff) | |
| download | sqlalchemy-aafded2fe6f955d23ab974574978f2a6f96234b9.tar.gz | |
Merge "include parsed col length field as integer from mysql index reflection" into main
Diffstat (limited to 'lib/sqlalchemy/dialects/mysql')
| -rw-r--r-- | lib/sqlalchemy/dialects/mysql/base.py | 12 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/mysql/reflection.py | 7 |
2 files changed, 16 insertions, 3 deletions
diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index fbd20a0ba..e89ebb09d 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -3075,14 +3075,22 @@ class MySQLDialect(default.DefaultDialect): ] index_d = {} - if dialect_options: - index_d["dialect_options"] = dialect_options index_d["name"] = spec["name"] index_d["column_names"] = [s[0] for s in spec["columns"]] + mysql_length = { + s[0]: s[1] for s in spec["columns"] if s[1] is not None + } + if mysql_length: + dialect_options["%s_length" % self.name] = mysql_length + index_d["unique"] = unique if flavor: index_d["type"] = flavor + + if dialect_options: + index_d["dialect_options"] = dialect_options + indexes.append(index_d) indexes.sort(key=lambda d: d["name"] or "~") # sort None as last return indexes if indexes else ReflectionDefaults.indexes() diff --git a/lib/sqlalchemy/dialects/mysql/reflection.py b/lib/sqlalchemy/dialects/mysql/reflection.py index fe92c733a..ec3f82a60 100644 --- a/lib/sqlalchemy/dialects/mysql/reflection.py +++ b/lib/sqlalchemy/dialects/mysql/reflection.py @@ -382,7 +382,12 @@ class MySQLTableDefinitionParser: def _parse_keyexprs(self, identifiers): """Unpack '"col"(2),"col" ASC'-ish strings into components.""" - return self._re_keyexprs.findall(identifiers) + return [ + (colname, int(length) if length else None, modifiers) + for colname, length, modifiers in self._re_keyexprs.findall( + identifiers + ) + ] def _prep_regexes(self): """Pre-compile regular expressions.""" |
