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:
| RPC | Typed spec | SQL equivalent | Page |
|---|---|---|---|
CreateTable | TableSpec | CREATE TABLE … / CREATE TABLE … AS SELECT | Create |
AlterTable | AlterSpec (ADD COLUMN only) | ALTER TABLE … — the full set | Schema |
DropTable | DropSpec | DROP TABLE [IF EXISTS] … | Lifecycle |
ListTables,GetTable,DescribeTableandListPartitionsdo not exist. Enumeration and introspection are SQL —SHOW TABLES,DESCRIBE "<table>"— sent throughExecute. That is exactly whatdodil data table listanddodil data table describedo (cli-shell/cli-k3/cmd/table.go:76-120). Per-database size, residency and WAL numbers come fromGetDatabaseStats, 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
- Create —
CreateTable(typed spec orCREATE TABLESQL), andCreateTablePipelineon the control plane, where a Scriptum template owns the schema and materializes it lazily on first ingest. - Lifecycle —
SHOW TABLES,DESCRIBE,DropTable/DROP TABLE, andTRUNCATE TABLE. Dropping a pipeline-backed table does not cascade to its pipeline or ingest rule. - Schema —
AlterTable:ADD COLUMN, logicalDROP COLUMN, widening-onlyALTER COLUMN … SET DATA TYPE, no-op constraint DDL — with the honest refusal list.
See also
- Data —
Query/GetRow/Upsert/Deleteand the DML statements - Execute — full DuckDB SQL surface
- Maintenance —
OptimizeTable·VacuumTable·Compact - Core Concepts → Table — type signature + both creation modes
- CLI Guide —
dodil data table create / list / describe / delete