fix rdbms_db_summary (#1409)

This commit is contained in:
yyhhyy 2024-04-13 11:03:49 +08:00 committed by GitHub
parent 583009305a
commit f3ece627d0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,5 +1,5 @@
"""Summary for rdbms database."""
import re
from typing import TYPE_CHECKING, List, Optional
from dbgpt._private.config import Config
@ -102,10 +102,20 @@ def _parse_table_summary(
columns.append(f"{column['name']}")
column_str = ", ".join(columns)
# Obtain index information
index_keys = []
for index_key in conn.get_indexes(table_name):
key_str = ", ".join(index_key["column_names"])
index_keys.append(f"{index_key['name']}(`{key_str}`) ") # noqa
raw_indexes = conn.get_indexes(table_name)
for index in raw_indexes:
if isinstance(index, tuple): # Process tuple type index information
index_name, index_creation_command = index
# Extract column names using re
matched_columns = re.findall(r"\(([^)]+)\)", index_creation_command)
if matched_columns:
key_str = ", ".join(matched_columns)
index_keys.append(f"{index_name}(`{key_str}`) ")
else:
key_str = ", ".join(index["column_names"])
index_keys.append(f"{index['name']}(`{key_str}`) ")
table_str = summary_template.format(table_name=table_name, columns=column_str)
if len(index_keys) > 0:
index_key_str = ", ".join(index_keys)