types + sql support
DoltGres speaks PostgreSQL. Most of the type system and DDL you already know works — but it is still Beta, so some types and statements are partial or missing. This page is the honest map of what lands today.
SERIAL / smallserial / bigserial yet — the first thing most Postgres users type. Use a sequence for auto-increment instead (see auto-increment without SERIAL below).fully supported types
These behave as you'd expect from stock Postgres.
| type | notes |
|---|---|
int2 / int4 / int8 | signed integers (smallint, integer, bigint) |
float4 / float8 | single- and double-precision floats |
text | variable-length string, no length cap |
varchar | variable-length string |
boolean | true / false |
uuid | 128-bit identifier |
interval | time span |
array variants | all array types (e.g. int4[], text[]) |
oid / regclass / regproc / regtype | object-identifier types |
partially supported types
These work, but with one important caveat: declared precision is parsed but NOT enforced. You can write numeric(10,2) or timestamp(3) and it will be accepted, but DoltGres does not currently round or constrain values to that precision. Treat the precision as documentation, not a guarantee.
| type | notes |
|---|---|
numeric / decimal | works, but the precision/scale you declare is parsed and ignored |
bytea | binary data |
char | fixed-length string |
json | stored, queryable |
jsonb | stored, queryable |
date / time / timestamp | temporal values |
timestamptz / timetz | timezone-aware temporal values |
not supported yet
These Postgres types are not implemented at Beta. The biggest surprise for most users is SERIAL — handled separately just below.
| type | notes |
|---|---|
SERIAL / smallserial / bigserial | auto-increment shorthand — use a sequence instead (below) |
range types | int4range, tsrange, etc. |
geometric | point, line, lseg, box, path, polygon, circle |
network | inet, cidr, macaddr |
tsvector / tsquery | full-text search types |
xml | XML document type |
money | currency type |
auto-increment without SERIAL
SERIALin Postgres is just shorthand for "create a sequence and default this column to its next value." DoltGres supports sequences and sequence functions, so you wire that up by hand:
CREATE SEQUENCE notes_id_seq;
CREATE TABLE notes (
id int8 NOT NULL DEFAULT nextval('notes_id_seq') PRIMARY KEY,
body text NOT NULL
);ALTER SEQUENCE is not yet supported. Create the sequence with the start value and increment you want up front, because you can't retune it afterwards.roles + grants
User and permission management is supported and — true to DoltGres — fully versioned alongside your data.
CREATE USER,CREATE ROLEGRANT <roles> TO <users> [WITH ADMIN OPTION]
CREATE ROLE editor;
CREATE USER alice;
GRANT editor TO alice WITH ADMIN OPTION;What's missingtoday: column-level privileges, granting on object types other than tables, and impersonation ("assume another user").
other confirmed support
Beyond the type system, these Postgres features are confirmed working at Beta:
ON CONFLICT(upserts)INSERT … RETURNING- user-defined domain types
pg_catalog(with some gaps)- native extensions, including PostGIS and
uuid-ossp(as of October 2025)