feat: ADR-0035 4f — ALTER TABLE … ALTER COLUMN TYPE
Fourth AlterTableAction (AlterColumnType), runtime-decomposed to the existing change_column_type executor with ForceConversion — which IS the §7 advanced policy: lossy converts with a note (no force flag), incompatible + the ADR-0017 static refusals (↔blob, same-type, date↔datetime, non-int→serial) still refuse, while int→serial is allowed (auto-fills nulls + UNIQUE, ADR-0018 §8). No new mode/note/persistence; undo is the advanced safety net. Grammar adds a fourth action branch leading on `alter`, discriminated in the builder by the `type` keyword (unique — ADD COLUMN's type is an ident); the type slot reuses SQL_TYPE. The internal-__rdbms_* guard was folded into do_change_column_type (user-confirmed), closing the simple `change column` exposure. Tests: 7 Tier-3 e2e via run_replay + 4 Tier-1 parse (incl. a column-named- `type` discriminator probe) + the simple-surface guard. Help/usage refreshed; ADR-0035 §13 4f + README + requirements.md in lockstep.
This commit is contained in:
@@ -273,7 +273,8 @@ help:
|
||||
sql_alter_table: |-
|
||||
alter table <T> add column <col> <type> [not null] [unique] [default …] [check …]
|
||||
alter table <T> drop column <col>
|
||||
alter table <T> rename column <old> to <new> — change a table's columns (advanced SQL)
|
||||
alter table <T> rename column <old> to <new>
|
||||
alter table <T> alter column <col> type <type> — change a table's columns (advanced SQL)
|
||||
drop: |-
|
||||
drop table <T> — remove a table
|
||||
drop column [from] [table] <T>: <col> [--cascade] — remove a column
|
||||
@@ -473,6 +474,7 @@ parse:
|
||||
alter table <Table> add column <Name> <Type> [not null] [unique] [default <expr>] [check (<expr>)]
|
||||
alter table <Table> drop column <Name>
|
||||
alter table <Table> rename column <Old> to <New>
|
||||
alter table <Table> alter column <Name> type <Type>
|
||||
drop_table: "drop table <Name>"
|
||||
drop_column: "drop column [from] [table] <Table>: <Name>"
|
||||
drop_relationship: |-
|
||||
@@ -871,8 +873,10 @@ ok:
|
||||
client_side:
|
||||
# Per-cell transformation notice when `change column ...` rewrote
|
||||
# at least one stored value (storage-class change or non-identity
|
||||
# mapping). `lossy` variant fires under --force-conversion when
|
||||
# information was discarded.
|
||||
# mapping). `lossy` variant fires when information was discarded —
|
||||
# under simple-mode `--force-conversion`, and under advanced-mode
|
||||
# `alter table … alter column … type …`, which always converts
|
||||
# (ADR-0035 §7).
|
||||
transformed: |-
|
||||
[client-side] {count} row(s) were transformed before being stored. In raw SQL this would need an explicit `CAST` or application-level code.
|
||||
transformed_lossy: |-
|
||||
|
||||
Reference in New Issue
Block a user