page.tsx139 lines · main
| 1 | import { DocsShell } from '../../../components/shell'; |
| 2 | |
| 3 | export const metadata = { |
| 4 | title: 'doltgres beta + limitations', |
| 5 | }; |
| 6 | |
| 7 | const NOT_YET: readonly [string, string][] = [ |
| 8 | ['Git-style CLI', 'version control is driven through the SQL interface only — no separate command-line tool yet'], |
| 9 | ['push to DoltHub / DoltLab', 'only custom remotes work today (filesystem and S3)'], |
| 10 | ['backup & replication', 'both are works in progress'], |
| 11 | ['GSSAPI auth', 'not supported'], |
| 12 | ['statement-level triggers', 'row-level triggers work; statement-level do not'], |
| 13 | ['stored procedures', 'partial — described as "almost done" as of October 2025, not yet complete'], |
| 14 | ['window functions', 'not supported yet (verified: row_number() OVER (...) errors on a live instance)'], |
| 15 | ['custom operators / indexing / aggregates', 'not supported at Beta'], |
| 16 | ['multi-table single-statement UPDATE', 'updating several tables in one UPDATE is not supported'], |
| 17 | ['ALTER SEQUENCE / COMMENT ON', 'these DDL statements are not yet supported'], |
| 18 | ['collations', 'currently ignored'], |
| 19 | ['some psql backslash commands', 'e.g. \\d <table> is not supported'], |
| 20 | ]; |
| 21 | |
| 22 | export default function LimitationsPage() { |
| 23 | return ( |
| 24 | <DocsShell> |
| 25 | <h1 className="font-mono text-2xl tracking-tight">beta + limitations</h1> |
| 26 | <p className="mt-2 font-mono text-sm text-[var(--color-text-muted)]"> |
| 27 | DoltGres is in Beta. This page is the calm, honest list of what to expect — so nothing |
| 28 | surprises you in production. The team ships fast, so treat this as a snapshot, not a |
| 29 | permanent ceiling. |
| 30 | </p> |
| 31 | |
| 32 | <Section title="where it is in its life"> |
| 33 | <ul className="mt-2 list-inside list-disc"> |
| 34 | <li> |
| 35 | Still <strong>pre-1.0 Beta</strong>; 1.0 is targeted for around{' '} |
| 36 | <strong>October 2026</strong>. |
| 37 | </li> |
| 38 | <li> |
| 39 | Roughly <strong>5.2× slower than stock Postgres</strong> overall today (about 6.3× on |
| 40 | reads, 3.6× on writes). DoltHub expects this gap to close well before 1.0. |
| 41 | </li> |
| 42 | <li> |
| 43 | About <strong>91% correctness</strong> on the sqllogictest suite. |
| 44 | </li> |
| 45 | <li> |
| 46 | The biggest open issue is <strong>general Postgres compatibility</strong>: there are |
| 47 | still many unresolved <code>.pgdump</code> import failures, so importing an existing |
| 48 | Postgres dump may not work cleanly yet. |
| 49 | </li> |
| 50 | </ul> |
| 51 | </Section> |
| 52 | |
| 53 | <Section title="not yet supported"> |
| 54 | <p> |
| 55 | The following are known gaps at Beta. (For the type system specifically — including the{' '} |
| 56 | <code>SERIAL</code> gap — see{' '} |
| 57 | <a className="underline" href="/doltgres/types"> |
| 58 | types + sql support |
| 59 | </a> |
| 60 | .) |
| 61 | </p> |
| 62 | <div className="mt-3 overflow-x-auto rounded-md border border-[var(--color-border-subtle)]"> |
| 63 | <table className="w-full border-collapse font-mono text-xs"> |
| 64 | <thead> |
| 65 | <tr className="border-b border-[var(--color-border-subtle)] bg-[var(--color-surface)] text-left"> |
| 66 | <th className="px-3 py-2 font-semibold text-[var(--color-text)]">area</th> |
| 67 | <th className="px-3 py-2 font-semibold text-[var(--color-text)]">status</th> |
| 68 | </tr> |
| 69 | </thead> |
| 70 | <tbody> |
| 71 | {NOT_YET.map(([area, status]) => ( |
| 72 | <tr |
| 73 | key={area} |
| 74 | className="border-b border-[var(--color-border-subtle)] last:border-0" |
| 75 | > |
| 76 | <td className="px-3 py-2 align-top text-[var(--color-text)]">{area}</td> |
| 77 | <td className="px-3 py-2 align-top text-[var(--color-text-muted)]">{status}</td> |
| 78 | </tr> |
| 79 | ))} |
| 80 | </tbody> |
| 81 | </table> |
| 82 | </div> |
| 83 | </Section> |
| 84 | |
| 85 | <Section title="verified working (live probe)"> |
| 86 | <p> |
| 87 | Confirmed against a live DoltGres instance (so you don't have to take an old changelog |
| 88 | on faith): |
| 89 | </p> |
| 90 | <ul className="mt-2 list-inside list-disc"> |
| 91 | <li> |
| 92 | <strong>Common table expressions</strong> (<code>WITH … SELECT</code>) work — including{' '} |
| 93 | <code>UNION ALL</code> inside the CTE. |
| 94 | </li> |
| 95 | <li> |
| 96 | <code>current_setting(...)</code> reads work; the default transaction isolation is{' '} |
| 97 | <strong>read committed</strong>. |
| 98 | </li> |
| 99 | <li> |
| 100 | The engine reports itself as <strong>PostgreSQL 15.5</strong> over the wire, and the{' '} |
| 101 | <code>dolt.</code> version-control system tables (e.g. <code>dolt.branches</code>) resolve. |
| 102 | </li> |
| 103 | </ul> |
| 104 | </Section> |
| 105 | |
| 106 | <Callout tone="info"> |
| 107 | <strong className="text-[var(--color-text)]">What Beta IS good for.</strong> You can build |
| 108 | and evaluate real solutions on DoltGres today — DoltHub explicitly frames Beta as "you |
| 109 | can begin building a production solution." The headline superpowers already work: branch, |
| 110 | merge, fork, clone, diff, and time-travel over your data, all versioned the way Git versions |
| 111 | code. If those are why you're here, they're here now. Just keep this page's |
| 112 | gaps in mind, pin to a known-good version, and expect the rough edges to keep getting smoother. |
| 113 | </Callout> |
| 114 | </DocsShell> |
| 115 | ); |
| 116 | } |
| 117 | |
| 118 | function Section({ title, children }: { title: string; children: React.ReactNode }) { |
| 119 | return ( |
| 120 | <section className="mt-10"> |
| 121 | <h2 className="font-mono text-lg">{title}</h2> |
| 122 | <div className="mt-3 space-y-2 font-mono text-sm text-[var(--color-text-muted)]"> |
| 123 | {children} |
| 124 | </div> |
| 125 | </section> |
| 126 | ); |
| 127 | } |
| 128 | |
| 129 | function Callout({ tone, children }: { tone: 'warn' | 'info'; children: React.ReactNode }) { |
| 130 | const color = tone === 'warn' ? 'var(--color-warning)' : 'var(--color-primary)'; |
| 131 | return ( |
| 132 | <div |
| 133 | className="mt-8 rounded-md border bg-[var(--color-surface)] p-4 font-mono text-sm text-[var(--color-text-muted)]" |
| 134 | style={{ borderColor: color }} |
| 135 | > |
| 136 | {children} |
| 137 | </div> |
| 138 | ); |
| 139 | } |