Databases
✓ functionalSee which engines SQLly can connect to today and how it keeps their differences from getting in your way.
SQLly understands 30 database engines. Twenty connect today through native Rust drivers, grouped around the four wire protocols those engines actually speak. The remaining ten are fully profiled: SQLly knows their capabilities, quoting, row limits, and type storage, with live connectors still to come.
Connect today - native drivers
Wire-compatible engines share a driver: PostgreSQL-protocol engines use the PostgreSQL connector, and the MySQL family shares MySQL's. Compatibility stays explicit, so a hosted or distributed engine says which first-party wire it uses.
TDS - SQL Server family
| Engine | SQL dialect | Notes |
|---|---|---|
| Microsoft SQL Server | T-SQL | First-party. Default schema dbo, [bracket] quoting, SELECT TOP n. |
| Azure SQL Database | T-SQL | Managed SQL Server; Entra ID sign-in and Azure discovery supported. |
PostgreSQL wire
| Engine | Compatible with | Notes |
|---|---|---|
| PostgreSQL | - | First-party. Default schema public, "double-quote" quoting, LIMIT, ILIKE, RETURNING, ON CONFLICT upsert. |
| CockroachDB | PostgreSQL | Distributed SQL over the pg wire. |
| YugabyteDB | PostgreSQL | Distributed SQL over the pg wire. |
| Amazon Aurora PostgreSQL | PostgreSQL | AWS-managed pg-compatible edition. |
| Amazon RDS for PostgreSQL | PostgreSQL | AWS-managed PostgreSQL. |
| Azure Database for PostgreSQL | PostgreSQL | Flexible server. TLS required. |
| Google Cloud SQL for PostgreSQL | PostgreSQL | GCP-managed PostgreSQL. |
| Neon | PostgreSQL | Serverless PostgreSQL. TLS required. |
| Supabase | PostgreSQL | Supabase-hosted PostgreSQL. |
MySQL wire
| Engine | Compatible with | Notes |
|---|---|---|
| MySQL | - | First-party. `backtick` quoting, LIMIT, ON DUPLICATE KEY upsert. |
| MariaDB | MySQL | Adds sequences and RETURNING. |
| Amazon Aurora MySQL | MySQL | AWS-managed MySQL-compatible edition. |
| Amazon RDS for MySQL | MySQL | AWS-managed MySQL. |
| Azure Database for MySQL | MySQL | Flexible server. TLS required. |
| Google Cloud SQL for MySQL | MySQL | GCP-managed MySQL. |
| PlanetScale | MySQL | Vitess-based. TLS required. |
| TiDB | MySQL | Distributed SQL; no stored procedures. |
In-process file
| Engine | SQL dialect | Notes |
|---|---|---|
| SQLite | SQLite | File or in-memory database, opened directly. Dates and UUIDs are text-encoded; no stored procedures. |
Modeled - drivers on the way
These engines are fully described in the capability model, so SQLly can generate their SQL, quoting, and type mappings. They do not yet have native connectors, which means a live connection from the app is not available today.
| Engine | Connects via | SQL dialect |
|---|---|---|
| Oracle Database | Oracle Net | Oracle (FETCH FIRST, MERGE) |
| IBM Db2 | DRDA | Oracle-family |
| IBM Informix | DRDA | Oracle-family (SELECT FIRST n) |
| Microsoft Access | ODBC / ACE | SQL Server-family (reduced surface) |
| Snowflake | HTTP API | PostgreSQL-family (QUALIFY, MERGE) |
| Databricks SQL | HTTP API | PostgreSQL-family (Spark SQL) |
| Google Cloud Spanner | HTTP API | PostgreSQL-family (GoogleSQL, INSERT OR UPDATE) |
| DuckDB | In-process file | PostgreSQL-family |
| Teradata | Proprietary | Oracle-family (SELECT TOP n, QUALIFY) |
| SAP HANA | Proprietary | Oracle-family |
One intent, per-engine SQL
Because engine rules live in the model, one UI action can render the right dialect wherever you run it. Row limiting is a familiar example: “view top 1000 rows” becomes:
| Pattern | Rendered SQL | Engines |
|---|---|---|
| TOP | SELECT TOP 1000 … | SQL Server, Azure SQL, Access, Teradata |
| LIMIT | … LIMIT 1000 | PostgreSQL & MySQL lineages, SQLite, DuckDB, Snowflake |
| FETCH FIRST | … FETCH FIRST 1000 ROWS ONLY | Oracle, Db2 |
| FIRST | SELECT FIRST 1000 … | Informix |
The same per-engine handling covers identifier quoting, string, boolean, and binary literals, upserts (ON CONFLICT, ON DUPLICATE KEY, or MERGE), and how all 15 logical types map to native storage.