Carbon SQL · la matriz de VERBOS — dos planos
⚙️ ESTE DOCUMENTO SE GENERA
Salida de
scripts/duckdb/m6-verb-matrix.ts. Medido: 2026-08-01.Se miden dos planos, y la diferencia entre ellos es el punto: un verbo que el
motor ejecuta pero que la puerta rechaza no existe para el usuario.
| Verbo | El MOTOR lo ejecuta | La PUERTA | Qué significa |
|---|---|---|---|
DELETE | ✅ | PASA | ejecutado (no-op) |
MERGE | ✅ | PASA | ejecutado (no-op) |
INSERT | ✅ | verb-not-allowed | El SQL Editor no admite "INSERT" sobre una tabla del Warehouse. Admitidos: DELETE · MERGE · UPDATE. Su fuente |
UPDATE | ✅ | error-motor | Update on a sorted iceberg table is not supported yet. To bypass this guard and write without applying the tab |
ALTER ADD COLUMN | ✅ | — | DDL de tabla: la superficie no lo enruta (no es DML ni gramática de catálogo) |
ALTER RENAME | ✅ | — | lo contesta la GRAMÁTICA DE CATÁLOGO (M3), no el motor: renombra el objeto de Index |
CTAS | ✅ | unresolved-table | El destino de escritura "__m6_nueva" no existe en tu Warehouse. |
Cómo se leen los rechazos de la puerta
| Gate | Qué eje es |
|---|---|
verb-not-allowed | la lista DML_VERBS_PERMITIDOS — el contrato del Warehouse |
write-not-enabled | el canary por dataset (sql-editor.dml), que es otro eje: no dice nada del verbo |
unresolved-table | el destino declarado no existe — es la forma de la puerta, no una prohibición |
PASA | llegó al motor con destino autorizado |
Las sondas de la puerta son no-ops por construcción (WHERE 1 = 0): esta matriz no
toca un solo dato. (Sí dejan rastro en el ledger: un DELETE/MERGE que pasa abre y
cierra su transacción aunque no cambie una fila.)
Lo que enseña medir DOS planos
El verbo no es el eje. Lo que decide es la tabla y la forma de la sentencia:
UPDATEfunciona sobre una tabla creada limpia, y sobre las NUESTRAS el motor contesta «Update on a sorted iceberg table is not supported yet»: el guard del SortOrder sobre__row_indexsigue vivo en el corpus existente. Se admite igualmente —bloquearlo castigaría a las tablas nuevas por el pasado de las viejas— y el error del motor es cierto y accionable. ⇒ es el beneficio que le faltaba a M7 (jubilar la identidad sintética), que hasta hoy era el único milestone sin uno probado.INSERTno entra, y no por el verbo: su fuente (SELECT … FROM …) no se resuelve, porque el camino de escritura cualifica el DESTINO pero no lo que LEE. El motor recibiría un nombre lógico. Entra cuando la escritura tenga resolución de nombres.CTASno entra porque nacer es un acto del catálogo (coordenada, tier, gobernanza), y sobre algo que ya existe sería un replace destructivo.
Ninguna de estas tres exclusiones dice ya «pendiente de re-medir». Cada una tiene su motivo, y el motivo está medido.