in src/hologres_mcp_server/utils.py [0:0]
def handle_call_tool(tool_name, query, serverless = False):
"""Handle callTool method."""
config = get_db_config()
try:
with connect_with_retry() as conn:
with conn.cursor() as cursor:
# 特殊处理 serverless computing 查询
if serverless:
cursor.execute("set hg_computing_resource='serverless'")
# Execute the query
cursor.execute(query)
# 特殊处理 ANALYZE 命令
if tool_name == "gather_hg_table_statistics":
return f"Successfully {query}"
# 处理其他有返回结果的查询
if cursor.description: # SELECT query
columns = [desc[0] for desc in cursor.description]
rows = cursor.fetchall()
result = [",".join(map(str, row)) for row in rows]
return "\n".join([",".join(columns)] + result)
elif tool_name == "execute_dml_sql": # Non-SELECT query
row_count = cursor.rowcount
return f"Query executed successfully. {row_count} rows affected."
else:
return "Query executed successfully"
except Exception as e:
return f"Error executing query: {str(e)}"