Skip to Content
We are live but in Staging 🎉

Tables — API Reference

Package: dodil.tables.v1 · Service: Tables

Tables are Delta Lake tables inside a database (db_id), served by the tables data plane. See Core Concepts → Table.

Only three table-lifecycle RPCs exist, and each takes either a typed spec or a raw SQL string in the same oneof:

RPCTyped specSQL equivalentPage
CreateTableTableSpecCREATE TABLE … / CREATE TABLE … AS SELECTCreate
AlterTableAlterSpec (ADD COLUMN only)ALTER TABLE … — the full setSchema
DropTableDropSpecDROP TABLE [IF EXISTS] …Lifecycle

ListTables, GetTable, DescribeTable and ListPartitions do not exist. Enumeration and introspection are SQL — SHOW TABLES, DESCRIBE "<table>" — sent through Execute. That is exactly what dodil data table list and dodil data table describe do (cli-shell/cli-k3/cmd/table.go:76-120). Per-database size, residency and WAL numbers come from GetDatabaseStats, not from a per-table describe RPC.

There is no /:bucket/tables/* HTTP route on the control plane. SQL over HTTP is POST https://table.uk-lon-1.dodil.io/v1/databases/{db}/sql/execute.

Sub-pages

  • CreateCreateTable (typed spec or CREATE TABLE SQL), and CreateTablePipeline on the control plane, where a Scriptum template owns the schema and materializes it lazily on first ingest.
  • LifecycleSHOW TABLES, DESCRIBE, DropTable / DROP TABLE, and TRUNCATE TABLE. Dropping a pipeline-backed table does not cascade to its pipeline or ingest rule.
  • SchemaAlterTable: ADD COLUMN, logical DROP COLUMN, widening-only ALTER COLUMN … SET DATA TYPE, no-op constraint DDL — with the honest refusal list.

See also

  • DataQuery / GetRow / Upsert / Delete and the DML statements
  • Execute — full DuckDB SQL surface
  • MaintenanceOptimizeTable · VacuumTable · Compact
  • Core Concepts → Table — type signature + both creation modes
  • CLI Guidedodil data table create / list / describe / delete