Cataloguing SQL Support in DoltgreSQL

REFERENCEDOLTGRES
3 min read

Dolt is version controlled relational database combining features from Git and MySQL. Not a fan of MySQL? No problem. We are now developing DoltgreSQL, Doltgres for short, which has features of PostgreSQL instead of MySQL. In this blog post, we want to share an update on where we are at right now in terms of syntax support for DoltgreSQL. We made tracking tables that contain cataloged SQL commands. One of the most used pieces of Dolt’s documentation from the beginning was the SQL Support pages. This blog is our first attempt to recreate those pages but for Doltgres. Be warned, there are a lot of red X’s. Doltgres is new. We look forward to turning these all into green checkmarks for you.

This page will be repurposed into a living document on the Doltgres documentation site, which is also coming soon. These tables show:

  • βœ… Full support for the SQL command.
  • 🟠 Partial support for the SQL command.
  • ❌ No support for the SQL command.

Access management statements#

SQL CommandsParsesWorks
ALTER DEFAULT PRIVILEGESβœ…βŒ
ALTER GROUP❌❌
ALTER ROLE❌❌
ALTER USER❌❌
ALTER USER MAPPING❌❌
CREATE GROUP🟠❌
CREATE ROLE🟠❌
CREATE USER🟠❌
CREATE USER MAPPING❌❌
DROP GROUPβœ…βŒ
DROP ROLEβœ…βŒ
DROP USERβœ…βŒ
DROP USER MAPPING❌❌
GRANTβœ…βŒ
REASSIGN OWNED❌❌
REVOKEβœ…βŒ

Data definition statements#

SQL CommandsParsesWorks
ALTER AGGREGATEβœ…βŒ
ALTER COLLATIONβœ…βŒ
ALTER CONVERSIONβœ…βŒ
ALTER DATABASEβœ…βŒ
ALTER DOMAINβœ…βŒ
ALTER EVENT TRIGGER❌❌
ALTER EXTENSION❌❌
ALTER FOREIGN DATA WRAPPER❌❌
ALTER FOREIGN TABLE❌❌
ALTER FUNCTIONβœ…βŒ
ALTER INDEXβœ…βŒ
ALTER LANGUAGEβœ…βŒ
ALTER LARGE OBJECT❌❌
ALTER MATERIALIZED VIEWβœ…βŒ
ALTER OPERATOR❌❌
ALTER OPERATOR CLASS❌❌
ALTER OPERATOR FAMILY❌❌
ALTER POLICY❌❌
ALTER PROCEDUREβœ…βŒ
ALTER PUBLICATION❌❌
ALTER ROUTINE❌❌
ALTER RULE❌❌
ALTER SCHEMAβœ…βŒ
ALTER SEQUENCEβœ…βŒ
ALTER SERVER❌❌
ALTER STATISTICS❌❌
ALTER SUBSCRIPTION❌❌
ALTER SYSTEM❌❌
ALTER TABLEβœ…βŒ
ALTER TABLESPACE❌❌
ALTER TEXT SEARCH CONFIGURATION❌❌
ALTER TEXT SEARCH DICTIONARY❌❌
ALTER TEXT SEARCH PARSER❌❌
ALTER TEXT SEARCH TEMPLATE❌❌
ALTER TRIGGERβœ…βŒ
ALTER TYPEβœ…βŒ
ALTER VIEWβœ…βŒ
COMMENTβœ…βŒ
CREATE ACCESS METHOD❌❌
CREATE AGGREGATEβœ…βŒ
CREATE CAST❌❌
CREATE COLLATION❌❌
CREATE CONVERSION❌❌
CREATE DATABASEβœ…πŸŸ 
CREATE DOMAINβœ…βŒ
CREATE EVENT TRIGGER❌❌
CREATE EXTENSIONβœ…βŒ
CREATE FOREIGN DATA WRAPPER❌❌
CREATE FOREIGN TABLE❌❌
CREATE FUNCTIONβœ…βŒ
CREATE INDEXβœ…βŒ
CREATE LANGUAGEβœ…βŒ
CREATE MATERIALIZED VIEWβœ…βŒ
CREATE OPERATOR❌❌
CREATE OPERATOR CLASS❌❌
CREATE OPERATOR FAMILY❌❌
CREATE POLICY❌❌
CREATE PROCEDUREβœ…βŒ
CREATE PUBLICATION❌❌
CREATE RULE❌❌
CREATE SCHEMAβœ…βŒ
CREATE SEQUENCEβœ…βŒ
CREATE SERVER❌❌
CREATE STATISTICS❌❌
CREATE SUBSCRIPTION❌❌
CREATE TABLEβœ…πŸŸ 
CREATE TABLESPACE❌❌
CREATE TEXT SEARCH CONFIGURATION❌❌
CREATE TEXT SEARCH DICTIONARY❌❌
CREATE TEXT SEARCH PARSER❌❌
CREATE TEXT SEARCH TEMPLATE❌❌
CREATE TRANSFORM❌❌
CREATE TRIGGERβœ…βŒ
CREATE TYPEβœ…βŒ
CREATE VIEWβœ…βŒ
DROP ACCESS METHOD❌❌
DROP AGGREGATEβœ…βŒ
DROP CAST❌❌
DROP COLLATION❌❌
DROP CONVERSION❌❌
DROP DATABASEβœ…πŸŸ 
DROP DOMAINβœ…βŒ
DROP EVENT TRIGGER❌❌
DROP EXTENSIONβœ…βŒ
DROP FOREIGN DATA WRAPPER❌❌
DROP FOREIGN TABLE❌❌
DROP FUNCTIONβœ…βŒ
DROP INDEXβœ…πŸŸ 
DROP LANGUAGEβœ…βŒ
DROP MATERIALIZED VIEWβœ…πŸŸ 
DROP OPERATOR❌❌
DROP OPERATOR CLASS❌❌
DROP OPERATOR FAMILY❌❌
DROP OWNED❌❌
DROP POLICY❌❌
DROP PROCEDUREβœ…βŒ
DROP PUBLICATION❌❌
DROP ROUTINE❌❌
DROP RULE❌❌
DROP SCHEMAβœ…βŒ
DROP SEQUENCEβœ…βŒ
DROP SERVER❌❌
DROP STATISTICS❌❌
DROP SUBSCRIPTION❌❌
DROP TABLEβœ…πŸŸ 
DROP TABLESPACE❌❌
DROP TEXT SEARCH CONFIGURATION❌❌
DROP TEXT SEARCH DICTIONARY❌❌
DROP TEXT SEARCH PARSER❌❌
DROP TEXT SEARCH TEMPLATE❌❌
DROP TRANSFORM❌❌
DROP TRIGGERβœ…πŸŸ 
DROP TYPEβœ…βŒ
DROP VIEWβœ…πŸŸ 
SECURITY LABEL❌❌

Data manipulation statements#

SQL CommandsParsesWorks
CALLβœ…βœ…
CLOSE❌❌
CREATE TABLE ASβœ…βŒ
CLUSTER❌❌
COPY❌❌
DECLARE❌❌
DELETE🟠🟠
DO❌❌
FETCH❌❌
IMPORT FOREIGN SCHEMA❌❌
INSERT🟠🟠
LOAD❌❌
MERGE❌❌
MOVE❌❌
REFRESH MATERIALIZED VIEWβœ…βŒ
REINDEX❌❌
SELECT🟠🟠
SELECT INTO❌❌
TRUNCATE🟠🟠
UPDATE🟠🟠
VACUUM❌❌
VALUES🟠🟠

Prepared statements#

SQL CommandsParsesWorks
DEALLOCATEβœ…βŒ
PREPAREβœ…βŒ
EXECUTEβœ…βŒ

Session management statements#

SQL CommandsParsesWorks
DISCARD🟠❌
RESETβœ…βŒ
SETβœ…πŸŸ 
SET CONSTRAINTSβœ…βŒ
SET ROLEβœ…βŒ
SET SESSION AUTHORIZATIONβœ…βŒ
SET TRANSACTION🟠❌
SHOWβœ…πŸŸ 

Transactional statements#

SQL CommandsParsesWorks
ABORTβœ…βœ…
BEGIN🟠🟠
CHECKPOINT❌❌
COMMITβœ…βœ…
COMMIT PREPARED❌❌
ENDβœ…βœ…
LISTEN❌❌
LOCK❌❌
NOTIFY❌❌
PREPARE TRANSACTION❌❌
RELEASE SAVEPOINTβœ…βœ…
ROLLBACKβœ…βœ…
ROLLBACK PREPARED❌❌
ROLLBACK TO SAVEPOINTβœ…βœ…
SAVEPOINTβœ…βœ…
START TRANSACTION🟠🟠
UNLISTEN❌❌

Utility statements#

SQL CommandsParsesWorks
ANALYZE❌❌
EXPLAIN❌❌

Conclusion#

Wow, there are so many red X’s πŸ˜±β€¦ But it’s okay. DoltgreSQL is like a baby πŸ‘Ά growing up day by day, just like how Dolt started. These red X’s will turn into green checkmarks as it grows.

It has been fun working on syntax support for DoltgreSQL. Next on our list is to start on getting parsed nodes to actually work. If you need a specific command to work, let us know on Discord or file an issue on GitHub. We will get it working for you as soon as possible. You can also contribute to DoltgreSQL using this guide.

JOIN THE DATA EVOLUTION

Get started with Dolt

Or join our mailing list to get product updates.