# SQL Correctness

> SQL evaluation criteria for Databricks. Load when the trace contains execute_sql tool calls or SQL code in responses. Covers syntax validity, Unity Catalog patterns, and Databricks-specific SQL features.

- Skill: `databricks-solutions/sql-correctness` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add databricks-solutions/sql-correctness`
- Raw SKILL.md: https://api.skillmd.com/api/skills/databricks-solutions/sql-correctness/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: databricks-solutions (https://skillmd.com/u/databricks-solutions)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/databricks-solutions/sql-correctness

---


## SQL Correctness Rubric

When evaluating SQL in agent traces, check these dimensions:

### 1. Unity Catalog Namespace
- Must use 3-level namespace: `catalog.schema.table`
- Never use unqualified table names
- Catalog/schema should match the user's context (not hardcoded `main.default` unless appropriate)

### 2. Modern DDL Syntax
- Use `CREATE OR REPLACE` instead of `DROP IF EXISTS` + `CREATE`
- Use `ALTER TABLE ... SET TBLPROPERTIES` for table properties
- Use `COMMENT ON` for documentation

### 3. Tool Selection
- Must use `mcp__databricks__execute_sql` for SQL execution
- Must NOT use `Bash` with `databricks sql` CLI as a workaround
- Must NOT use notebook execution for simple queries

### 4. Databricks SQL Features
- Use Delta-specific syntax where appropriate (MERGE INTO, OPTIMIZE, VACUUM)
- Use `IDENTIFIER()` function for dynamic table references
- Use `SELECT * FROM read_files()` for file ingestion, not COPY INTO (unless streaming)

### 5. Syntax Validity
- SQL must be syntactically valid for Databricks SQL (Spark SQL dialect)
- String literals use single quotes, identifiers use backticks if needed
- Semicolons at statement boundaries

### 6. Safety
- No string interpolation for user-provided values in SQL
- Use parameterized queries where applicable
- No `DROP` operations unless explicitly requested

See [detailed patterns](references/DATABRICKS_SQL_PATTERNS.md) for specific syntax examples.

