Dialect Support Matrix
SignalPilot supports 7 SQL dialects across three tiers.
Tier overview
| Tier | Connectors | Query | Schema | Cost estimate | EXPLAIN | FK discovery | Schema stats |
|---|---|---|---|---|---|---|---|
| 1 | PostgreSQL, DuckDB, Snowflake, BigQuery | Full | Full | Yes | Yes | Yes | Yes |
| 2 | MySQL, SQLite, SQL Server | Full | Full | Limited | Yes | Yes | Partial |
| 3 | Databricks | Full | Partial | No | Basic | Limited | No |
Per-dialect details
PostgreSQL (Tier 1)
- Full schema introspection via
information_schemaandpg_catalog - FK discovery via
pg_constraint EXPLAIN (ANALYZE, BUFFERS)for execution plans- No cost estimation (row-based billing, not byte-based)
- Dangerous functions blocked:
pg_read_file,pg_read_binary_file,pg_ls_dir,lo_import,lo_export,dblink - Plugin skill: use
sql-workflowfor query patterns
DuckDB (Tier 1)
- Full schema introspection via
information_schema - FK discovery supported
- EXPLAIN supported
- No cost estimation
- Dangerous functions blocked:
read_csv,read_parquet,read_json,httpfsextensions - Gotchas: integer division truncates,
INTERVALsyntax requires quotes,DATE_TRUNCreturns TIMESTAMP - Plugin skill:
duckdb-sql— covers all major DuckDB-specific patterns
Snowflake (Tier 1)
- Full schema introspection via
INFORMATION_SCHEMA - FK discovery via
SHOW PRIMARY KEYS/SHOW IMPORTED KEYS EXPLAINsupported (estimated cost, not actual)- Cost estimation: estimated credits based on bytes scanned
- No dangerous functions blocked (Snowflake's sandbox model handles this)
- LIMIT injection uses
LIMIT nsyntax - Plugin skill:
snowflake-sql— QUALIFY, LATERAL FLATTEN, VARIANT
BigQuery (Tier 1)
- Full schema introspection via
INFORMATION_SCHEMA - FK discovery limited (BigQuery doesn't enforce FKs at write time)
- Cost estimation: exact bytes billed via dry-run (
estimate_query_costis highly accurate) - EXPLAIN returns query plan with byte estimates per stage
- Table references require backtick quoting:
`project.dataset.table` - Plugin skill:
bigquery-sql— UNNEST, STRUCT, EXCEPT/REPLACE, partitioned tables
MySQL (Tier 2)
- Schema introspection via
information_schema - FK discovery via
KEY_COLUMN_USAGE - EXPLAIN supported
- No byte-based cost estimation
- Dangerous functions blocked:
LOAD_FILE,INTO OUTFILE,INTO DUMPFILE,LOAD DATA INFILE - No
FULL OUTER JOIN(useUNIONof LEFT and RIGHT) - Plugin skill: use
sql-workflowfor general patterns
SQLite (Tier 2)
- Schema introspection via
sqlite_master - FK discovery via
PRAGMA foreign_key_list - No cost estimation
- No
FULL OUTER JOIN - No
ILIKE(useLIKEwithLOWER()) - No
SPLIT_PARTorPOSITION(usesubstr/instr) - String concatenation:
||operator - Plugin skill:
sqlite-sql— covers all major SQLite-specific patterns
SQL Server / MSSQL (Tier 2)
- Schema introspection via
INFORMATION_SCHEMAandsyscatalog - FK discovery via
sys.foreign_keys - EXPLAIN via
SET STATISTICS IO ON - No byte-based cost estimation
- Dangerous functions blocked:
xp_cmdshell,xp_fileexist,xp_readfile,sp_OACreate,OPENROWSET,BULK INSERT - LIMIT injection uses
SELECT TOP n(notLIMIT n) - Plugin skill: use
sql-workflowfor general patterns
Databricks (Tier 3)
- Schema introspection via
information_schema - Limited FK discovery (Delta tables don't enforce FKs)
- Basic EXPLAIN support
- No cost estimation
- Plugin skill: use
sql-workflowfor general patterns
Dialect detection
SignalPilot detects the dialect from the connection's db_type field. You can check the detected dialect and feature tier with connector_capabilities.
Cross-dialect skill mapping
| Dialect | Recommended skill |
|---|---|
| DuckDB | duckdb-sql |
| Snowflake | snowflake-sql |
| BigQuery | bigquery-sql |
| SQLite | sqlite-sql |
| PostgreSQL, MySQL, SQL Server, Databricks | sql-workflow |