summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/mysql
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2023-01-05 14:17:01 +0000
committerGerrit Code Review <gerrit@ci3.zzzcomputing.com>2023-01-05 14:17:01 +0000
commitaafded2fe6f955d23ab974574978f2a6f96234b9 (patch)
tree5cea729aa1e4985a236ca7efa181055ee0ca7546 /lib/sqlalchemy/dialects/mysql
parenta36830eaae3f7cf75ec1fabc7213dcec6e6e4349 (diff)
parent4a31f97824095610cfdbc1ac1180fd8690f9f477 (diff)
downloadsqlalchemy-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.py12
-rw-r--r--lib/sqlalchemy/dialects/mysql/reflection.py7
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."""