feat(types)!: drop the blob column type (ADR-0005 Amendment 2)
blob was a dead-end: declarable but never fillable (no literal in either mode, seed-unsupported), so a blob column could only ever hold NULL. Remove Type::Blob + Value/CellValue::Blob + the base64 CSV path + the grammar slot + completion/render/type-change/seed handling + the binder refusal (whose message also carried a user-facing "DSL" copy-rule bug). The vocabulary is now nine types; base64 stays (clipboard OSC-52). Backward compat is the ADR-0015 migration framework's first real use: a v1->v2 format bump (CURRENT_SCHEMA_VERSION across serializer/parser/skeleton) with a migrator that rewrites `type: blob` -> `type: text`, and a forced .db rebuild from the migrated text when a blob column was actually converted (the stale .db keeps a STRICT BLOB engine column). Conversion to text is non-destructive and CSV-free. Covered by a full-stack integration test and a Tier-4 PTY test that opens a real legacy v1-blob project. Also sweeps the nine-type vocabulary through CLAUDE.md, requirements.md, the website (type reference, seed doc, highlight grammar), and the ADR-0030/0033/ 0035 cross-references; CHANGELOG Removed entry; handoff-79. BREAKING CHANGE: the `blob` column type is removed. Existing projects that declared a blob column are migrated on first open (the column becomes text; the original project.yaml is kept as a .v1.bak).
This commit is contained in:
@@ -425,7 +425,6 @@ pub const KEYS_AND_PLACEHOLDERS: &[(&str, &[&str])] = &[
|
||||
("hint.value_literal_slot", &[]),
|
||||
("hint.ambient_typing_name_then", &["next"]),
|
||||
// Per-column-type value-slot hints (ADR-0024 §Phase D).
|
||||
("hint.value_slot_blob", &[]),
|
||||
("hint.value_slot_bool", &[]),
|
||||
("hint.value_slot_date", &[]),
|
||||
("hint.value_slot_datetime", &[]),
|
||||
|
||||
@@ -395,7 +395,7 @@ help:
|
||||
without running it (advanced SQL)
|
||||
# Type reference, appended after the command list.
|
||||
types_reference: |
|
||||
Types: text, int, real, decimal, bool, date, datetime, blob, serial, shortid
|
||||
Types: text, int, real, decimal, bool, date, datetime, serial, shortid
|
||||
Auto-generated types (serial, shortid):
|
||||
serial — integer that auto-fills with the next sequence value
|
||||
(MAX(col)+1) on insert. Outside a primary key it carries
|
||||
@@ -714,7 +714,6 @@ hint:
|
||||
value_slot_text: "Type a quoted string (e.g. 'Alice') or null"
|
||||
value_slot_date: "Type a quoted date as 'YYYY-MM-DD' or null"
|
||||
value_slot_datetime: "Type a quoted datetime as 'YYYY-MM-DD HH:MM:SS' or null"
|
||||
value_slot_blob: "Type a quoted blob literal or null"
|
||||
# Serial / shortid in `values (…)` form: the user must enter
|
||||
# something at this position (no "skip column" syntax). `null`
|
||||
# is the auto-fill path (ADR-0018: serial / shortid columns
|
||||
|
||||
Reference in New Issue
Block a user