def handle_call_tool()

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)}"