@prisma/orm-target-postgres 8.0.0-rc.16-dev.6 → 8.0.0-rc.16-dev.8

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.
Files changed (98) hide show
  1. package/dist/{adapter-RtS8vD8U-BnPjAiLV.mjs → adapter-RtS8vD8U-CkJSaICZ.mjs} +2 -2
  2. package/dist/{adapter-RtS8vD8U-BnPjAiLV.mjs.map → adapter-RtS8vD8U-CkJSaICZ.mjs.map} +1 -1
  3. package/dist/adapter.mjs +2 -2
  4. package/dist/adapter__adapter.mjs +2 -2
  5. package/dist/adapter__control.mjs +4 -4
  6. package/dist/adapter__runtime.mjs +3 -3
  7. package/dist/{authoring-B2hHIzvd-D5NgHs0e.mjs → authoring-_2G2lsLt-VmVbrMPn.mjs} +3 -3
  8. package/dist/{authoring-B2hHIzvd-D5NgHs0e.mjs.map → authoring-_2G2lsLt-VmVbrMPn.mjs.map} +1 -1
  9. package/dist/{contract-free-DaK6wmmo.mjs → contract-free-BMKFjlIG.mjs} +3 -3
  10. package/dist/{contract-free-DaK6wmmo.mjs.map → contract-free-BMKFjlIG.mjs.map} +1 -1
  11. package/dist/{control-Bpd77Aeq.mjs → control-M3kIGGHk.mjs} +9 -9
  12. package/dist/{control-Bpd77Aeq.mjs.map → control-M3kIGGHk.mjs.map} +1 -1
  13. package/dist/{control-adapter-Co30P4lH-e6oCFCC2.mjs → control-adapter-Co30P4lH-CpxXk5cz.mjs} +2 -2
  14. package/dist/{control-adapter-Co30P4lH-e6oCFCC2.mjs.map → control-adapter-Co30P4lH-CpxXk5cz.mjs.map} +1 -1
  15. package/dist/{control-policy-B7t5CB1S-CotIwNO4.mjs → control-policy-C0KC3-Gw-DseKgAtX.mjs} +54 -33
  16. package/dist/control-policy-C0KC3-Gw-DseKgAtX.mjs.map +1 -0
  17. package/dist/{ddl-C_vTj7b5-vyGLBKLo.mjs → ddl-D5hYRCTf-DRSajCVT.mjs} +3 -3
  18. package/dist/{ddl-C_vTj7b5-vyGLBKLo.mjs.map → ddl-D5hYRCTf-DRSajCVT.mjs.map} +1 -1
  19. package/dist/{descriptor-meta-ARufwwWW-C5hsT7UQ.mjs → descriptor-meta-ARufwwWW-ChZm5Hg5.mjs} +2 -2
  20. package/dist/{descriptor-meta-ARufwwWW-C5hsT7UQ.mjs.map → descriptor-meta-ARufwwWW-ChZm5Hg5.mjs.map} +1 -1
  21. package/dist/{descriptor-meta-C8lkQFHe-Cluy19Tk.mjs → descriptor-meta-WHc6Kv-m-BLzsaP0M.mjs} +4 -4
  22. package/dist/{descriptor-meta-C8lkQFHe-Cluy19Tk.mjs.map → descriptor-meta-WHc6Kv-m-BLzsaP0M.mjs.map} +1 -1
  23. package/dist/{diff-database-schema-KGNaKzKp-Bt2yYSIt.mjs → diff-database-schema-D9YbaVKX-DZ5wOErP.mjs} +5 -5
  24. package/dist/{diff-database-schema-KGNaKzKp-Bt2yYSIt.mjs.map → diff-database-schema-D9YbaVKX-DZ5wOErP.mjs.map} +1 -1
  25. package/dist/{infer-psl-contract-DoIdoifj-Co9thnGu.mjs → infer-psl-contract-D-3st5lU-DKQhhsut.mjs} +3 -3
  26. package/dist/{infer-psl-contract-DoIdoifj-Co9thnGu.mjs.map → infer-psl-contract-D-3st5lU-DKQhhsut.mjs.map} +1 -1
  27. package/dist/{issue-planner-pmBrIrEN.d.mts → issue-planner-BwcfQagl.d.mts} +2 -2
  28. package/dist/{issue-planner-pmBrIrEN.d.mts.map → issue-planner-BwcfQagl.d.mts.map} +1 -1
  29. package/dist/{migration-D189kh3f.d.mts → migration-D5f4UTR3.d.mts} +3 -3
  30. package/dist/{migration-D189kh3f.d.mts.map → migration-D5f4UTR3.d.mts.map} +1 -1
  31. package/dist/migration-PTHAY9Cv.mjs.map +1 -1
  32. package/dist/{op-factory-call-CqKUB1XP-CsEGx4Jd.d.mts → op-factory-call-BaT4DlIo-BnVxOrwv.d.mts} +51 -17
  33. package/dist/op-factory-call-BaT4DlIo-BnVxOrwv.d.mts.map +1 -0
  34. package/dist/{op-factory-call-BAgAln5R-BTkhp29z.mjs → op-factory-call-CXlapjuM-BHZNE4Ph.mjs} +133 -40
  35. package/dist/op-factory-call-CXlapjuM-BHZNE4Ph.mjs.map +1 -0
  36. package/dist/op-factory-call-CwFkWbuo.d.mts +1 -0
  37. package/dist/{planner-CvUO8Zpn.d.mts → planner-BkGEylgU.d.mts} +17 -8
  38. package/dist/planner-BkGEylgU.d.mts.map +1 -0
  39. package/dist/{planner-DSTSuAc8-BAfUo5KV.mjs → planner-DwfHmYme-P1dFkpQ4.mjs} +216 -26
  40. package/dist/planner-DwfHmYme-P1dFkpQ4.mjs.map +1 -0
  41. package/dist/{planner-produced-postgres-migration-DT3i_p3G-CyQUv3ac.d.mts → planner-produced-postgres-migration-BwZrjNPg-Ch67sFwK.d.mts} +3 -3
  42. package/dist/planner-produced-postgres-migration-BwZrjNPg-Ch67sFwK.d.mts.map +1 -0
  43. package/dist/{planner-produced-postgres-migration-D7-3OBb_-BGHFKj3i.mjs → planner-produced-postgres-migration-DBUj6Imx-DhpHjroB.mjs} +4 -4
  44. package/dist/{planner-produced-postgres-migration-D7-3OBb_-BGHFKj3i.mjs.map → planner-produced-postgres-migration-DBUj6Imx-DhpHjroB.mjs.map} +1 -1
  45. package/dist/planner-produced-postgres-migration-eDPWYNBo.d.mts +1 -0
  46. package/dist/{planner-sql-checks-rqOH8naU-B6xOE5lC.mjs → planner-sql-checks-DCGV2qdu-eaeFLtn8.mjs} +3 -3
  47. package/dist/{planner-sql-checks-rqOH8naU-B6xOE5lC.mjs.map → planner-sql-checks-DCGV2qdu-eaeFLtn8.mjs.map} +1 -1
  48. package/dist/{postgres-contract-view-C1bi3x4v-BAfk6euQ.mjs → postgres-contract-view-CL-YTH_3-Diah6i2a.mjs} +4 -4
  49. package/dist/{postgres-contract-view-C1bi3x4v-BAfk6euQ.mjs.map → postgres-contract-view-CL-YTH_3-Diah6i2a.mjs.map} +1 -1
  50. package/dist/{postgres-migration-e8UybR1y-C_m4i1jp.d.mts → postgres-migration-D2Xs7BfD-Df3OpTyw.d.mts} +37 -4
  51. package/dist/postgres-migration-D2Xs7BfD-Df3OpTyw.d.mts.map +1 -0
  52. package/dist/postgres-migration-DjCmSHjA-D8CPJqkC.mjs +1075 -0
  53. package/dist/postgres-migration-DjCmSHjA-D8CPJqkC.mjs.map +1 -0
  54. package/dist/{postgres-schema-AlEVkXXS-ZfXWYddl.mjs → postgres-schema-COkaqci7-C6JpiSha.mjs} +6 -6
  55. package/dist/postgres-schema-COkaqci7-C6JpiSha.mjs.map +1 -0
  56. package/dist/{prisma7-binding-B4BfqE0o.mjs → prisma7-binding-CAzQh1rQ.mjs} +5 -5
  57. package/dist/{prisma7-binding-B4BfqE0o.mjs.map → prisma7-binding-CAzQh1rQ.mjs.map} +1 -1
  58. package/dist/{render-ops-D2vJApKB-B281fzmn.mjs → render-ops-B5FbJGYf-CnmbaalQ.mjs} +16 -9
  59. package/dist/render-ops-B5FbJGYf-CnmbaalQ.mjs.map +1 -0
  60. package/dist/{resolve-ddl-schema-BthOWVjF-DuZ9iUh-.mjs → resolve-ddl-schema-DD69Bwve-e-BpAfFa.mjs} +3 -3
  61. package/dist/{resolve-ddl-schema-BthOWVjF-DuZ9iUh-.mjs.map → resolve-ddl-schema-DD69Bwve-e-BpAfFa.mjs.map} +1 -1
  62. package/dist/target.d.mts +9 -9
  63. package/dist/target.mjs +17 -17
  64. package/dist/target__contract-free.mjs +3 -3
  65. package/dist/target__control.mjs +3 -3
  66. package/dist/target__diff-database-schema.mjs +1 -1
  67. package/dist/target__issue-planner.d.mts +1 -1
  68. package/dist/target__issue-planner.mjs +1 -1
  69. package/dist/target__migration.d.mts +2 -2
  70. package/dist/target__migration.mjs +2 -2
  71. package/dist/target__op-factory-call.d.mts +3 -3
  72. package/dist/target__op-factory-call.mjs +2 -2
  73. package/dist/target__pack.mjs +1 -1
  74. package/dist/target__planner-produced-postgres-migration.d.mts +2 -2
  75. package/dist/target__planner-produced-postgres-migration.mjs +1 -1
  76. package/dist/target__planner-sql-checks.mjs +1 -1
  77. package/dist/target__planner.d.mts +1 -1
  78. package/dist/target__planner.mjs +2 -2
  79. package/dist/target__prisma7-binding.mjs +1 -1
  80. package/dist/target__render-ops.mjs +1 -1
  81. package/dist/target__runtime.mjs +2 -2
  82. package/dist/target__runtime.mjs.map +1 -1
  83. package/dist/target__schema-ir-annotations.mjs +1 -1
  84. package/dist/target__types.mjs +1 -1
  85. package/package.json +9 -9
  86. package/dist/control-policy-B7t5CB1S-CotIwNO4.mjs.map +0 -1
  87. package/dist/op-factory-call-BAgAln5R-BTkhp29z.mjs.map +0 -1
  88. package/dist/op-factory-call-CqKUB1XP-CsEGx4Jd.d.mts.map +0 -1
  89. package/dist/op-factory-call-D5UJ7cDi.d.mts +0 -1
  90. package/dist/planner-CvUO8Zpn.d.mts.map +0 -1
  91. package/dist/planner-DSTSuAc8-BAfUo5KV.mjs.map +0 -1
  92. package/dist/planner-produced-postgres-migration-BI_aepPp.d.mts +0 -1
  93. package/dist/planner-produced-postgres-migration-DT3i_p3G-CyQUv3ac.d.mts.map +0 -1
  94. package/dist/postgres-migration-CeX6vfEU-DsmCRCnD.mjs +0 -596
  95. package/dist/postgres-migration-CeX6vfEU-DsmCRCnD.mjs.map +0 -1
  96. package/dist/postgres-migration-e8UybR1y-C_m4i1jp.d.mts.map +0 -1
  97. package/dist/postgres-schema-AlEVkXXS-ZfXWYddl.mjs.map +0 -1
  98. package/dist/render-ops-D2vJApKB-B281fzmn.mjs.map +0 -1
@@ -1,10 +1,10 @@
1
1
  import { s as postgresError } from "./errors-DYyzTYzE-39CV_aMo.mjs";
2
2
  import { a as quoteQualifiedName, o as validateEnumValueLength, r as quoteIdentifier, t as escapeLiteral } from "./sql-utils-CVsvXiX4-C7xD0Bgv.mjs";
3
3
  import { t as DEFAULT_NAMESPACE_ID } from "./namespace-ids-xtp_ZY86-Cpp8PTxD.mjs";
4
- import { A as tableIsEmptyAst, C as nativeEnumTypeExistsAst, D as rlsPolicyExistsAst, E as rlsEnabledAst, O as sequenceNameAvailableAst, S as indexExistsAst, T as noNullValuesAst, _ as dropDefaultAction, a as columnDefaultAst, b as dropType, c as columnNullabilityAst, d as createIndex$1, f as createPolicy, g as disableRowLevelSecurity$1, h as createType, i as alterTable, k as tableExistsAst, l as columnTypeAst, m as createTable, n as alterIndexRename, o as columnDefaultSequenceAst, p as createSchema, r as alterPolicyRename, s as columnExistsAst, t as addColumnAction, u as constraintExistsAst, v as dropIndex$1, w as nativeEnumValueExistsAst, x as extensionExistsAst, y as dropPolicy } from "./ddl-C_vTj7b5-vyGLBKLo.mjs";
4
+ import { A as tableIsEmptyAst, C as nativeEnumTypeExistsAst, D as rlsPolicyExistsAst, E as rlsEnabledAst, O as sequenceNameAvailableAst, S as indexExistsAst, T as noNullValuesAst, _ as dropDefaultAction, a as columnDefaultAst, b as dropType, c as columnNullabilityAst, d as createIndex$1, f as createPolicy, g as disableRowLevelSecurity$1, h as createType, i as alterTable, k as tableExistsAst, l as columnTypeAst, m as createTable, n as alterIndexRename, o as columnDefaultSequenceAst, p as createSchema, r as alterPolicyRename, s as columnExistsAst, t as addColumnAction, u as constraintExistsAst, v as dropIndex$1, w as nativeEnumValueExistsAst, x as extensionExistsAst, y as dropPolicy } from "./ddl-D5hYRCTf-DRSajCVT.mjs";
5
5
  import { n as buildColumnTypeSql, t as autoincrementWidth } from "./planner-ddl-builders-Y0_96xpe-BzugdEDO.mjs";
6
6
  import { t as postgresObjectName } from "./postgres-object-name-FPikIvOw-BNs44hTu.mjs";
7
- import { n as qualifyTableName } from "./planner-sql-checks-rqOH8naU-B6xOE5lC.mjs";
7
+ import { n as qualifyTableName } from "./planner-sql-checks-DCGV2qdu-eaeFLtn8.mjs";
8
8
  import { DdlColumn, FunctionColumnDefault, LiteralColumnDefault, opaqueSql, renderOpaqueSql } from "@prisma/orm-family-sql/relational-core/ast";
9
9
  import { blindCast } from "@prisma/orm-framework/utils/casts";
10
10
  import { UNBOUND_NAMESPACE_ID } from "@prisma/orm-framework/components/ir";
@@ -12,10 +12,10 @@ import { namingOf } from "@prisma/orm-family-sql/schema-ir/naming";
12
12
  import { ifDefined } from "@prisma/orm-framework/utils/defined";
13
13
  import { col } from "@prisma/orm-family-sql/relational-core/contract-free";
14
14
  import { InternalError, assertNever } from "@prisma/orm-framework/utils/internal-error";
15
- import { errorUnfilledPlaceholder } from "@prisma/orm-framework/errors/migration";
15
+ import { unfilledPlaceholderOperation } from "@prisma/orm-framework/errors/migration";
16
16
  import { TsExpression, jsonToTsSource, tsObjectSource, tsQuotedTextSource } from "@prisma/orm-framework/ts-render";
17
17
  import { REFERENTIAL_ACTION_SQL } from "@prisma/orm-family-sql/contract/referential-action-sql";
18
- //#region ../../../3-targets/3-targets/postgres/dist/op-factory-call-BAgAln5R.mjs
18
+ //#region ../../../3-targets/3-targets/postgres/dist/op-factory-call-CXlapjuM.mjs
19
19
  /**
20
20
  * Maps a planner schema name to the contract-free DDL builder's optional
21
21
  * `schema` field: the unbound sentinel becomes `undefined` (the builder omits
@@ -72,6 +72,33 @@ async function dropColumn(schemaName, tableName, columnName, lowerer) {
72
72
  postcheck: [step(`verify column "${columnName}" does not exist`, absent.sql, absent.params)]
73
73
  };
74
74
  }
75
+ function renameColumnStatement(schemaName, tableName, fromName, toName) {
76
+ return `ALTER TABLE ${qualifyTableName(schemaName, tableName)} RENAME COLUMN ${quoteIdentifier(fromName)} TO ${quoteIdentifier(toName)}`;
77
+ }
78
+ function renameColumnOperationId(tableName, fromName) {
79
+ return `renameColumn.${tableName}.${fromName}`;
80
+ }
81
+ async function renameColumn(schemaName, tableName, fromName, toName, lowerer) {
82
+ const from = await columnExistsSteps(lowerer, {
83
+ schema: schemaName,
84
+ table: tableName,
85
+ column: fromName
86
+ });
87
+ const to = await columnExistsSteps(lowerer, {
88
+ schema: schemaName,
89
+ table: tableName,
90
+ column: toName
91
+ });
92
+ return {
93
+ id: renameColumnOperationId(tableName, fromName),
94
+ label: `Rename column "${tableName}"."${fromName}" to "${toName}"`,
95
+ operationClass: "widening",
96
+ target: targetDetails("column", toName, schemaName, tableName),
97
+ precheck: [step(`ensure column "${fromName}" exists`, from.present.sql, from.present.params), step(`ensure column "${toName}" does not exist`, to.absent.sql, to.absent.params)],
98
+ execute: [step(`rename column "${fromName}" to "${toName}"`, renameColumnStatement(schemaName, tableName, fromName, toName))],
99
+ postcheck: [step(`verify column "${toName}" exists`, to.present.sql, to.present.params), step(`verify column "${fromName}" no longer exists`, from.absent.sql, from.absent.params)]
100
+ };
101
+ }
75
102
  /**
76
103
  * `qualifiedTargetType` is the new column type as it appears in the
77
104
  * `ALTER COLUMN TYPE` clause (schema-qualified for user-defined types, raw
@@ -80,7 +107,7 @@ async function dropColumn(schemaName, tableName, columnName, lowerer) {
80
107
  * string appearing in the human-readable label (typically `toType` when
81
108
  * explicit, else the column's native type).
82
109
  */
83
- async function alterColumnType(schemaName, tableName, columnName, options, lowerer) {
110
+ async function alterColumnType(schemaName, tableName, columnName, options, lowerer, operationClass = "destructive") {
84
111
  const qualified = qualifyTableName(schemaName, tableName);
85
112
  const usingClause = options.using ? ` USING ${renderOpaqueSql(opaqueSql(options.using))}` : ` USING ${quoteIdentifier(columnName)}::${options.qualifiedTargetType}`;
86
113
  const { present } = await columnExistsSteps(lowerer, {
@@ -97,7 +124,7 @@ async function alterColumnType(schemaName, tableName, columnName, options, lower
97
124
  return {
98
125
  id: `alterType.${tableName}.${columnName}`,
99
126
  label: `Alter type of "${tableName}"."${columnName}" to ${options.rawTargetTypeForLabel}`,
100
- operationClass: "destructive",
127
+ operationClass,
101
128
  target: targetDetails("column", columnName, schemaName, tableName),
102
129
  precheck: [step(`ensure column "${columnName}" exists`, present.sql, present.params)],
103
130
  execute: [step(`alter type of "${columnName}"`, `ALTER TABLE ${qualified} ALTER COLUMN ${quoteIdentifier(columnName)} TYPE ${options.qualifiedTargetType}${usingClause}`)],
@@ -126,7 +153,7 @@ async function setNotNull(schemaName, tableName, columnName, lowerer) {
126
153
  return {
127
154
  id: `alterNullability.setNotNull.${tableName}.${columnName}`,
128
155
  label: `Set NOT NULL on "${tableName}"."${columnName}"`,
129
- operationClass: "destructive",
156
+ operationClass: "widening",
130
157
  target: targetDetails("column", columnName, schemaName, tableName),
131
158
  precheck: [step(`ensure column "${columnName}" exists`, present.sql, present.params), step(`ensure no NULL values in "${columnName}"`, noNulls.sql, noNulls.params)],
132
159
  execute: [step(`set NOT NULL on "${columnName}"`, `ALTER TABLE ${qualified} ALTER COLUMN ${quoteIdentifier(columnName)} SET NOT NULL`)],
@@ -271,7 +298,7 @@ async function dropDefault(schemaName, tableName, columnName, lowerer) {
271
298
  return {
272
299
  id: `dropDefault.${tableName}.${columnName}`,
273
300
  label: `Drop default on "${tableName}"."${columnName}"`,
274
- operationClass: "destructive",
301
+ operationClass: "widening",
275
302
  target: targetDetails("column", columnName, schemaName, tableName),
276
303
  precheck: [step(`ensure column "${columnName}" exists`, present.sql, present.params)],
277
304
  execute: [step(`drop default on "${columnName}"`, dropDefaultExec.sql)],
@@ -421,6 +448,9 @@ const CONSTRAINT_KIND_LABEL = {
421
448
  function renameConstraintLabel(kind, fromName, toName, tableName) {
422
449
  return `Rename ${CONSTRAINT_KIND_LABEL[kind]} "${fromName}" to "${toName}" on "${tableName}"`;
423
450
  }
451
+ function renameConstraintOperationId(kind, schemaName, tableName, fromName) {
452
+ return `${kind}.${schemaName}.${tableName}.${fromName}.rename`;
453
+ }
424
454
  async function renameConstraint(schemaName, tableName, kind, fromName, toName, lowerer) {
425
455
  const qualified = qualifyTableName(schemaName, tableName);
426
456
  const from = await constraintCheckSteps(lowerer, {
@@ -434,7 +464,7 @@ async function renameConstraint(schemaName, tableName, kind, fromName, toName, l
434
464
  table: tableName
435
465
  });
436
466
  return {
437
- id: `${kind}.${schemaName}.${tableName}.${fromName}.rename`,
467
+ id: renameConstraintOperationId(kind, schemaName, tableName, fromName),
438
468
  label: renameConstraintLabel(kind, fromName, toName, tableName),
439
469
  operationClass: "widening",
440
470
  target: targetDetails(kind, toName, schemaName, tableName),
@@ -453,7 +483,7 @@ async function dropCheckConstraint(schemaName, tableName, constraintName, lowere
453
483
  return {
454
484
  id: `dropCheckConstraint.${tableName}.${constraintName}`,
455
485
  label: `Drop check constraint "${constraintName}" on "${tableName}"`,
456
- operationClass: "destructive",
486
+ operationClass: "widening",
457
487
  target: targetDetails("checkConstraint", constraintName, schemaName, tableName),
458
488
  precheck: [step(`ensure constraint "${constraintName}" exists`, present.sql, present.params)],
459
489
  execute: [step(`drop check constraint "${constraintName}"`, `ALTER TABLE ${qualified} DROP CONSTRAINT ${quoteIdentifier(constraintName)}`)],
@@ -477,7 +507,7 @@ async function dropConstraint(schemaName, tableName, constraintName, lowerer, ki
477
507
  return {
478
508
  id: `dropConstraint.${tableName}.${constraintName}`,
479
509
  label: `Drop constraint "${constraintName}" on "${tableName}"`,
480
- operationClass: "destructive",
510
+ operationClass: "widening",
481
511
  target: targetDetails(kind, constraintName, schemaName, tableName),
482
512
  precheck: [step(`ensure constraint "${constraintName}" exists`, present.sql, present.params)],
483
513
  execute: [step(`drop constraint "${constraintName}"`, `ALTER TABLE ${qualified} DROP CONSTRAINT ${quoteIdentifier(constraintName)}`)],
@@ -567,12 +597,10 @@ async function createIndex(schemaName, tableName, indexName, elements, lowerer,
567
597
  postcheck: [step(`verify index "${indexName}" exists`, present.sql, present.params)]
568
598
  };
569
599
  }
570
- /**
571
- * `ALTER INDEX … RENAME TO`. `widening` for the same typology reason as the
572
- * RLS policy rename: a rename is neither additive creation nor destructive,
573
- * and the class vocabulary has no neutral middle class — it is NOT that a
574
- * rename widens anything.
575
- */
600
+ /** `ALTER INDEX … RENAME TO`: `widening`, because a rename keeps every row and value. */
601
+ function renameIndexOperationId(schemaName, tableName, fromName) {
602
+ return `index.${schemaName}.${tableName}.${fromName}.rename`;
603
+ }
576
604
  async function renameIndex(schemaName, tableName, fromName, toName, lowerer) {
577
605
  const fromChecks = indexExistsAst(schemaName, fromName);
578
606
  const toChecks = indexExistsAst(schemaName, toName);
@@ -586,7 +614,7 @@ async function renameIndex(schemaName, tableName, fromName, toName, lowerer) {
586
614
  });
587
615
  const execute = await lowerer.lowerToExecuteRequest(ddlNode);
588
616
  return {
589
- id: `index.${schemaName}.${tableName}.${fromName}.rename`,
617
+ id: renameIndexOperationId(schemaName, tableName, fromName),
590
618
  label: `Rename index "${fromName}" to "${toName}" on "${tableName}"`,
591
619
  operationClass: "widening",
592
620
  target: targetDetails("index", toName, schemaName, tableName),
@@ -605,7 +633,7 @@ async function dropIndex(schemaName, tableName, indexName, lowerer) {
605
633
  return {
606
634
  id: `dropIndex.${tableName}.${indexName}`,
607
635
  label: `Drop index "${indexName}"`,
608
- operationClass: "destructive",
636
+ operationClass: "widening",
609
637
  target: targetDetails("index", indexName, schemaName, tableName),
610
638
  precheck: [step(`ensure index "${indexName}" exists`, present.sql, present.params)],
611
639
  execute: [step(`drop index "${indexName}"`, execute.sql, execute.params)],
@@ -648,7 +676,7 @@ async function dropNativeEnumType(schemaName, typeName, lowerer) {
648
676
  return {
649
677
  id: `dropNativeEnumType.${typeName}`,
650
678
  label: `Drop enum type "${typeName}"`,
651
- operationClass: "destructive",
679
+ operationClass: "widening",
652
680
  target: targetDetails("type", typeName, schemaName),
653
681
  precheck: [],
654
682
  execute: [step(`drop enum type "${typeName}"`, statement.sql, statement.params)],
@@ -710,7 +738,7 @@ async function dropRlsPolicy(schemaName, tableName, policyName, lowerer) {
710
738
  return {
711
739
  id: `rlsPolicy.${schemaName}.${tableName}.${policyName}.drop`,
712
740
  label: `Drop RLS policy "${policyName}" on "${tableName}"`,
713
- operationClass: "destructive",
741
+ operationClass: "widening",
714
742
  target: targetDetails("rlsPolicy", policyName, schemaName, tableName),
715
743
  precheck: [step(`ensure RLS policy "${policyName}" exists`, present.sql, present.params)],
716
744
  execute: [step(`drop RLS policy "${policyName}"`, execute.sql, execute.params)],
@@ -743,7 +771,7 @@ async function disableRowLevelSecurity(schemaName, tableName, lowerer) {
743
771
  return {
744
772
  id: `rowLevelSecurity.${schemaName}.${tableName}.disable`,
745
773
  label: `Disable row-level security on "${tableName}"`,
746
- operationClass: "destructive",
774
+ operationClass: "widening",
747
775
  target: targetDetails("rowLevelSecurity", tableName, schemaName),
748
776
  precheck: [step(`check RLS is currently enabled on "${tableName}"`, enabled.sql, enabled.params)],
749
777
  execute: [step(`disable row-level security on "${tableName}"`, execute.sql, execute.params)],
@@ -798,6 +826,9 @@ async function dropTable(schemaName, tableName, lowerer) {
798
826
  function renameTableStatement(schemaName, fromName, toName) {
799
827
  return `ALTER TABLE ${qualifyTableName(schemaName, fromName)} RENAME TO ${quoteIdentifier(toName)}`;
800
828
  }
829
+ function renameTableOperationId(fromName) {
830
+ return `renameTable.${fromName}`;
831
+ }
801
832
  async function renameTable(schemaName, fromName, toName, lowerer) {
802
833
  const fromChecks = tableExistsAst(schemaName, fromName);
803
834
  const toChecks = tableExistsAst(schemaName, toName);
@@ -806,7 +837,7 @@ async function renameTable(schemaName, fromName, toName, lowerer) {
806
837
  const toPresent = await lowerer.lowerToExecuteRequest(toChecks.tablePresent());
807
838
  const fromAbsent = await lowerer.lowerToExecuteRequest(fromChecks.tableAbsent());
808
839
  return {
809
- id: `renameTable.${fromName}`,
840
+ id: renameTableOperationId(fromName),
810
841
  label: `Rename table "${fromName}" to "${toName}"`,
811
842
  operationClass: "widening",
812
843
  target: targetDetails("table", toName, schemaName),
@@ -899,7 +930,7 @@ async function buildAddNotNullColumnWithTemporaryDefaultOperation(options) {
899
930
  *
900
931
  * - `toOp()` — converts the IR node to a runtime
901
932
  * `SqlMigrationPlanOperation` by delegating to the matching pure factory
902
- * under `operations/`. `DataTransformCall.toOp()` always throws
933
+ * under `operations/`. `DataTransformCall.toOp()` always rejects with
903
934
  * `MIGRATION.UNFILLED_PLACEHOLDER` because a planner-generated data transform is an
904
935
  * unfilled authoring stub by construction.
905
936
  * - `renderTypeScript()` / `importRequirements()` — inherited from
@@ -912,6 +943,10 @@ async function buildAddNotNullColumnWithTemporaryDefaultOperation(options) {
912
943
  */
913
944
  const POSTGRES_MIGRATION_FACADE = "@internal/postgres/migration";
914
945
  var PostgresOpFactoryCallNode = class extends TsExpression {
946
+ /** The operations this call lowers to, in order: one, unless the call carries companions. */
947
+ toOps(lowerer) {
948
+ return [this.toOp(lowerer)];
949
+ }
915
950
  importRequirements() {
916
951
  return [{
917
952
  moduleSpecifier: POSTGRES_MIGRATION_FACADE,
@@ -922,6 +957,10 @@ var PostgresOpFactoryCallNode = class extends TsExpression {
922
957
  Object.freeze(this);
923
958
  }
924
959
  };
960
+ /** Whether `call` is one of this target's calls, which lower through {@link PostgresOpFactoryCallNode.toOps}. */
961
+ function isPostgresOpFactoryCall(call) {
962
+ return call instanceof PostgresOpFactoryCallNode;
963
+ }
925
964
  function postgresDefaultToDdlColumnDefault(columnDefault) {
926
965
  if (!columnDefault) return void 0;
927
966
  switch (columnDefault.kind) {
@@ -1099,14 +1138,23 @@ var RenameTableCall = class extends PostgresOpFactoryCallNode {
1099
1138
  /** The new name: the table's contract-side identity after the rename. */
1100
1139
  tableName;
1101
1140
  label;
1102
- constructor(schemaName, oldTableName, tableName) {
1141
+ /**
1142
+ * The renames of objects whose names derive from the table name. They run after the table rename
1143
+ * and are never rendered on their own.
1144
+ */
1145
+ companions;
1146
+ constructor(schemaName, oldTableName, tableName, companions) {
1103
1147
  super();
1104
1148
  this.schemaName = schemaName;
1105
1149
  this.oldTableName = oldTableName;
1106
1150
  this.tableName = tableName;
1107
1151
  this.label = `Rename table "${oldTableName}" to "${tableName}"`;
1152
+ this.companions = Object.freeze([...companions]);
1108
1153
  this.freeze();
1109
1154
  }
1155
+ toOps(lowerer) {
1156
+ return [this.toOp(lowerer), ...this.companions.map((companion) => companion.toOp(lowerer))];
1157
+ }
1110
1158
  async toOp(lowerer) {
1111
1159
  if (lowerer === void 0) throw postgresError("MIGRATION.POSTGRES_CONTROL_STACK_MISSING", `RenameTableCall.toOp: a lowerer is required on the Postgres planner path (table "${this.oldTableName}"). Pass the control adapter to createPostgresMigrationPlanner.`, { meta: { factory: "RenameTableCall" } });
1112
1160
  return renameTable(this.schemaName, this.oldTableName, this.tableName, lowerer);
@@ -1184,6 +1232,49 @@ var AddColumnCall = class extends PostgresOpFactoryCallNode {
1184
1232
  return req;
1185
1233
  }
1186
1234
  };
1235
+ var RenameColumnCall = class extends PostgresOpFactoryCallNode {
1236
+ factoryName = "renameColumn";
1237
+ operationClass = "widening";
1238
+ schemaName;
1239
+ tableName;
1240
+ oldColumnName;
1241
+ /** The new name: the column's contract-side identity after the rename. */
1242
+ columnName;
1243
+ label;
1244
+ /**
1245
+ * The renames of objects whose names derive from the column name. They run after the column
1246
+ * rename and are never rendered on their own.
1247
+ */
1248
+ companions;
1249
+ constructor(schemaName, tableName, oldColumnName, columnName, companions) {
1250
+ super();
1251
+ this.schemaName = schemaName;
1252
+ this.tableName = tableName;
1253
+ this.oldColumnName = oldColumnName;
1254
+ this.columnName = columnName;
1255
+ this.label = `Rename column "${tableName}"."${oldColumnName}" to "${columnName}"`;
1256
+ this.companions = Object.freeze([...companions]);
1257
+ this.freeze();
1258
+ }
1259
+ toOps(lowerer) {
1260
+ return [this.toOp(lowerer), ...this.companions.map((companion) => companion.toOp(lowerer))];
1261
+ }
1262
+ async toOp(lowerer) {
1263
+ if (lowerer === void 0) throw postgresError("MIGRATION.POSTGRES_CONTROL_STACK_MISSING", `RenameColumnCall.toOp: a lowerer is required on the Postgres planner path (column "${this.oldColumnName}" on table "${this.tableName}"). Pass the control adapter to createPostgresMigrationPlanner.`, { meta: { factory: "RenameColumnCall" } });
1264
+ return renameColumn(this.schemaName, this.tableName, this.oldColumnName, this.columnName, lowerer);
1265
+ }
1266
+ renderTypeScript() {
1267
+ const opts = [];
1268
+ if (this.schemaName !== UNBOUND_NAMESPACE_ID) opts.push(`schema: ${jsonToTsSource(this.schemaName)}`);
1269
+ opts.push(`table: ${jsonToTsSource(this.tableName)}`);
1270
+ opts.push(`column: ${jsonToTsSource(this.oldColumnName)}`);
1271
+ opts.push(`to: ${jsonToTsSource(this.columnName)}`);
1272
+ return `...this.renameColumn({ ${opts.join(", ")} })`;
1273
+ }
1274
+ importRequirements() {
1275
+ return [];
1276
+ }
1277
+ };
1187
1278
  var DropColumnCall = class extends PostgresOpFactoryCallNode {
1188
1279
  factoryName = "dropColumn";
1189
1280
  operationClass = "destructive";
@@ -1216,24 +1307,25 @@ var DropColumnCall = class extends PostgresOpFactoryCallNode {
1216
1307
  };
1217
1308
  var AlterColumnTypeCall = class extends PostgresOpFactoryCallNode {
1218
1309
  factoryName = "alterColumnType";
1219
- operationClass = "destructive";
1310
+ operationClass;
1220
1311
  schemaName;
1221
1312
  tableName;
1222
1313
  columnName;
1223
1314
  options;
1224
1315
  label;
1225
- constructor(schemaName, tableName, columnName, options) {
1316
+ constructor(schemaName, tableName, columnName, options, operationClass = "destructive") {
1226
1317
  super();
1227
1318
  this.schemaName = schemaName;
1228
1319
  this.tableName = tableName;
1229
1320
  this.columnName = columnName;
1230
1321
  this.options = options;
1322
+ this.operationClass = operationClass;
1231
1323
  this.label = `Alter type of "${tableName}"."${columnName}" to ${options.rawTargetTypeForLabel}`;
1232
1324
  this.freeze();
1233
1325
  }
1234
1326
  async toOp(lowerer) {
1235
1327
  if (lowerer === void 0) throw postgresError("MIGRATION.POSTGRES_CONTROL_STACK_MISSING", `AlterColumnTypeCall.toOp: a lowerer is required on the Postgres planner path (column "${this.columnName}" on table "${this.tableName}"). Pass the control adapter to createPostgresMigrationPlanner.`, { meta: { factory: "AlterColumnTypeCall" } });
1236
- return alterColumnType(this.schemaName, this.tableName, this.columnName, this.options, lowerer);
1328
+ return alterColumnType(this.schemaName, this.tableName, this.columnName, this.options, lowerer, this.operationClass);
1237
1329
  }
1238
1330
  renderTypeScript() {
1239
1331
  const opts = [];
@@ -1241,6 +1333,7 @@ var AlterColumnTypeCall = class extends PostgresOpFactoryCallNode {
1241
1333
  opts.push(`table: ${jsonToTsSource(this.tableName)}`);
1242
1334
  opts.push(`column: ${jsonToTsSource(this.columnName)}`);
1243
1335
  opts.push(`options: ${jsonToTsSource(this.options)}`);
1336
+ if (this.operationClass !== "destructive") opts.push(`operationClass: ${jsonToTsSource(this.operationClass)}`);
1244
1337
  return `this.alterColumnType({ ${opts.join(", ")} })`;
1245
1338
  }
1246
1339
  importRequirements() {
@@ -1249,7 +1342,7 @@ var AlterColumnTypeCall = class extends PostgresOpFactoryCallNode {
1249
1342
  };
1250
1343
  var SetNotNullCall = class extends PostgresOpFactoryCallNode {
1251
1344
  factoryName = "setNotNull";
1252
- operationClass = "destructive";
1345
+ operationClass = "widening";
1253
1346
  schemaName;
1254
1347
  tableName;
1255
1348
  columnName;
@@ -1348,7 +1441,7 @@ var SetDefaultCall = class extends PostgresOpFactoryCallNode {
1348
1441
  };
1349
1442
  var DropDefaultCall = class extends PostgresOpFactoryCallNode {
1350
1443
  factoryName = "dropDefault";
1351
- operationClass = "destructive";
1444
+ operationClass = "widening";
1352
1445
  schemaName;
1353
1446
  tableName;
1354
1447
  columnName;
@@ -1562,7 +1655,7 @@ var AddForeignKeyCall = class extends PostgresOpFactoryCallNode {
1562
1655
  };
1563
1656
  var DropConstraintCall = class extends PostgresOpFactoryCallNode {
1564
1657
  factoryName = "dropConstraint";
1565
- operationClass = "destructive";
1658
+ operationClass = "widening";
1566
1659
  schemaName;
1567
1660
  tableName;
1568
1661
  constraintName;
@@ -1657,7 +1750,7 @@ var AddCheckConstraintCall = class extends PostgresOpFactoryCallNode {
1657
1750
  };
1658
1751
  var DropCheckConstraintCall = class extends PostgresOpFactoryCallNode {
1659
1752
  factoryName = "dropCheckConstraint";
1660
- operationClass = "destructive";
1753
+ operationClass = "widening";
1661
1754
  schemaName;
1662
1755
  tableName;
1663
1756
  constraintName;
@@ -1775,7 +1868,7 @@ var RenameIndexCall = class extends PostgresOpFactoryCallNode {
1775
1868
  };
1776
1869
  var DropIndexCall = class extends PostgresOpFactoryCallNode {
1777
1870
  factoryName = "dropIndex";
1778
- operationClass = "destructive";
1871
+ operationClass = "widening";
1779
1872
  schemaName;
1780
1873
  tableName;
1781
1874
  indexName;
@@ -1925,7 +2018,7 @@ var CreateNativeEnumTypeCall = class extends PostgresOpFactoryCallNode {
1925
2018
  };
1926
2019
  var DropNativeEnumTypeCall = class extends PostgresOpFactoryCallNode {
1927
2020
  factoryName = "dropNativeEnumType";
1928
- operationClass = "destructive";
2021
+ operationClass = "widening";
1929
2022
  schemaName;
1930
2023
  typeName;
1931
2024
  label;
@@ -2019,7 +2112,7 @@ var AddNativeEnumValueCall = class extends PostgresOpFactoryCallNode {
2019
2112
  /**
2020
2113
  * A planner-generated data-transform stub. `checkSlot` and `runSlot` name
2021
2114
  * the unfilled authoring slots that the rendered `migration.ts` will expose
2022
- * to the user via `placeholder("…")` calls. `toOp()` always throws
2115
+ * to the user via `placeholder("…")` calls. `toOp()` always rejects with
2023
2116
  * `MIGRATION.UNFILLED_PLACEHOLDER`: the planner cannot lower a stubbed transform to a runtime
2024
2117
  * op — the user must fill the rendered `migration.ts` and re-emit.
2025
2118
  */
@@ -2038,7 +2131,7 @@ var DataTransformCall = class extends PostgresOpFactoryCallNode {
2038
2131
  this.freeze();
2039
2132
  }
2040
2133
  toOp() {
2041
- throw errorUnfilledPlaceholder(this.label);
2134
+ return unfilledPlaceholderOperation(this.label);
2042
2135
  }
2043
2136
  renderTypeScript() {
2044
2137
  return [
@@ -2105,7 +2198,7 @@ var CreatePostgresRlsPolicyCall = class extends PostgresOpFactoryCallNode {
2105
2198
  };
2106
2199
  var DropPostgresRlsPolicyCall = class extends PostgresOpFactoryCallNode {
2107
2200
  factoryName = "dropRlsPolicy";
2108
- operationClass = "destructive";
2201
+ operationClass = "widening";
2109
2202
  schemaName;
2110
2203
  tableName;
2111
2204
  policyName;
@@ -2155,7 +2248,7 @@ var EnableRowLevelSecurityCall = class extends PostgresOpFactoryCallNode {
2155
2248
  };
2156
2249
  var DisableRowLevelSecurityCall = class extends PostgresOpFactoryCallNode {
2157
2250
  factoryName = "disableRowLevelSecurity";
2158
- operationClass = "destructive";
2251
+ operationClass = "widening";
2159
2252
  schemaName;
2160
2253
  tableName;
2161
2254
  label;
@@ -2211,6 +2304,6 @@ function columnNameOfCall(call) {
2211
2304
  if ("column" in call && call.column instanceof DdlColumn) return call.column.name;
2212
2305
  }
2213
2306
  //#endregion
2214
- export { RenameIndexCall as A, renameTableStatement as B, DropNativeEnumTypeCall as C, EnableRowLevelSecurityCall as D, DropTableCall as E, buildTargetDetails as F, columnNameOfCall as I, createExtension as L, RenameTableCall as M, SetDefaultCall as N, RawSqlCall as O, SetNotNullCall as P, installExtension as R, DropIndexCall as S, DropPostgresRlsPolicyCall as T, DisableRowLevelSecurityCall as _, AddNotNullColumnDirectCall as a, DropConstraintCall as b, AddUniqueCall as c, CreateIndexCall as d, CreateNativeEnumTypeCall as f, DataTransformCall as g, CreateTableCall as h, AddNativeEnumValueCall as i, RenamePostgresRlsPolicyCall as j, RenameConstraintCall as k, AlterColumnTypeCall as l, CreateSchemaCall as m, AddColumnCall as n, AddNotNullColumnWithTempDefaultCall as o, CreatePostgresRlsPolicyCall as p, AddForeignKeyCall as r, AddPrimaryKeyCall as s, AddCheckConstraintCall as t, CreateExtensionCall as u, DropCheckConstraintCall as v, DropNotNullCall as w, DropDefaultCall as x, DropColumnCall as y, postgresDefaultToDdlColumnDefault as z };
2307
+ export { RenameConstraintCall as A, isPostgresOpFactoryCall as B, DropNativeEnumTypeCall as C, EnableRowLevelSecurityCall as D, DropTableCall as E, SetNotNullCall as F, renameTableStatement as H, buildTargetDetails as I, columnNameOfCall as L, RenamePostgresRlsPolicyCall as M, RenameTableCall as N, RawSqlCall as O, SetDefaultCall as P, createExtension as R, DropIndexCall as S, DropPostgresRlsPolicyCall as T, postgresDefaultToDdlColumnDefault as V, DisableRowLevelSecurityCall as _, AddNotNullColumnDirectCall as a, DropConstraintCall as b, AddUniqueCall as c, CreateIndexCall as d, CreateNativeEnumTypeCall as f, DataTransformCall as g, CreateTableCall as h, AddNativeEnumValueCall as i, RenameIndexCall as j, RenameColumnCall as k, AlterColumnTypeCall as l, CreateSchemaCall as m, AddColumnCall as n, AddNotNullColumnWithTempDefaultCall as o, CreatePostgresRlsPolicyCall as p, AddForeignKeyCall as r, AddPrimaryKeyCall as s, AddCheckConstraintCall as t, CreateExtensionCall as u, DropCheckConstraintCall as v, DropNotNullCall as w, DropDefaultCall as x, DropColumnCall as y, installExtension as z };
2215
2308
 
2216
- //# sourceMappingURL=op-factory-call-BAgAln5R-BTkhp29z.mjs.map
2309
+ //# sourceMappingURL=op-factory-call-CXlapjuM-BHZNE4Ph.mjs.map