@prisma/orm-target-postgres 8.0.0-rc.1-dev.46 → 8.0.0-rc.10

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 (188) hide show
  1. package/README.md +1 -5
  2. package/dist/{adapter-B0xsc80z-sYcF0RVF.mjs → adapter-BO4-D_sb-Dv6OpO1E.mjs} +4 -4
  3. package/dist/{adapter-B0xsc80z-sYcF0RVF.mjs.map → adapter-BO4-D_sb-Dv6OpO1E.mjs.map} +1 -1
  4. package/dist/{adapter-CPesdzv0.d.mts → adapter-BQrsKoUs.d.mts} +2 -2
  5. package/dist/{adapter-CPesdzv0.d.mts.map → adapter-BQrsKoUs.d.mts.map} +1 -1
  6. package/dist/adapter.d.mts +8 -8
  7. package/dist/adapter.mjs +6 -6
  8. package/dist/adapter__adapter.d.mts +1 -1
  9. package/dist/adapter__adapter.mjs +1 -1
  10. package/dist/adapter__column-types.d.mts +2 -2
  11. package/dist/adapter__column-types.mjs +2 -2
  12. package/dist/adapter__control.d.mts +1 -1
  13. package/dist/adapter__control.mjs +78 -12
  14. package/dist/adapter__control.mjs.map +1 -1
  15. package/dist/adapter__runtime.d.mts +1 -1
  16. package/dist/adapter__runtime.mjs +23 -14
  17. package/dist/adapter__runtime.mjs.map +1 -1
  18. package/dist/adapter__sql-renderer.d.mts +1 -1
  19. package/dist/adapter__sql-renderer.mjs +1 -1
  20. package/dist/adapter__types.d.mts +2 -2
  21. package/dist/{aggregates-Dh6HPdvC.mjs → aggregates-Ckjhz1o7.mjs} +15 -10
  22. package/dist/aggregates-Ckjhz1o7.mjs.map +1 -0
  23. package/dist/{authoring-BOpdZa2N-ClrLFiXw.mjs → authoring-Dm1jBKhq-i8FD48I-.mjs} +84 -48
  24. package/dist/authoring-Dm1jBKhq-i8FD48I-.mjs.map +1 -0
  25. package/dist/{check-expressions-DRgG8RN5-DiA-22aC.d.mts → check-expressions-D4R7JhiZ-q-dFPGT2.d.mts} +7 -9
  26. package/dist/check-expressions-D4R7JhiZ-q-dFPGT2.d.mts.map +1 -0
  27. package/dist/{check-expressions-5vhxWaFy-CBcjFeur.mjs → check-expressions-DFTeR0rd-CSxSpyMV.mjs} +14 -11
  28. package/dist/check-expressions-DFTeR0rd-CSxSpyMV.mjs.map +1 -0
  29. package/dist/codec-ids-CmcC76hX-C0JIyoua.d.mts +39 -0
  30. package/dist/codec-ids-CmcC76hX-C0JIyoua.d.mts.map +1 -0
  31. package/dist/codec-ids-D3ZEAmt2-DjoKUAas.mjs +39 -0
  32. package/dist/codec-ids-D3ZEAmt2-DjoKUAas.mjs.map +1 -0
  33. package/dist/codec-ids-cWPqrkcF.d.mts +1 -0
  34. package/dist/{codec-types-BRU4F-7t-BaJbKF_i.d.mts → codec-types-X0ENu4sQ-C6GS_WDR.d.mts} +21 -9
  35. package/dist/codec-types-X0ENu4sQ-C6GS_WDR.d.mts.map +1 -0
  36. package/dist/codec-types-Zel4Dk7S.d.mts +2 -0
  37. package/dist/{codecs-BmPCJWqb-DveZGJvm.mjs → codecs-CxWg7WrX-DtVAuuXA.mjs} +351 -255
  38. package/dist/codecs-CxWg7WrX-DtVAuuXA.mjs.map +1 -0
  39. package/dist/{codecs-B1HgsJZ2.mjs → codecs-DZMfLjGe.mjs} +2 -2
  40. package/dist/codecs-DZMfLjGe.mjs.map +1 -0
  41. package/dist/{codecs-D8tLswBi-_nbo-Z8x.d.mts → codecs-bwX5JaME-ByuPNLC5.d.mts} +146 -86
  42. package/dist/codecs-bwX5JaME-ByuPNLC5.d.mts.map +1 -0
  43. package/dist/{codecs-DmCKO7dg.d.mts → codecs-ePpDWH7z.d.mts} +2 -2
  44. package/dist/codecs-ePpDWH7z.d.mts.map +1 -0
  45. package/dist/{column-types-BH-MU6uU.d.mts → column-types-CwjYfNCi.d.mts} +33 -7
  46. package/dist/column-types-CwjYfNCi.d.mts.map +1 -0
  47. package/dist/{column-types-Bh92dNjD.mjs → column-types-DU7C_gwa.mjs} +37 -9
  48. package/dist/column-types-DU7C_gwa.mjs.map +1 -0
  49. package/dist/{contract-free-aQ4nT-_R.mjs → contract-free-CzTZEwpt.mjs} +5 -5
  50. package/dist/contract-free-CzTZEwpt.mjs.map +1 -0
  51. package/dist/{control-Drq2rquV.mjs → control-BF220oqr.mjs} +82 -24
  52. package/dist/control-BF220oqr.mjs.map +1 -0
  53. package/dist/{control-2F195jJk.d.mts → control-ByalKcpe.d.mts} +2 -1
  54. package/dist/control-ByalKcpe.d.mts.map +1 -0
  55. package/dist/{control-Y6FxMu3o.mjs → control-DzK5mSLo.mjs} +3 -3
  56. package/dist/control-DzK5mSLo.mjs.map +1 -0
  57. package/dist/{control-adapter-DFr4gS-r-DM3KcZdQ.mjs → control-adapter-BM70RkWS-kIC873DD.mjs} +21 -10
  58. package/dist/control-adapter-BM70RkWS-kIC873DD.mjs.map +1 -0
  59. package/dist/{control-policy-B53lnBCT-B9K9Cj1x.mjs → control-policy-BN8Ouun3-BtGYeb4f.mjs} +7 -7
  60. package/dist/control-policy-BN8Ouun3-BtGYeb4f.mjs.map +1 -0
  61. package/dist/{control-DLTOAEHj.d.mts → control-xdW1bgaP.d.mts} +3 -3
  62. package/dist/{control-DLTOAEHj.d.mts.map → control-xdW1bgaP.d.mts.map} +1 -1
  63. package/dist/{ddl-CNQJds-C-WfZ3y4y8.mjs → ddl-GXbCrKp_-CBKFkq1r.mjs} +4 -4
  64. package/dist/{ddl-CNQJds-C-WfZ3y4y8.mjs.map → ddl-GXbCrKp_-CBKFkq1r.mjs.map} +1 -1
  65. package/dist/{descriptor-meta-rilAH3ep-dAmiVLpe.mjs → descriptor-meta-D41CePyY-B0L9RIgT.mjs} +7 -6
  66. package/dist/descriptor-meta-D41CePyY-B0L9RIgT.mjs.map +1 -0
  67. package/dist/{descriptor-meta-KVX21fsl-DBDoB4eg.mjs → descriptor-meta-zQNj82MZ-CDwEiYdj.mjs} +50 -21
  68. package/dist/descriptor-meta-zQNj82MZ-CDwEiYdj.mjs.map +1 -0
  69. package/dist/{diff-database-schema-DKq76rCk-uehceHYz.mjs → diff-database-schema-C9UxdmYu-BzQjQb1e.mjs} +6 -6
  70. package/dist/{diff-database-schema-DKq76rCk-uehceHYz.mjs.map → diff-database-schema-C9UxdmYu-BzQjQb1e.mjs.map} +1 -1
  71. package/dist/driver.d.mts +2 -2
  72. package/dist/driver.mjs +3 -2
  73. package/dist/driver__control.mjs +1 -1
  74. package/dist/driver__runtime.d.mts +2 -2
  75. package/dist/driver__runtime.mjs +2 -639
  76. package/dist/{errors-CU4xIwwk.d.mts → errors-5fMq0U66.d.mts} +2 -2
  77. package/dist/{errors-CU4xIwwk.d.mts.map → errors-5fMq0U66.d.mts.map} +1 -1
  78. package/dist/errors-DYyzTYzE-39CV_aMo.mjs +92 -0
  79. package/dist/errors-DYyzTYzE-39CV_aMo.mjs.map +1 -0
  80. package/dist/instant-now-generator-lJQqn_8K-JOzseqXI.d.mts +9 -0
  81. package/dist/instant-now-generator-lJQqn_8K-JOzseqXI.d.mts.map +1 -0
  82. package/dist/migration-PTHAY9Cv.mjs.map +1 -1
  83. package/dist/{op-factory-call-H6zeDGLe-_1pAftJk.mjs → op-factory-call-CSkQdszU-C43tr0rP.mjs} +7 -7
  84. package/dist/{op-factory-call-H6zeDGLe-_1pAftJk.mjs.map → op-factory-call-CSkQdszU-C43tr0rP.mjs.map} +1 -1
  85. package/dist/{pack-CySS3DQU.d.mts → pack-BByvVlUw.d.mts} +177 -13
  86. package/dist/pack-BByvVlUw.d.mts.map +1 -0
  87. package/dist/{planner-D0uogzvT-1WyGIC5p.mjs → planner-DtwSy6w3--x0IvtI9.mjs} +8 -8
  88. package/dist/{planner-D0uogzvT-1WyGIC5p.mjs.map → planner-DtwSy6w3--x0IvtI9.mjs.map} +1 -1
  89. package/dist/{planner-ddl-builders-Chxh-LEQ-DXvwOeeA.mjs → planner-ddl-builders-CsfmnnKR-CNn0fLyx.mjs} +5 -5
  90. package/dist/{planner-ddl-builders-Chxh-LEQ-DXvwOeeA.mjs.map → planner-ddl-builders-CsfmnnKR-CNn0fLyx.mjs.map} +1 -1
  91. package/dist/{planner-produced-postgres-migration-D5m8nK6s-CbZ4hlbv.mjs → planner-produced-postgres-migration-BResV739-meZQaWcU.mjs} +4 -4
  92. package/dist/{planner-produced-postgres-migration-D5m8nK6s-CbZ4hlbv.mjs.map → planner-produced-postgres-migration-BResV739-meZQaWcU.mjs.map} +1 -1
  93. package/dist/{planner-sql-checks-ftgzvIO9-BTtBg2Vz.mjs → planner-sql-checks-Bcngv5YZ-Dnp05hSM.mjs} +4 -4
  94. package/dist/{planner-sql-checks-ftgzvIO9-BTtBg2Vz.mjs.map → planner-sql-checks-Bcngv5YZ-Dnp05hSM.mjs.map} +1 -1
  95. package/dist/{postgres-contract-view-B8ykf2cO-T2LvWVFZ.mjs → postgres-contract-view-dWcpuV6T-CJPsHGox.mjs} +5 -5
  96. package/dist/{postgres-contract-view-B8ykf2cO-T2LvWVFZ.mjs.map → postgres-contract-view-dWcpuV6T-CJPsHGox.mjs.map} +1 -1
  97. package/dist/{postgres-migration-Dbq3RGfZ-aMnwfEAb.mjs → postgres-migration-DRKw86P7-C1eWF86n.mjs} +6 -6
  98. package/dist/{postgres-migration-Dbq3RGfZ-aMnwfEAb.mjs.map → postgres-migration-DRKw86P7-C1eWF86n.mjs.map} +1 -1
  99. package/dist/{postgres-schema-CF0yHESb-D7n2X21R.mjs → postgres-schema-B3t7Zr52-CMlY9aGw.mjs} +4 -4
  100. package/dist/{postgres-schema-CF0yHESb-D7n2X21R.mjs.map → postgres-schema-B3t7Zr52-CMlY9aGw.mjs.map} +1 -1
  101. package/dist/{render-ops-DOsRP0Po-BKn_c_Ia.mjs → render-ops-D2vJApKB-B281fzmn.mjs} +3 -3
  102. package/dist/{render-ops-DOsRP0Po-BKn_c_Ia.mjs.map → render-ops-D2vJApKB-B281fzmn.mjs.map} +1 -1
  103. package/dist/{resolve-ddl-schema-CoaeNP35-C-UZldpj.mjs → resolve-ddl-schema-Cab6g5MC-SRco-A7L.mjs} +3 -3
  104. package/dist/{resolve-ddl-schema-CoaeNP35-C-UZldpj.mjs.map → resolve-ddl-schema-Cab6g5MC-SRco-A7L.mjs.map} +1 -1
  105. package/dist/{runtime-DOXznQe0.d.mts → runtime-BdRKoWQu.d.mts} +2 -2
  106. package/dist/{runtime-DOXznQe0.d.mts.map → runtime-BdRKoWQu.d.mts.map} +1 -1
  107. package/dist/runtime-Di_BFzUC.mjs +685 -0
  108. package/dist/runtime-Di_BFzUC.mjs.map +1 -0
  109. package/dist/{runtime-lHBKgjB9.d.mts → runtime-DtoNQntj.d.mts} +3 -2
  110. package/dist/runtime-DtoNQntj.d.mts.map +1 -0
  111. package/dist/{runtime-_TfO66h5.d.mts → runtime-bbCw9Omq.d.mts} +2 -1
  112. package/dist/runtime-bbCw9Omq.d.mts.map +1 -0
  113. package/dist/{sql-renderer-BgC0ZgLS.d.mts → sql-renderer-Cshx9dNa.d.mts} +2 -2
  114. package/dist/{sql-renderer-BgC0ZgLS.d.mts.map → sql-renderer-Cshx9dNa.d.mts.map} +1 -1
  115. package/dist/{sql-renderer-ComgusFq-BBlqM1fw.mjs → sql-renderer-DMMtw8lD-K9zLsg-g.mjs} +8 -75
  116. package/dist/sql-renderer-DMMtw8lD-K9zLsg-g.mjs.map +1 -0
  117. package/dist/{sql-utils-DuzN3JZg-DiXy4Vah.mjs → sql-utils-6j9YTLpr-BCyCBPBg.mjs} +3 -3
  118. package/dist/{sql-utils-DuzN3JZg-DiXy4Vah.mjs.map → sql-utils-6j9YTLpr-BCyCBPBg.mjs.map} +1 -1
  119. package/dist/target.d.mts +14 -13
  120. package/dist/target.mjs +24 -23
  121. package/dist/target__aggregates.mjs +1 -1
  122. package/dist/target__codec-ids.d.mts +3 -3
  123. package/dist/target__codec-ids.mjs +2 -2
  124. package/dist/target__codec-types.d.mts +4 -4
  125. package/dist/target__codecs.d.mts +3 -3
  126. package/dist/target__codecs.mjs +3 -3
  127. package/dist/target__contract-free.mjs +3 -3
  128. package/dist/target__control.d.mts +3 -2
  129. package/dist/target__control.mjs +3 -2
  130. package/dist/target__diff-database-schema.mjs +1 -1
  131. package/dist/target__errors.d.mts +1 -1
  132. package/dist/target__errors.mjs +1 -1
  133. package/dist/target__issue-planner.mjs +1 -1
  134. package/dist/target__migration.mjs +2 -2
  135. package/dist/target__op-factory-call.mjs +1 -1
  136. package/dist/target__pack.d.mts +1 -1
  137. package/dist/target__pack.mjs +1 -1
  138. package/dist/target__planner-ddl-builders.mjs +1 -1
  139. package/dist/target__planner-produced-postgres-migration.mjs +1 -1
  140. package/dist/target__planner-sql-checks.mjs +1 -1
  141. package/dist/target__planner.mjs +2 -2
  142. package/dist/target__render-ops.mjs +1 -1
  143. package/dist/target__runtime.d.mts +3 -2
  144. package/dist/target__runtime.mjs +3 -2
  145. package/dist/target__runtime.mjs.map +1 -1
  146. package/dist/target__schema-ir-annotations.mjs +1 -1
  147. package/dist/target__sql-utils.mjs +1 -1
  148. package/dist/target__types.d.mts +2 -2
  149. package/dist/target__types.mjs +2 -2
  150. package/dist/{types-CjGjPLr5.d.mts → types-B4IkFolc.d.mts} +2 -2
  151. package/dist/{types-CjGjPLr5.d.mts.map → types-B4IkFolc.d.mts.map} +1 -1
  152. package/dist/types-C7BEZmFD.d.mts +1 -0
  153. package/dist/{types-CkryN1AS-BcQRGsDn.d.mts → types-CkryN1AS-CZtzRJFZ.d.mts} +2 -2
  154. package/dist/{types-CkryN1AS-BcQRGsDn.d.mts.map → types-CkryN1AS-CZtzRJFZ.d.mts.map} +1 -1
  155. package/package.json +13 -12
  156. package/dist/aggregates-Dh6HPdvC.mjs.map +0 -1
  157. package/dist/authoring-BOpdZa2N-ClrLFiXw.mjs.map +0 -1
  158. package/dist/check-expressions-5vhxWaFy-CBcjFeur.mjs.map +0 -1
  159. package/dist/check-expressions-DRgG8RN5-DiA-22aC.d.mts.map +0 -1
  160. package/dist/codec-ids-Bqu_IwO0-DKOdPizQ.d.mts +0 -35
  161. package/dist/codec-ids-Bqu_IwO0-DKOdPizQ.d.mts.map +0 -1
  162. package/dist/codec-ids-C5Rkltkw-DMf87l9s.mjs +0 -35
  163. package/dist/codec-ids-C5Rkltkw-DMf87l9s.mjs.map +0 -1
  164. package/dist/codec-ids-DJ6j6pZc.d.mts +0 -1
  165. package/dist/codec-types-BRU4F-7t-BaJbKF_i.d.mts.map +0 -1
  166. package/dist/codec-types-bX63JRLf.d.mts +0 -2
  167. package/dist/codecs-B1HgsJZ2.mjs.map +0 -1
  168. package/dist/codecs-BmPCJWqb-DveZGJvm.mjs.map +0 -1
  169. package/dist/codecs-D8tLswBi-_nbo-Z8x.d.mts.map +0 -1
  170. package/dist/codecs-DmCKO7dg.d.mts.map +0 -1
  171. package/dist/column-types-BH-MU6uU.d.mts.map +0 -1
  172. package/dist/column-types-Bh92dNjD.mjs.map +0 -1
  173. package/dist/contract-free-aQ4nT-_R.mjs.map +0 -1
  174. package/dist/control-2F195jJk.d.mts.map +0 -1
  175. package/dist/control-Drq2rquV.mjs.map +0 -1
  176. package/dist/control-Y6FxMu3o.mjs.map +0 -1
  177. package/dist/control-adapter-DFr4gS-r-DM3KcZdQ.mjs.map +0 -1
  178. package/dist/control-policy-B53lnBCT-B9K9Cj1x.mjs.map +0 -1
  179. package/dist/descriptor-meta-KVX21fsl-DBDoB4eg.mjs.map +0 -1
  180. package/dist/descriptor-meta-rilAH3ep-dAmiVLpe.mjs.map +0 -1
  181. package/dist/driver__runtime.mjs.map +0 -1
  182. package/dist/errors-DKjQzNaN-DFcF1thx.mjs +0 -39
  183. package/dist/errors-DKjQzNaN-DFcF1thx.mjs.map +0 -1
  184. package/dist/pack-CySS3DQU.d.mts.map +0 -1
  185. package/dist/runtime-_TfO66h5.d.mts.map +0 -1
  186. package/dist/runtime-lHBKgjB9.d.mts.map +0 -1
  187. package/dist/sql-renderer-ComgusFq-BBlqM1fw.mjs.map +0 -1
  188. package/dist/types-B-4d5_4a.d.mts +0 -1
@@ -0,0 +1,685 @@
1
+ import { i as postgresDriverDescriptorMeta, n as isPostgresError, r as normalizePgError, t as isAlreadyConnectedError } from "./normalize-error-CNjgVO71-CLlZ3CuJ.mjs";
2
+ import { blindCast } from "@prisma/orm-framework/utils/casts";
3
+ import { suppressIdleConnectionErrors, suppressIdleConnectionErrors as suppressIdleConnectionErrors$1 } from "@prisma/orm-framework/utils/suppress-idle-connection-errors";
4
+ import { Pool, types } from "pg";
5
+ import Cursor from "pg-cursor";
6
+ //#region ../../../3-targets/7-drivers/postgres/dist/runtime.mjs
7
+ function driverError(code, message, details) {
8
+ const error = new Error(message);
9
+ Object.defineProperty(error, "name", {
10
+ value: "RuntimeError",
11
+ configurable: true
12
+ });
13
+ return details === void 0 ? Object.assign(error, {
14
+ code,
15
+ category: "DRIVER",
16
+ severity: "error"
17
+ }) : Object.assign(error, {
18
+ code,
19
+ category: "DRIVER",
20
+ severity: "error",
21
+ details
22
+ });
23
+ }
24
+ function callbackToPromise(fn) {
25
+ return new Promise((resolve, reject) => {
26
+ fn((err, result) => {
27
+ if (err) {
28
+ reject(err);
29
+ return;
30
+ }
31
+ resolve(result);
32
+ });
33
+ });
34
+ }
35
+ let nextNamedPortalId = 1;
36
+ /** Streaming cursor for a server-side named prepared statement. */
37
+ var NamedCursor = class extends Cursor {
38
+ name;
39
+ constructor(opts) {
40
+ super(opts.text, [...opts.values], opts.config);
41
+ this.name = opts.name;
42
+ this.submit = this.submitNamed;
43
+ }
44
+ submitNamed(connection) {
45
+ const self = this;
46
+ const conn = connection;
47
+ self.state = "submitted";
48
+ self.connection = conn;
49
+ self._portal = `np_${nextNamedPortalId++}`;
50
+ if (!conn.parsedStatements[this.name]) {
51
+ const parseMessage = {
52
+ text: self.text,
53
+ name: this.name,
54
+ types: []
55
+ };
56
+ conn.parse(parseMessage, true);
57
+ }
58
+ const bindMessage = {
59
+ portal: self._portal,
60
+ statement: this.name,
61
+ values: self.values ?? []
62
+ };
63
+ conn.bind(bindMessage, true);
64
+ conn.describe({
65
+ type: "P",
66
+ name: self._portal
67
+ }, true);
68
+ conn.flush();
69
+ if (self._conf.types) self._result._getTypeParser = self._conf.types.getTypeParser;
70
+ conn.once("noData", self._ifNoData);
71
+ conn.once("rowDescription", self._rowDescription);
72
+ }
73
+ };
74
+ const DATE_OID = 1082;
75
+ const TIME_OID = 1083;
76
+ const TIMESTAMP_OID = 1114;
77
+ const TIMESTAMPTZ_OID = 1184;
78
+ const DATE_ARRAY_OID = 1182;
79
+ const TIME_ARRAY_OID = 1183;
80
+ const TIMESTAMP_ARRAY_OID = 1115;
81
+ const TIMESTAMPTZ_ARRAY_OID = 1185;
82
+ const TEMPORAL_SCALAR_OIDS = /* @__PURE__ */ new Set([
83
+ DATE_OID,
84
+ TIME_OID,
85
+ TIMESTAMP_OID,
86
+ TIMESTAMPTZ_OID
87
+ ]);
88
+ const TEMPORAL_ARRAY_OIDS = /* @__PURE__ */ new Set([
89
+ DATE_ARRAY_OID,
90
+ TIME_ARRAY_OID,
91
+ TIMESTAMP_ARRAY_OID,
92
+ TIMESTAMPTZ_ARRAY_OID
93
+ ]);
94
+ function getTypeParser(oid, format) {
95
+ return blindCast(types.getTypeParser)(oid, format);
96
+ }
97
+ function serverText(value) {
98
+ return value;
99
+ }
100
+ function parseTextArray(value) {
101
+ if (!value) return null;
102
+ return blindCast(types.arrayParser).create(value).parse();
103
+ }
104
+ const temporalTextTypes = { getTypeParser(oid, format) {
105
+ if (TEMPORAL_SCALAR_OIDS.has(oid)) return serverText;
106
+ if (TEMPORAL_ARRAY_OIDS.has(oid)) return parseTextArray;
107
+ return getTypeParser(oid, format);
108
+ } };
109
+ const DEFAULT_BATCH_SIZE = 100;
110
+ const DEFAULT_PREPARED_STATEMENTS = true;
111
+ function createHandleAllocator() {
112
+ let next = 1;
113
+ return { mint: () => `pn_${next++}` };
114
+ }
115
+ function buildConnectionOptions(options) {
116
+ return {
117
+ ...options.cursor?.disabled ? { cursorDisabled: true } : {
118
+ cursorBatchSize: options.cursor?.batchSize ?? DEFAULT_BATCH_SIZE,
119
+ cursorDisabled: false
120
+ },
121
+ preparedStatementsEnabled: options.preparedStatements ?? DEFAULT_PREPARED_STATEMENTS,
122
+ handleAllocator: createHandleAllocator()
123
+ };
124
+ }
125
+ function isStalePreparedStatementError(error) {
126
+ if (!(error instanceof Error) || !("code" in error) || typeof error.code !== "string") return false;
127
+ const code = error.code;
128
+ return code === "26000" || code === "0A000";
129
+ }
130
+ var AsyncMutex = class {
131
+ #queue = Promise.resolve();
132
+ async lock() {
133
+ const previous = this.#queue;
134
+ let releaseLock;
135
+ this.#queue = new Promise((resolve) => {
136
+ releaseLock = resolve;
137
+ });
138
+ await previous;
139
+ return () => {
140
+ releaseLock?.();
141
+ releaseLock = void 0;
142
+ };
143
+ }
144
+ };
145
+ const clientQueryLocks = /* @__PURE__ */ new WeakMap();
146
+ function acquireClientQueryLock(client) {
147
+ let mutex = clientQueryLocks.get(client);
148
+ if (mutex === void 0) {
149
+ mutex = new AsyncMutex();
150
+ clientQueryLocks.set(client, mutex);
151
+ }
152
+ return mutex.lock();
153
+ }
154
+ var PostgresQueryable = class {
155
+ options;
156
+ constructor(options) {
157
+ this.options = options;
158
+ }
159
+ async *query(request) {
160
+ try {
161
+ const preparedStatementHandle = request.preparedStatementHandle;
162
+ if (preparedStatementHandle === void 0 || !this.options.preparedStatementsEnabled) {
163
+ yield* this.runQuery(request);
164
+ return;
165
+ }
166
+ const name = this.preparedStatementName(preparedStatementHandle);
167
+ yield* this.withStaleHandleStreamRetry(preparedStatementHandle, name, (name) => this.runQuery(request, name));
168
+ } catch (error) {
169
+ throw normalizePgError(error);
170
+ }
171
+ }
172
+ async execute(request) {
173
+ try {
174
+ const preparedStatementHandle = request.preparedStatementHandle;
175
+ if (preparedStatementHandle === void 0 || !this.options.preparedStatementsEnabled) return await this.runExecute(request);
176
+ const name = this.preparedStatementName(preparedStatementHandle);
177
+ return await this.withStaleHandleRetry(preparedStatementHandle, name, (name) => this.runExecute(request, name));
178
+ } catch (error) {
179
+ throw normalizePgError(error);
180
+ }
181
+ }
182
+ preparedStatementName(handle) {
183
+ const existingName = handle.get();
184
+ if (typeof existingName === "string") return existingName;
185
+ const mintedName = this.options.handleAllocator.mint();
186
+ handle.set(mintedName);
187
+ return mintedName;
188
+ }
189
+ async withStaleHandleRetry(preparedStatementHandle, name, attempt) {
190
+ try {
191
+ return await attempt(name);
192
+ } catch (error) {
193
+ if (!isStalePreparedStatementError(error)) throw error;
194
+ const retryName = this.options.handleAllocator.mint();
195
+ preparedStatementHandle.set(retryName);
196
+ try {
197
+ return await attempt(retryName);
198
+ } catch (retryError) {
199
+ throw prepareFailedError(retryError, retryName);
200
+ }
201
+ }
202
+ }
203
+ async *withStaleHandleStreamRetry(preparedStatementHandle, name, attempt) {
204
+ const stream = await this.withStaleHandleRetry(preparedStatementHandle, name, async (name) => {
205
+ const iterator = attempt(name)[Symbol.asyncIterator]();
206
+ return {
207
+ iterator,
208
+ first: await iterator.next()
209
+ };
210
+ });
211
+ if (stream.first.done) return;
212
+ let streamCompleted = false;
213
+ try {
214
+ yield stream.first.value;
215
+ while (true) {
216
+ const next = await stream.iterator.next();
217
+ if (next.done) {
218
+ streamCompleted = true;
219
+ return;
220
+ }
221
+ yield next.value;
222
+ }
223
+ } finally {
224
+ if (!streamCompleted) await stream.iterator.return?.();
225
+ }
226
+ }
227
+ async runExecute(request, name) {
228
+ const client = await this.acquireClient();
229
+ try {
230
+ const releaseLock = await acquireClientQueryLock(client);
231
+ try {
232
+ return { affectedRows: (await client.query({
233
+ name,
234
+ text: request.sql,
235
+ values: blindCast(request.params ?? [])
236
+ })).rowCount ?? 0 };
237
+ } finally {
238
+ releaseLock();
239
+ }
240
+ } finally {
241
+ await this.releaseClient(client);
242
+ }
243
+ }
244
+ inExplicitTransaction() {
245
+ return false;
246
+ }
247
+ async *runQuery(request, name) {
248
+ const client = await this.acquireClient();
249
+ let rows;
250
+ try {
251
+ if (!this.options.cursorDisabled) {
252
+ const releaseLock = await acquireClientQueryLock(client);
253
+ try {
254
+ for await (const row of this.streamWithPortalProtection(client, request, this.options.cursorBatchSize, name)) yield blindCast(row);
255
+ return;
256
+ } catch (cursorError) {
257
+ if (!(cursorError instanceof Error) || isPostgresError(cursorError)) throw cursorError;
258
+ } finally {
259
+ releaseLock();
260
+ }
261
+ }
262
+ rows = await this.executeBuffered(client, request.sql, request.params, name);
263
+ } finally {
264
+ await this.releaseClient(client);
265
+ }
266
+ for (const row of rows) yield blindCast(row);
267
+ }
268
+ async explain(request) {
269
+ const text = `EXPLAIN (FORMAT JSON) ${request.sql}`;
270
+ const client = await this.acquireClient();
271
+ try {
272
+ const releaseLock = await acquireClientQueryLock(client);
273
+ try {
274
+ return { rows: blindCast((await client.query(text, request.params === void 0 ? void 0 : [...request.params]).catch(rethrowNormalizedError)).rows) };
275
+ } finally {
276
+ releaseLock();
277
+ }
278
+ } finally {
279
+ await this.releaseClient(client);
280
+ }
281
+ }
282
+ async *streamWithPortalProtection(client, request, cursorBatchSize, name) {
283
+ if (this.inExplicitTransaction()) {
284
+ yield* this.executeWithCursor(client, request.sql, request.params, cursorBatchSize, name);
285
+ return;
286
+ }
287
+ await client.query("BEGIN");
288
+ let streamFailed = false;
289
+ try {
290
+ yield* this.executeWithCursor(client, request.sql, request.params, cursorBatchSize, name);
291
+ } catch (error) {
292
+ streamFailed = true;
293
+ throw error;
294
+ } finally {
295
+ await this.commitStreamSpan(client, streamFailed);
296
+ }
297
+ }
298
+ async commitStreamSpan(client, streamFailed) {
299
+ try {
300
+ await client.query("COMMIT");
301
+ } catch (commitError) {
302
+ if (!streamFailed) throw commitError;
303
+ }
304
+ }
305
+ async *executeWithCursor(client, sql, params, cursorBatchSize, name) {
306
+ const values = blindCast(params ?? []);
307
+ const config = { types: temporalTextTypes };
308
+ const cursor = client.query(name === void 0 ? new Cursor(sql, values, config) : new NamedCursor({
309
+ name,
310
+ text: sql,
311
+ values,
312
+ config
313
+ }));
314
+ try {
315
+ while (true) {
316
+ const rows = await readCursor(cursor, cursorBatchSize);
317
+ if (rows.length === 0) break;
318
+ for (const row of rows) yield row;
319
+ }
320
+ } finally {
321
+ await closeCursor(cursor);
322
+ }
323
+ }
324
+ async executeBuffered(client, sql, params, name) {
325
+ const config = {
326
+ name,
327
+ text: sql,
328
+ values: blindCast(params ?? []),
329
+ types: temporalTextTypes
330
+ };
331
+ const releaseLock = await acquireClientQueryLock(client);
332
+ let result;
333
+ try {
334
+ result = await client.query(config);
335
+ } finally {
336
+ releaseLock();
337
+ }
338
+ return blindCast(result.rows);
339
+ }
340
+ };
341
+ var PostgresConnectionImpl = class extends PostgresQueryable {
342
+ #connection;
343
+ #onRelease;
344
+ #onDestroy;
345
+ #txState;
346
+ constructor(connection, options, onRelease, onDestroy, txState) {
347
+ super(options);
348
+ this.#connection = connection;
349
+ this.#onRelease = onRelease;
350
+ this.#onDestroy = onDestroy;
351
+ this.#txState = txState ?? { open: false };
352
+ }
353
+ acquireClient() {
354
+ return Promise.resolve(this.#connection);
355
+ }
356
+ releaseClient(_client) {
357
+ return Promise.resolve();
358
+ }
359
+ inExplicitTransaction() {
360
+ return this.#txState.open;
361
+ }
362
+ async beginTransaction() {
363
+ const releaseLock = await acquireClientQueryLock(this.#connection);
364
+ try {
365
+ await this.#connection.query("BEGIN").catch(rethrowNormalizedError);
366
+ } finally {
367
+ releaseLock();
368
+ }
369
+ this.#txState.open = true;
370
+ return new PostgresTransactionImpl(this.#connection, this.options, () => {
371
+ this.#txState.open = false;
372
+ });
373
+ }
374
+ async release() {
375
+ const conn = this.#connection;
376
+ if ("release" in conn) conn.release();
377
+ const onRelease = this.#onRelease;
378
+ this.#onRelease = void 0;
379
+ this.#onDestroy = void 0;
380
+ onRelease?.();
381
+ }
382
+ async destroy(reason) {
383
+ const onDestroy = this.#onDestroy;
384
+ const onRelease = this.#onRelease;
385
+ this.#onDestroy = void 0;
386
+ this.#onRelease = void 0;
387
+ const conn = this.#connection;
388
+ if ("release" in conn) {
389
+ const releaseArg = reason instanceof Error ? reason : /* @__PURE__ */ new Error("Connection destroyed");
390
+ conn.release(releaseArg);
391
+ }
392
+ if (onDestroy) await onDestroy(reason);
393
+ else onRelease?.();
394
+ }
395
+ };
396
+ var PostgresTransactionImpl = class extends PostgresQueryable {
397
+ #connection;
398
+ #onSettled;
399
+ constructor(connection, options, onSettled) {
400
+ super(options);
401
+ this.#connection = connection;
402
+ this.#onSettled = onSettled;
403
+ }
404
+ acquireClient() {
405
+ return Promise.resolve(this.#connection);
406
+ }
407
+ releaseClient(_client) {
408
+ return Promise.resolve();
409
+ }
410
+ inExplicitTransaction() {
411
+ return true;
412
+ }
413
+ #settle() {
414
+ const onSettled = this.#onSettled;
415
+ this.#onSettled = void 0;
416
+ onSettled?.();
417
+ }
418
+ async commit() {
419
+ const releaseLock = await acquireClientQueryLock(this.#connection);
420
+ try {
421
+ await this.#connection.query("COMMIT").catch(rethrowNormalizedError);
422
+ } finally {
423
+ releaseLock();
424
+ this.#settle();
425
+ }
426
+ }
427
+ async rollback() {
428
+ const releaseLock = await acquireClientQueryLock(this.#connection);
429
+ try {
430
+ await this.#connection.query("ROLLBACK").catch(rethrowNormalizedError);
431
+ } finally {
432
+ releaseLock();
433
+ this.#settle();
434
+ }
435
+ }
436
+ };
437
+ var PostgresPoolDriverImpl = class extends PostgresQueryable {
438
+ pool;
439
+ #closed = false;
440
+ constructor(options) {
441
+ super(buildConnectionOptions(options));
442
+ this.pool = options.connect.pool;
443
+ }
444
+ get state() {
445
+ return this.#closed ? "closed" : "connected";
446
+ }
447
+ async connect(_binding) {}
448
+ async acquireConnection() {
449
+ return new PostgresConnectionImpl(await this.acquireClient(), this.options);
450
+ }
451
+ async close() {
452
+ if (this.#closed) return;
453
+ this.#closed = true;
454
+ await this.pool.end();
455
+ }
456
+ async acquireClient() {
457
+ return suppressIdleConnectionErrors(await this.pool.connect());
458
+ }
459
+ async releaseClient(client) {
460
+ client.release();
461
+ }
462
+ };
463
+ var PostgresDirectDriverImpl = class extends PostgresQueryable {
464
+ directClient;
465
+ #connectionMutex = new AsyncMutex();
466
+ #closed = false;
467
+ #connected = false;
468
+ #connectPromise;
469
+ #txState = { open: false };
470
+ constructor(options) {
471
+ super(buildConnectionOptions(options));
472
+ this.directClient = options.connect.client;
473
+ this.directClient.on("error", () => {
474
+ this.#closed = true;
475
+ this.#connected = false;
476
+ });
477
+ }
478
+ inExplicitTransaction() {
479
+ return this.#txState.open;
480
+ }
481
+ get state() {
482
+ return this.#closed ? "closed" : "connected";
483
+ }
484
+ async connect(_binding) {}
485
+ async acquireConnection() {
486
+ const releaseLease = await this.#connectionMutex.lock();
487
+ try {
488
+ return new PostgresConnectionImpl(await this.acquireClient(), this.options, releaseLease, async () => {
489
+ try {
490
+ await this.#closeWhileHoldingLease();
491
+ } finally {
492
+ releaseLease();
493
+ }
494
+ }, this.#txState);
495
+ } catch (error) {
496
+ releaseLease();
497
+ throw error;
498
+ }
499
+ }
500
+ async close() {
501
+ const releaseLease = await this.#connectionMutex.lock();
502
+ try {
503
+ await this.#closeWhileHoldingLease();
504
+ } finally {
505
+ releaseLease();
506
+ }
507
+ }
508
+ async #closeWhileHoldingLease() {
509
+ if (this.#closed) return;
510
+ this.#closed = true;
511
+ await this.directClient.end();
512
+ this.#connected = false;
513
+ }
514
+ async acquireClient() {
515
+ if (this.#closed) throw driverError("DRIVER.NOT_CONNECTED", "Postgres connection lost or closed. Create a new client to reconnect.");
516
+ if (this.#connected) return this.directClient;
517
+ if (this.#connectPromise !== void 0) {
518
+ await this.#connectPromise;
519
+ return this.directClient;
520
+ }
521
+ this.#connectPromise = (async () => {
522
+ try {
523
+ await this.directClient.connect();
524
+ } catch (error) {
525
+ if (!isAlreadyConnectedError(error)) throw error;
526
+ } finally {
527
+ this.#connectPromise = void 0;
528
+ }
529
+ this.#connected = true;
530
+ })();
531
+ await this.#connectPromise;
532
+ return this.directClient;
533
+ }
534
+ async releaseClient(_client) {}
535
+ };
536
+ function createBoundDriverFromBinding(binding, cursorOpts, extraOpts) {
537
+ const preparedStatements = extraOpts?.preparedStatements;
538
+ switch (binding.kind) {
539
+ case "url": return new PostgresPoolDriverImpl({
540
+ connect: { pool: suppressIdleConnectionErrors(new Pool({
541
+ connectionString: binding.url,
542
+ connectionTimeoutMillis: 2e4,
543
+ idleTimeoutMillis: 3e4
544
+ })) },
545
+ cursor: cursorOpts,
546
+ preparedStatements
547
+ });
548
+ case "pgPool": return new PostgresPoolDriverImpl({
549
+ connect: { pool: suppressIdleConnectionErrors(binding.pool) },
550
+ cursor: cursorOpts,
551
+ preparedStatements
552
+ });
553
+ case "pgClient": return new PostgresDirectDriverImpl({
554
+ connect: { client: suppressIdleConnectionErrors(binding.client) },
555
+ cursor: cursorOpts,
556
+ preparedStatements
557
+ });
558
+ }
559
+ }
560
+ function readCursor(cursor, size) {
561
+ return callbackToPromise((cb) => {
562
+ cursor.read(size, (err, rows) => cb(err, rows));
563
+ });
564
+ }
565
+ function closeCursor(cursor) {
566
+ return callbackToPromise((cb) => cursor.close(cb));
567
+ }
568
+ function rethrowNormalizedError(error) {
569
+ throw normalizePgError(error);
570
+ }
571
+ function prepareFailedError(retryError, handle) {
572
+ const cause = normalizePgError(retryError);
573
+ return Object.assign(driverError("DRIVER.PREPARE_FAILED", `Prepared statement failed again after re-preparing with a fresh handle: ${cause.message}`, { handle }), { cause });
574
+ }
575
+ const USE_BEFORE_CONNECT_MESSAGE = "Postgres driver not connected. Call connect(binding) before acquireConnection or execute.";
576
+ const ALREADY_CONNECTED_MESSAGE = "Postgres driver already connected. Call close() before reconnecting with a new binding.";
577
+ function unboundQuery() {
578
+ return { [Symbol.asyncIterator]() {
579
+ return { async next() {
580
+ throw driverError("DRIVER.NOT_CONNECTED", USE_BEFORE_CONNECT_MESSAGE);
581
+ } };
582
+ } };
583
+ }
584
+ var PostgresUnboundDriverImpl = class {
585
+ familyId = "sql";
586
+ targetId = "postgres";
587
+ #delegate = null;
588
+ #closed = false;
589
+ #cursorOpts;
590
+ #preparedStatements;
591
+ constructor(options) {
592
+ this.#cursorOpts = options?.cursor;
593
+ this.#preparedStatements = options?.preparedStatements;
594
+ }
595
+ get state() {
596
+ if (this.#delegate !== null) return "connected";
597
+ if (this.#closed) return "closed";
598
+ return "unbound";
599
+ }
600
+ #requireDelegate() {
601
+ const delegate = this.#delegate;
602
+ if (delegate === null) throw driverError("DRIVER.NOT_CONNECTED", USE_BEFORE_CONNECT_MESSAGE);
603
+ return delegate;
604
+ }
605
+ async connect(binding) {
606
+ if (this.#delegate !== null) throw driverError("DRIVER.ALREADY_CONNECTED", ALREADY_CONNECTED_MESSAGE, { bindingKind: binding.kind });
607
+ this.#delegate = createBoundDriverFromBinding(binding, this.#cursorOpts, { preparedStatements: this.#preparedStatements });
608
+ this.#closed = false;
609
+ }
610
+ async acquireConnection() {
611
+ const delegate = this.#requireDelegate();
612
+ const connection = await delegate.acquireConnection();
613
+ return this.#wrapConnection(connection, delegate);
614
+ }
615
+ /**
616
+ * Wraps an acquired connection so that teardown paths which close the
617
+ * underlying delegate (notably `destroy()` on a pgClient binding, where
618
+ * the single socket means a destroyed connection invalidates the driver)
619
+ * also reset our own `#delegate` reference. Without this, a failed
620
+ * transaction rollback would leave the outer unbound wrapper reporting
621
+ * `connected` while routing subsequent work to an already-ended delegate.
622
+ */
623
+ #wrapConnection(connection, delegate) {
624
+ const syncDelegateState = () => {
625
+ if (this.#delegate === delegate && delegate.state === "closed") {
626
+ this.#delegate = null;
627
+ this.#closed = true;
628
+ }
629
+ };
630
+ const wrapped = {
631
+ beginTransaction: connection.beginTransaction.bind(connection),
632
+ query: connection.query.bind(connection),
633
+ execute: connection.execute.bind(connection),
634
+ release: async () => {
635
+ try {
636
+ await connection.release();
637
+ } finally {
638
+ syncDelegateState();
639
+ }
640
+ },
641
+ destroy: async (reason) => {
642
+ try {
643
+ await connection.destroy(reason);
644
+ } finally {
645
+ syncDelegateState();
646
+ }
647
+ }
648
+ };
649
+ if (connection.explain) wrapped.explain = connection.explain.bind(connection);
650
+ return wrapped;
651
+ }
652
+ async close() {
653
+ const delegate = this.#delegate;
654
+ if (delegate !== null) {
655
+ this.#delegate = null;
656
+ await delegate.close();
657
+ }
658
+ this.#closed = true;
659
+ }
660
+ query(request) {
661
+ const delegate = this.#delegate;
662
+ return delegate === null ? unboundQuery() : delegate.query(request);
663
+ }
664
+ async execute(request) {
665
+ const delegate = this.#delegate;
666
+ if (delegate === null) throw driverError("DRIVER.NOT_CONNECTED", USE_BEFORE_CONNECT_MESSAGE);
667
+ return delegate.execute(request);
668
+ }
669
+ async explain(request) {
670
+ const delegate = this.#requireDelegate();
671
+ const explain = delegate.explain;
672
+ if (explain === void 0) throw driverError("DRIVER.NOT_CONNECTED", USE_BEFORE_CONNECT_MESSAGE);
673
+ return explain.call(delegate, request);
674
+ }
675
+ };
676
+ const postgresRuntimeDriverDescriptor = {
677
+ ...postgresDriverDescriptorMeta,
678
+ create(options) {
679
+ return new PostgresUnboundDriverImpl(options);
680
+ }
681
+ };
682
+ //#endregion
683
+ export { suppressIdleConnectionErrors$1 as n, postgresRuntimeDriverDescriptor as t };
684
+
685
+ //# sourceMappingURL=runtime-Di_BFzUC.mjs.map