File size: 1,125 Bytes
05e3517
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def execution_agent(state):
    """Executes the optimized SQL query against BigQuery."""
    query = state.get("optimized_sql", "").strip()
    client = state["client"]
    
    if not query:
        return {"execution_result": {"error": "No SQL query to execute."}}
    
    print(f"DEBUG: Final SQL Query before execution:\n{query}")
    
    if client is None:
        return {"execution_result": {"error": "Failed to connect to BigQuery."}}
    
    try:
        # Execute the query
        query_job = client.query(query)
        results = query_job.result()  # Wait for query to complete
        
        # Convert results to a list of tuples (similar to SQLite format)
        rows = []
        for row in results:
            # Convert each row to a tuple of values
            row_values = tuple(row.values())
            rows.append(row_values)
        
        if not rows:
            return {"execution_result": {"error": "Query executed successfully but returned no results."}}
        
        return {"execution_result": rows}
    except Exception as e:
        return {"execution_result": {"error": str(e)}}