You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* docs: add canonical PostgreSQL compatibility matrix
Add docs/postgres-compatibility.md: a single, feature-by-feature record of
which PostgreSQL functionality Duckgres supports and which tests prove it,
with specific test citations (file.go::TestName) per row.
Consolidates coverage info previously smeared across README.md,
tests/integration/README.md, and TODO.md. Each row carries a status
(Covered / Partial / Implemented-untested / Unsupported / Out-of-scope) and
links to the differential, unit, or client-compat test that exercises it.
Surfaces the real gaps, notably: cursors (DECLARE/FETCH/MOVE) are implemented
in server/conn_cursor.go but have no happy-path test, and the differential
RETURNING / COPY TO STDOUT skips are stale.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* docs: consolidate README compatibility tables into the canonical matrix
Shrink README's "SQL Client Compatibility" section to a short summary plus a
link to docs/postgres-compatibility.md, and relocate the detailed
pg_catalog / information_schema / functions / startup-parameter reference
tables into that doc as Appendix A so there is one source of truth.
Fix verified-stale entries during the move:
- current_schema(), pg_settings, pg_proc were labelled "Missing" though they
work via DuckDB's native pg_catalog (no Duckgres wrapper) -> "Native (DuckDB)"
- pg_roles is a minimal one-row view, not an empty stub
- clarify pg_stat_activity (static view empty; live data injected at query time)
The advertised server_version (15.0) is left as-is: it matches the code
(server/catalog.go, server/conn.go) and is an intentional emulation choice.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+3-95Lines changed: 3 additions & 95 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -761,101 +761,9 @@ Since DuckDB's isolation is strictly stronger than PostgreSQL's default, applica
761
761
762
762
## SQL Client Compatibility
763
763
764
-
Duckgres implements a subset of PostgreSQL's system catalog to satisfy introspection queries from common SQL clients, ORMs, and BI tools. The tables below document current coverage.
| `txid_current()` | Implemented | Epoch-based pseudo ID |
844
-
| `current_schema()` | Missing | |
845
-
| `current_schemas(bool)` | Missing | |
846
-
847
-
### Startup Parameters
848
-
849
-
| Parameter | Value |
850
-
|-----------|-------|
851
-
| `server_version` | `15.0 (Duckgres)` |
852
-
| `server_encoding` | `UTF8` |
853
-
| `client_encoding` | `UTF8` |
854
-
| `DateStyle` | `ISO, MDY` |
855
-
| `TimeZone` | `UTC` |
856
-
| `integer_datetimes` | `on` |
857
-
| `standard_conforming_strings` | `on` |
858
-
| `IntervalStyle` | Missing |
764
+
Duckgres implements a subset of PostgreSQL's system catalog to satisfy introspection queries from common SQL clients, ORMs, and BI tools — enough for psql, pgAdmin, DBeaver, Metabase, Grafana, Superset, Tableau, Fivetran, Airbyte, dbt, and the standard drivers (psycopg, pgx, JDBC, node-postgres, tokio-postgres, SQLAlchemy) to connect and introspect.
765
+
766
+
The full, authoritative breakdown — every PostgreSQL feature with its support status and the specific test that proves it, plus the per-object `pg_catalog`/`information_schema`/function/startup-parameter reference — lives in **[docs/postgres-compatibility.md](docs/postgres-compatibility.md)**. That document is the single source of truth; update it in the same PR as any PostgreSQL-visible behavior change.
0 commit comments