Skip to main content
Glama
error_analyzer.py2.51 kB
import re import logging from typing import Dict, Optional, Any from .dune_client import DuneService logger = logging.getLogger(__name__) class ErrorAnalyzer: def __init__(self, dune_service: DuneService): self.dune = dune_service def analyze(self, error_message: str, sql: str) -> Dict[str, Any]: """ Analyze a query error and SQL to provide suggestions. """ analysis = { "error_type": "Unknown", "original_error": error_message, "suggestion": None } # 1. Check for "Column not found" # Example error: "Column 'block_time' cannot be resolved" or "Column 'block_time' not found" col_match = re.search(r"Column '(\w+)'", error_message, re.IGNORECASE) if col_match: bad_col = col_match.group(1) analysis["error_type"] = "ColumnNotFound" # Heuristic: Check for common renames if bad_col == "block_time": analysis["suggestion"] = "In many raw decoded tables, 'block_time' is named 'evt_block_time'. Try using 'evt_block_time'." elif bad_col == "address": analysis["suggestion"] = "Try 'contract_address' or 'wallet_address' depending on context." else: # Advanced: Search spellbook for table usage # Extract table name from SQL (very basic regex) table_match = re.search(r"FROM\s+([\w\.]+)", sql, re.IGNORECASE) if table_match: table_name = table_match.group(1) analysis["suggestion"] = f"Column '{bad_col}' not found in '{table_name}'. Try searching Spellbook for '{table_name}' to see valid columns." else: analysis["suggestion"] = f"Column '{bad_col}' appears incorrect. Check schema." # 2. Check for "Table not found" elif "Table" in error_message and ("not found" in error_message or "cannot be resolved" in error_message): analysis["error_type"] = "TableNotFound" # Extract likely table table_match = re.search(r"Table '([\w\.]+)'", error_message, re.IGNORECASE) if table_match: bad_table = table_match.group(1) # Suggest searching spellbook analysis["suggestion"] = f"Table '{bad_table}' does not exist. Use 'search_spellbook' to find the correct table name." return analysis

Implementation Reference

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nice-bills/dune-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server