@owlmeans/postgres-resource 0.1.18-rc.6 → 0.1.18-rc.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/utils/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKrD,OAAO,KAAK,EACE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAiC,SAAS,EACvF,MAAM,aAAa,CAAA;AAqDpB;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,SACpB,SAAS,YAAY,YAAY,CAAC,GAAG,CAAC,KAC3C,YAAY,EAwCb,CAAA;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,SACb,SAAS,QAAQ,SAAS,aAAY,OAAO,KAClD,OAuNF,CAAA"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/utils/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKrD,OAAO,KAAK,EACE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAiC,SAAS,EACvF,MAAM,aAAa,CAAA;AAqDpB;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,SACpB,SAAS,YAAY,YAAY,CAAC,GAAG,CAAC,KAC3C,YAAY,EAwCb,CAAA;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,SACb,SAAS,QAAQ,SAAS,aAAY,OAAO,KAClD,OAqPF,CAAA"}
@@ -168,7 +168,31 @@ export const planSync = (spec, live, additive = false) => {
168
168
  if (existing == null) {
169
169
  continue;
170
170
  }
171
+ /**
172
+ * A retype drops the column's default first.
173
+ *
174
+ * Postgres refuses `ALTER COLUMN … TYPE` outright when the column carries a DEFAULT it cannot
175
+ * cast to the new type — `42804 default for column "x" cannot be cast automatically` — and it
176
+ * refuses it before looking at a single row, so the `USING` clause never gets a chance to
177
+ * help. The whole plan runs in one transaction, so that refusal aborts the entire
178
+ * reconciliation: the table keeps its old shape and the resource fails every boot with an
179
+ * error about a column it is trying to fix. The standard remedy is to take the default out of
180
+ * the way, retype, and put it back — which is what the default-drift block below does, from
181
+ * the spec rather than from whatever the column happened to be carrying.
182
+ *
183
+ * The `id` column is the one that meets this in practice: it is created with a
184
+ * `gen_random_uuid()::text` default, so any change to its declared type hits this path.
185
+ */
186
+ let defaultDropped = false;
171
187
  if (!additive && existing.type !== column.sqlType) {
188
+ if (existing.defaultExpr != null) {
189
+ statements.push({
190
+ kind: 'set-default',
191
+ target: column.column,
192
+ sql: `ALTER TABLE ${spec.qualified} ALTER COLUMN ${quoteIdent(column.column)} DROP DEFAULT`
193
+ });
194
+ defaultDropped = true;
195
+ }
172
196
  const using = column.using ?? `${quoteIdent(column.column)}::${column.sqlType}`;
173
197
  statements.push({
174
198
  kind: 'alter-type',
@@ -178,7 +202,13 @@ export const planSync = (spec, live, additive = false) => {
178
202
  });
179
203
  }
180
204
  const expression = defaultExpression(column);
181
- if (normalizeDefault(expression) !== normalizeDefault(existing.defaultExpr)) {
205
+ // Once the retype has dropped it, the default has to be re-stated even when it matches what
206
+ // the column used to carry: the comparison is against the pre-plan introspection, which stops
207
+ // describing the column the moment the plan drops its default.
208
+ const defaultDrifted = defaultDropped
209
+ ? expression != null
210
+ : normalizeDefault(expression) !== normalizeDefault(existing.defaultExpr);
211
+ if (defaultDrifted) {
182
212
  statements.push(expression != null
183
213
  ? {
184
214
  kind: 'set-default',
@@ -1 +1 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/utils/diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/utils/diff.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owlmeans/postgres-resource",
3
- "version": "0.1.18-rc.6",
3
+ "version": "0.1.18-rc.7",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "scripts": {
package/src/utils/diff.ts CHANGED
@@ -194,7 +194,31 @@ export const planSync = (
194
194
  continue
195
195
  }
196
196
 
197
+ /**
198
+ * A retype drops the column's default first.
199
+ *
200
+ * Postgres refuses `ALTER COLUMN … TYPE` outright when the column carries a DEFAULT it cannot
201
+ * cast to the new type — `42804 default for column "x" cannot be cast automatically` — and it
202
+ * refuses it before looking at a single row, so the `USING` clause never gets a chance to
203
+ * help. The whole plan runs in one transaction, so that refusal aborts the entire
204
+ * reconciliation: the table keeps its old shape and the resource fails every boot with an
205
+ * error about a column it is trying to fix. The standard remedy is to take the default out of
206
+ * the way, retype, and put it back — which is what the default-drift block below does, from
207
+ * the spec rather than from whatever the column happened to be carrying.
208
+ *
209
+ * The `id` column is the one that meets this in practice: it is created with a
210
+ * `gen_random_uuid()::text` default, so any change to its declared type hits this path.
211
+ */
212
+ let defaultDropped = false
197
213
  if (!additive && existing.type !== column.sqlType) {
214
+ if (existing.defaultExpr != null) {
215
+ statements.push({
216
+ kind: 'set-default',
217
+ target: column.column,
218
+ sql: `ALTER TABLE ${spec.qualified} ALTER COLUMN ${quoteIdent(column.column)} DROP DEFAULT`
219
+ })
220
+ defaultDropped = true
221
+ }
198
222
  const using = column.using ?? `${quoteIdent(column.column)}::${column.sqlType}`
199
223
  statements.push({
200
224
  kind: 'alter-type',
@@ -205,7 +229,13 @@ export const planSync = (
205
229
  }
206
230
 
207
231
  const expression = defaultExpression(column)
208
- if (normalizeDefault(expression) !== normalizeDefault(existing.defaultExpr)) {
232
+ // Once the retype has dropped it, the default has to be re-stated even when it matches what
233
+ // the column used to carry: the comparison is against the pre-plan introspection, which stops
234
+ // describing the column the moment the plan drops its default.
235
+ const defaultDrifted = defaultDropped
236
+ ? expression != null
237
+ : normalizeDefault(expression) !== normalizeDefault(existing.defaultExpr)
238
+ if (defaultDrifted) {
209
239
  statements.push(expression != null
210
240
  ? {
211
241
  kind: 'set-default',
@@ -0,0 +1,60 @@
1
+ import { describe, expect, test } from 'bun:test'
2
+
3
+ import { planSync, schemaToTableSpec } from '@owlmeans/postgres-resource'
4
+ import type { LiveColumn, LiveTable, TableSpec } from '@owlmeans/postgres-resource'
5
+
6
+ const specOf = (idType: 'string' | 'integer'): TableSpec =>
7
+ schemaToTableSpec('tasks', {
8
+ type: 'object',
9
+ properties: {
10
+ id: idType === 'string' ? { type: 'string' } : { type: 'integer' },
11
+ title: { type: 'string' },
12
+ },
13
+ required: ['id'],
14
+ } as never, 'app', 'task_entry', true)
15
+
16
+ const columnOf = (over: Partial<LiveColumn> & { name: string, type: string }): LiveColumn => ({
17
+ notNull: true, defaultExpr: null, identity: '', generated: '', ordinal: 1, ...over,
18
+ })
19
+
20
+ const liveOf = (columns: LiveColumn[]): LiveTable =>
21
+ ({ exists: true, columns, indexes: [], constraints: [] })
22
+
23
+ const kinds = (spec: TableSpec, live: LiveTable): string[] =>
24
+ planSync(spec, live).statements
25
+ .filter(statement => statement.target === 'id')
26
+ .map(statement => `${statement.kind}:${statement.sql.includes('DROP DEFAULT') ? 'drop' : statement.sql.includes('SET DEFAULT') ? 'set' : ''}`)
27
+
28
+ describe('@owlmeans/postgres-resource — retyping a column that carries a default', () => {
29
+ test('drops the default before the type change and restores it after', () => {
30
+ // Postgres refuses `ALTER COLUMN … TYPE` while the column has a DEFAULT it cannot cast, and
31
+ // the whole plan is one transaction — so without the drop the entire reconciliation aborts and
32
+ // the resource fails every boot.
33
+ const live = liveOf([
34
+ columnOf({ name: 'id', type: 'integer', defaultExpr: `gen_random_uuid()::text` }),
35
+ columnOf({ name: 'title', type: 'text', notNull: false }),
36
+ ])
37
+
38
+ expect(kinds(specOf('string'), live)).toEqual(['set-default:drop', 'alter-type:', 'set-default:set'])
39
+ })
40
+
41
+ test('a retype of a column without a default emits no default statements', () => {
42
+ const live = liveOf([
43
+ columnOf({ name: 'id', type: 'integer', defaultExpr: null }),
44
+ columnOf({ name: 'title', type: 'text', notNull: false }),
45
+ ])
46
+
47
+ expect(kinds(specOf('string'), live)).toEqual(['alter-type:', 'set-default:set'])
48
+ })
49
+
50
+ test('a column already on the right type keeps its default untouched', () => {
51
+ const spec = specOf('string')
52
+ const desired = spec.columns.find(column => column.column === 'id')!
53
+ const live = liveOf([
54
+ columnOf({ name: 'id', type: desired.sqlType, defaultExpr: desired.defaultRaw ?? null }),
55
+ columnOf({ name: 'title', type: 'text', notNull: false }),
56
+ ])
57
+
58
+ expect(kinds(spec, live)).toEqual([])
59
+ })
60
+ })