Skip to content

Statement Support

tonic matches statements to action classes before execution. Unsupported actions are rejected before a session opens.

ActionPostgresSnowflakeSQLiteMySQL
selectyesyesyesyes
insertyesyesyesyes
updateyesyesyesyes
deleteyesyesyesyes
mergeyesyesnono
replacenonoyesyes
showyesyesnoyes
describenoyesnoyes
explainyesyesyesyes
valuesyesyesyesyes
callyesyesnoyes
transactionyesyesyesyes

Backend support means tonic authorizes and forwards that class of statement. The database can still return native syntax or version errors for unsupported server details.

RETURNING does not turn a write into select.

insert into users (email) values ('a@example.com') returning id;

This is kind=query and action=insert.

WITH is inspected for nested data-modifying statements.

with deleted as (delete from jobs where done returning id)
select count(*) from deleted;

This requires both delete and select.

EXPLAIN requires the explain action plus the inner statement action when recognized.

These map to action=transaction:

  • begin
  • start transaction
  • commit
  • rollback
  • rollback to ...
  • savepoint ...
  • release savepoint ...