Skip to content

Commit 5f78374

Browse files
committed
docs(skills): document fork connection re-attach, active-db side effect, and fork-before-risky-changes workflow
1 parent df5f86e commit 5f78374

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

skills/hotdata/SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ hotdata databases tables delete <table> [--database <id_or_name>] [--schema publ
116116

117117
- `list` — all managed databases in the workspace. Active database is marked with `*` under the DEFAULT column; CREATED shows when each database was made.
118118
- `create` — creates a new managed database. `--name` is an optional human-readable display name. `--catalog` sets the SQL alias used in queries (`SELECT … FROM <catalog>.schema.table`); must be `[a-z_][a-z0-9_]*`. `--expires-at` accepts relative durations (`24h`, `7d`, `90m`) or an RFC 3339 timestamp; omitting means no expiry. Repeat `--table` to declare tables up front.
119-
- `fork` — creates a new managed database that is an independent deep copy of an existing one (same schemas, tables, and data); the source is left unchanged and the two diverge freely afterwards. The source defaults to the active database; pass `<id_or_name>` (id, catalog, or name) to fork another. `--name` defaults to `<source>-fork` (so the two stay distinguishable in `list`); `--expires-at` accepts a relative duration or RFC 3339 timestamp, and when omitted a still-future source expiry is carried over. The fork becomes the active database on success. The fork answers to the **same catalog alias** as its source inside its own scope; indexes are **not** carried over. Only databases created with the current (DuckLake) storage engine can be forked — older parquet-backed databases return an error.
120-
- `set` — saves `<id_or_name>` as the active database. Subsequent `databases tables` and `context` commands use it automatically.
119+
- `fork` — creates a new managed database that is an independent deep copy of an existing one (same schemas, tables, and data); the source is left unchanged and the two diverge freely afterwards. The source defaults to the active database; pass `<id_or_name>` (id, catalog, or name) to fork another. `--name` defaults to `<source>-fork` (so the two stay distinguishable in `list`); `--expires-at` accepts a relative duration or RFC 3339 timestamp, and when omitted a still-future source expiry is carried over. The fork becomes the active database on success. The fork answers to the **same catalog alias** as its source inside its own scope; connection catalogs attached to the source are **re-attached** to the fork, but indexes are **not** carried over. Only databases created with the current (DuckLake) storage engine can be forked — older parquet-backed databases return an error.
120+
- `set` — saves `<id_or_name>` as the active database. Subsequent `databases tables` and `context` commands use it automatically. Note that a successful `fork` also updates this: the fork becomes the active database.
121121
- `unset` — clears the active database from config.
122122
- `<id_or_name>` — inspect one database (id, catalog, name, expires_at).
123123
- `delete` — removes the managed database; clears the active-database config if it matched.

skills/hotdata/references/WORKFLOWS.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,18 @@ A `hotdata query` runs inside **one** managed database; its scope sees that data
132132

133133
For **Chain** materializations into managed databases, see **`hotdata-analytics`**.
134134

135+
### Workflow: fork before risky changes
136+
137+
Before destructive experimentation (bulk replaces, schema rework, testing a load pipeline), fork the database and experiment on the copy — the source stays untouched and the two diverge freely:
138+
139+
```bash
140+
hotdata databases set sales # source to protect
141+
hotdata databases fork --expires-at 24h # deep copy; becomes the active database
142+
hotdata databases load --catalog sales --table orders --file ./risky.parquet # hits the fork
143+
```
144+
145+
The fork answers to the same catalog alias as its source, so experimental SQL runs unchanged. Attached connections are re-attached to the fork; indexes are not carried over. When done, keep the fork (`databases set` back to the source) or `databases delete` it. Only DuckLake-backed databases can be forked — see `fork` in the main skill for details.
146+
135147
---
136148

137149
## Model

0 commit comments

Comments
 (0)