@typed-sql/postgres 2.0.0 → 2.1.0

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 (116) hide show
  1. package/CHANGELOG.md +289 -0
  2. package/README.md +17 -0
  3. package/dist/packages/postgres/src/bulk.d.ts.map +1 -1
  4. package/dist/packages/postgres/src/bulk.js +1 -1
  5. package/dist/packages/postgres/src/bulk.js.map +1 -1
  6. package/dist/packages/postgres/src/capabilities.d.ts +19 -0
  7. package/dist/packages/postgres/src/capabilities.d.ts.map +1 -0
  8. package/dist/packages/postgres/src/capabilities.js +120 -0
  9. package/dist/packages/postgres/src/capabilities.js.map +1 -0
  10. package/dist/packages/postgres/src/catalog/generated/14.d.ts +4 -0
  11. package/dist/packages/postgres/src/catalog/generated/14.d.ts.map +1 -0
  12. package/dist/packages/postgres/src/catalog/generated/14.js +2018 -0
  13. package/dist/packages/postgres/src/catalog/generated/14.js.map +1 -0
  14. package/dist/packages/postgres/src/catalog/generated/15.d.ts +4 -0
  15. package/dist/packages/postgres/src/catalog/generated/15.d.ts.map +1 -0
  16. package/dist/packages/postgres/src/catalog/generated/15.js +2012 -0
  17. package/dist/packages/postgres/src/catalog/generated/15.js.map +1 -0
  18. package/dist/packages/postgres/src/catalog/generated/16.d.ts +4 -0
  19. package/dist/packages/postgres/src/catalog/generated/16.d.ts.map +1 -0
  20. package/dist/packages/postgres/src/catalog/generated/16.js +2012 -0
  21. package/dist/packages/postgres/src/catalog/generated/16.js.map +1 -0
  22. package/dist/packages/postgres/src/catalog/generated/17.d.ts +4 -0
  23. package/dist/packages/postgres/src/catalog/generated/17.d.ts.map +1 -0
  24. package/dist/packages/postgres/src/catalog/generated/17.js +2012 -0
  25. package/dist/packages/postgres/src/catalog/generated/17.js.map +1 -0
  26. package/dist/packages/postgres/src/catalog/generated/18.d.ts +4 -0
  27. package/dist/packages/postgres/src/catalog/generated/18.d.ts.map +1 -0
  28. package/dist/packages/postgres/src/catalog/generated/18.js +2048 -0
  29. package/dist/packages/postgres/src/catalog/generated/18.js.map +1 -0
  30. package/dist/packages/postgres/src/catalog/generated/19.d.ts +4 -0
  31. package/dist/packages/postgres/src/catalog/generated/19.d.ts.map +1 -0
  32. package/dist/packages/postgres/src/catalog/generated/19.js +2048 -0
  33. package/dist/packages/postgres/src/catalog/generated/19.js.map +1 -0
  34. package/dist/packages/postgres/src/catalog/index.d.ts +14 -0
  35. package/dist/packages/postgres/src/catalog/index.d.ts.map +1 -0
  36. package/dist/packages/postgres/src/catalog/index.js +86 -0
  37. package/dist/packages/postgres/src/catalog/index.js.map +1 -0
  38. package/dist/packages/postgres/src/catalog/types.d.ts +46 -0
  39. package/dist/packages/postgres/src/catalog/types.d.ts.map +1 -0
  40. package/dist/packages/postgres/src/catalog/types.js +2 -0
  41. package/dist/packages/postgres/src/catalog/types.js.map +1 -0
  42. package/dist/packages/postgres/src/expression-evidence.d.ts +11 -0
  43. package/dist/packages/postgres/src/expression-evidence.d.ts.map +1 -0
  44. package/dist/packages/postgres/src/expression-evidence.js +33 -0
  45. package/dist/packages/postgres/src/expression-evidence.js.map +1 -0
  46. package/dist/packages/postgres/src/extensions.d.ts +61 -0
  47. package/dist/packages/postgres/src/extensions.d.ts.map +1 -0
  48. package/dist/packages/postgres/src/extensions.js +311 -0
  49. package/dist/packages/postgres/src/extensions.js.map +1 -0
  50. package/dist/packages/postgres/src/index.d.ts +13 -0
  51. package/dist/packages/postgres/src/index.d.ts.map +1 -1
  52. package/dist/packages/postgres/src/index.js +51 -17
  53. package/dist/packages/postgres/src/index.js.map +1 -1
  54. package/dist/packages/postgres/src/parser/index.d.ts +8 -0
  55. package/dist/packages/postgres/src/parser/index.d.ts.map +1 -0
  56. package/dist/packages/postgres/src/parser/index.js +4 -0
  57. package/dist/packages/postgres/src/parser/index.js.map +1 -0
  58. package/dist/packages/postgres/src/parser/parser.d.ts +14 -0
  59. package/dist/packages/postgres/src/parser/parser.d.ts.map +1 -0
  60. package/dist/packages/postgres/src/parser/parser.js +2683 -0
  61. package/dist/packages/postgres/src/parser/parser.js.map +1 -0
  62. package/dist/packages/postgres/src/parser/tokenizer.d.ts +15 -0
  63. package/dist/packages/postgres/src/parser/tokenizer.d.ts.map +1 -0
  64. package/dist/packages/postgres/src/parser/tokenizer.js +470 -0
  65. package/dist/packages/postgres/src/parser/tokenizer.js.map +1 -0
  66. package/dist/packages/postgres/src/parser/types.d.ts +652 -0
  67. package/dist/packages/postgres/src/parser/types.d.ts.map +1 -0
  68. package/dist/packages/postgres/src/parser/types.js +9 -0
  69. package/dist/packages/postgres/src/parser/types.js.map +1 -0
  70. package/dist/packages/postgres/src/parser/walk.d.ts +13 -0
  71. package/dist/packages/postgres/src/parser/walk.d.ts.map +1 -0
  72. package/dist/packages/postgres/src/parser/walk.js +374 -0
  73. package/dist/packages/postgres/src/parser/walk.js.map +1 -0
  74. package/dist/packages/postgres/src/pg.d.ts +35 -4
  75. package/dist/packages/postgres/src/pg.d.ts.map +1 -1
  76. package/dist/packages/postgres/src/pg.js +355 -40
  77. package/dist/packages/postgres/src/pg.js.map +1 -1
  78. package/dist/packages/postgres/src/prepared.d.ts +5 -3
  79. package/dist/packages/postgres/src/prepared.d.ts.map +1 -1
  80. package/dist/packages/postgres/src/prepared.js +23 -15
  81. package/dist/packages/postgres/src/prepared.js.map +1 -1
  82. package/dist/packages/postgres/src/provider.d.ts +149 -11
  83. package/dist/packages/postgres/src/provider.d.ts.map +1 -1
  84. package/dist/packages/postgres/src/provider.js +652 -42
  85. package/dist/packages/postgres/src/provider.js.map +1 -1
  86. package/dist/packages/postgres/src/resolver.d.ts +1 -1
  87. package/dist/packages/postgres/src/resolver.d.ts.map +1 -1
  88. package/dist/packages/postgres/src/resolver.js +2767 -203
  89. package/dist/packages/postgres/src/resolver.js.map +1 -1
  90. package/dist/packages/postgres/src/routing.d.ts.map +1 -1
  91. package/dist/packages/postgres/src/routing.js +1 -1
  92. package/dist/packages/postgres/src/routing.js.map +1 -1
  93. package/dist/packages/postgres/src/runtime-compatibility.d.ts +14 -0
  94. package/dist/packages/postgres/src/runtime-compatibility.d.ts.map +1 -0
  95. package/dist/packages/postgres/src/runtime-compatibility.js +63 -0
  96. package/dist/packages/postgres/src/runtime-compatibility.js.map +1 -0
  97. package/dist/packages/postgres/src/runtime.d.ts +10 -1
  98. package/dist/packages/postgres/src/runtime.d.ts.map +1 -1
  99. package/dist/packages/postgres/src/runtime.js +50 -2
  100. package/dist/packages/postgres/src/runtime.js.map +1 -1
  101. package/dist/packages/postgres/src/semantics.d.ts +1 -1
  102. package/dist/packages/postgres/src/semantics.d.ts.map +1 -1
  103. package/dist/packages/postgres/src/semantics.js +19 -6
  104. package/dist/packages/postgres/src/semantics.js.map +1 -1
  105. package/dist/packages/postgres/src/support.d.ts +29 -0
  106. package/dist/packages/postgres/src/support.d.ts.map +1 -0
  107. package/dist/packages/postgres/src/support.js +45 -0
  108. package/dist/packages/postgres/src/support.js.map +1 -0
  109. package/dist/packages/postgres/src/type-policy.d.ts.map +1 -1
  110. package/dist/packages/postgres/src/type-policy.js +34 -43
  111. package/dist/packages/postgres/src/type-policy.js.map +1 -1
  112. package/dist/packages/postgres/src/type-resolution.d.ts +33 -0
  113. package/dist/packages/postgres/src/type-resolution.d.ts.map +1 -0
  114. package/dist/packages/postgres/src/type-resolution.js +906 -0
  115. package/dist/packages/postgres/src/type-resolution.js.map +1 -0
  116. package/package.json +7 -4
@@ -1,12 +1,52 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { once } from "node:events";
3
+ import { readFile } from "node:fs/promises";
3
4
  import { finished } from "node:stream/promises";
4
- import { PostgresSchemaProvider } from "./provider.js";
5
+ import { postgresServerEvidence } from "./capabilities.js";
6
+ import { PostgresExtensionResolutionError, resolvePostgresExtensionManifests, } from "./extensions.js";
7
+ import { PostgresSchemaProvider, postgresCatalogQueries } from "./provider.js";
5
8
  import { createPostgresDatabase, } from "./runtime.js";
9
+ import { parsePostgresRuntimeSnapshot, validatePostgresRuntimeCompatibility } from "./runtime-compatibility.js";
6
10
  import { defaultPostgresTypePolicy, isKnownPostgresType, mapPostgresType, } from "./type-policy.js";
7
11
  const pgCursorPackage = "pg-cursor";
8
12
  const pgCopyStreamsPackage = "pg-copy-streams";
9
13
  const queryTimeoutError = "@typed-sql/postgres/pg does not accept pg query_timeout because pg can reject before the connection is ready for reuse; use PostgreSQL statement_timeout instead";
14
+ /** Stable adapter classification that retains the original driver failure as `cause`. */
15
+ export class PostgresAdapterError extends Error {
16
+ code = "POSTGRES_ADAPTER_ERROR";
17
+ kind;
18
+ sqlState;
19
+ constructor(kind, message, sqlState, cause) {
20
+ super(message, { cause });
21
+ this.name = "PostgresAdapterError";
22
+ this.kind = kind;
23
+ this.sqlState = sqlState;
24
+ }
25
+ }
26
+ function errorRecord(error) {
27
+ return typeof error === "object" && error !== null ? error : {};
28
+ }
29
+ /** Converts driver-specific failures into a value-safe, SQL-free adapter outcome. */
30
+ export function normalizePostgresAdapterError(error) {
31
+ if (error instanceof PostgresAdapterError)
32
+ return error;
33
+ const record = errorRecord(error);
34
+ const sqlState = typeof record.code === "string" && /^[A-Z\d]{5}$/u.test(record.code) ? record.code : undefined;
35
+ const message = typeof record.message === "string" ? record.message : "PostgreSQL driver operation failed";
36
+ const kind = sqlState === "25P02"
37
+ ? "transaction-abort"
38
+ : sqlState === "57014" && /statement timeout/iu.test(message)
39
+ ? "timeout"
40
+ : sqlState?.startsWith("08") === true ||
41
+ sqlState === "57P01" ||
42
+ ["ECONNRESET", "EPIPE", "ETIMEDOUT"].includes(String(record.code)) ||
43
+ /connection (?:ended|terminated|lost)/iu.test(message)
44
+ ? "connection-loss"
45
+ : sqlState === undefined
46
+ ? "driver"
47
+ : "server";
48
+ return new PostgresAdapterError(kind, message, sqlState, error);
49
+ }
10
50
  async function defaultPgCursorImporter() {
11
51
  return import(pgCursorPackage);
12
52
  }
@@ -70,8 +110,107 @@ async function connectionString(value) {
70
110
  throw new TypeError("PostgreSQL connectionString must not be empty");
71
111
  return resolved;
72
112
  }
73
- const POSTGRES_LIVE_VERIFIER_VERSION = "postgres-prepare-v1";
74
- /** Creates a lazy adapter over PostgreSQL PREPARE and pg_prepared_statements. */
113
+ /** Reads canonical, non-secret compatibility evidence from a PostgreSQL connection or pool. */
114
+ export async function readPgRuntimeServerEvidence(queryable) {
115
+ const result = await queryable.query(postgresCatalogQueries.version);
116
+ const row = result.rows[0];
117
+ if (row === undefined || typeof row.server_version !== "string") {
118
+ throw new TypeError("PostgreSQL runtime compatibility did not return server-version evidence");
119
+ }
120
+ return postgresServerEvidence(row.server_version, row.extensions ?? [], {
121
+ ...(row.standard_conforming_strings === undefined
122
+ ? {}
123
+ : { standardConformingStrings: row.standard_conforming_strings }),
124
+ ...(row.search_path === undefined ? {} : { searchPath: row.search_path }),
125
+ visibilityScope: "current-role",
126
+ });
127
+ }
128
+ const runtimeCodecOidQuery = `
129
+ SELECT requested.database_type,
130
+ t.oid::int AS oid,
131
+ NULLIF(t.typarray, 0)::int AS array_oid
132
+ FROM unnest($1::text[]) AS requested(database_type)
133
+ LEFT JOIN pg_catalog.pg_type AS t ON t.oid = pg_catalog.to_regtype(requested.database_type)
134
+ ORDER BY requested.database_type
135
+ `;
136
+ /** Resolves manifest type names to connection-local OIDs for per-query parser installation. */
137
+ export async function resolvePgRuntimeCodecs(queryable, codecs) {
138
+ const names = [...codecs.keys()].sort();
139
+ if (names.length === 0)
140
+ return [];
141
+ const result = await queryable.query(runtimeCodecOidQuery, [names]);
142
+ const rows = new Map(result.rows.map((row) => [row.database_type.toLowerCase(), row]));
143
+ return names.map((databaseType) => {
144
+ const row = rows.get(databaseType);
145
+ const codec = codecs.get(databaseType);
146
+ if (row?.oid === null || row === undefined || !Number.isSafeInteger(row.oid) || row.oid < 1) {
147
+ throw new PostgresExtensionResolutionError([
148
+ { code: "TSQ407", message: `PostgreSQL extension codec type ${databaseType} is not visible at runtime` },
149
+ ]);
150
+ }
151
+ if (row.array_oid !== null && (!Number.isSafeInteger(row.array_oid) || row.array_oid < 1)) {
152
+ throw new PostgresExtensionResolutionError([
153
+ { code: "TSQ407", message: `PostgreSQL extension codec array type ${databaseType}[] has an invalid OID` },
154
+ ]);
155
+ }
156
+ return {
157
+ oid: row.oid,
158
+ ...(row.array_oid === null ? {} : { arrayOid: row.array_oid }),
159
+ decode: codec.decode,
160
+ };
161
+ });
162
+ }
163
+ const POSTGRES_LIVE_VERIFIER_VERSION = "postgres-describe-v2";
164
+ function describePgStatement(client, name, sql) {
165
+ const protocolClient = client;
166
+ if (protocolClient.connection === undefined)
167
+ return undefined;
168
+ return new Promise((resolve, reject) => {
169
+ let parameters = [];
170
+ let columns = [];
171
+ let connection;
172
+ let settled = false;
173
+ const parameterDescription = (message) => {
174
+ parameters = [...message.dataTypeIDs];
175
+ };
176
+ const finish = (error) => {
177
+ if (settled)
178
+ return;
179
+ settled = true;
180
+ connection?.off("parameterDescription", parameterDescription);
181
+ if (error === undefined)
182
+ resolve({ parameters, columns });
183
+ else
184
+ reject(error);
185
+ };
186
+ const query = {
187
+ name,
188
+ text: sql,
189
+ callback: undefined,
190
+ submit(value) {
191
+ connection = value;
192
+ value.on("parameterDescription", parameterDescription);
193
+ value.parse({ text: sql, name, types: [] });
194
+ value.describe({ type: "S", name });
195
+ value.sync();
196
+ },
197
+ handleRowDescription(message) {
198
+ columns = message.fields.map(({ name: fieldName, dataTypeID }) => ({ name: fieldName, dataTypeID }));
199
+ },
200
+ handleError(error) {
201
+ finish(error);
202
+ },
203
+ handleReadyForQuery() {
204
+ finish();
205
+ },
206
+ };
207
+ client.query(query, (error) => {
208
+ if (error !== undefined)
209
+ finish(error);
210
+ });
211
+ });
212
+ }
213
+ /** Creates a lazy, non-executing adapter over PostgreSQL Parse and Describe metadata. */
75
214
  export function createPgLiveVerifier(options) {
76
215
  const ownsPool = options.pool === undefined;
77
216
  let poolPromise;
@@ -112,27 +251,52 @@ export function createPgLiveVerifier(options) {
112
251
  let evidence;
113
252
  let failure;
114
253
  try {
115
- await client.query(`PREPARE ${name} AS ${request.sql}`);
116
- prepared = true;
117
- const major = Number.parseInt((await server()).version.split(".")[0] ?? "0", 10);
118
- const metadata = await client.query(major >= 18
119
- ? `SELECT parameter_types::text[] AS "parameterTypes", result_types::text[] AS "resultTypes" FROM pg_prepared_statements WHERE name = '${name}'`
120
- : `SELECT parameter_types::text[] AS "parameterTypes" FROM pg_prepared_statements WHERE name = '${name}'`);
121
- const row = metadata.rows[0];
122
- if (row === undefined)
123
- throw new Error("Prepared statement metadata was not returned");
254
+ const protocol = describePgStatement(client, name, request.sql);
255
+ let parameterTypes;
256
+ let resultTypes;
257
+ let unavailable;
258
+ if (protocol === undefined) {
259
+ await client.query(`PREPARE ${name} AS ${request.sql}`);
260
+ prepared = true;
261
+ const major = Number.parseInt((await server()).version.split(".")[0] ?? "0", 10);
262
+ const metadata = await client.query(major >= 18
263
+ ? `SELECT parameter_types::text[] AS "parameterTypes", result_types::text[] AS "resultTypes" FROM pg_prepared_statements WHERE name = '${name}'`
264
+ : `SELECT parameter_types::text[] AS "parameterTypes" FROM pg_prepared_statements WHERE name = '${name}'`);
265
+ const row = metadata.rows[0];
266
+ if (row === undefined)
267
+ throw new Error("Prepared statement metadata was not returned");
268
+ parameterTypes = row.parameterTypes;
269
+ resultTypes = (row.resultTypes ?? []).map((databaseType) => ({ databaseType }));
270
+ if (major < 18)
271
+ unavailable = ["columns"];
272
+ }
273
+ else {
274
+ const description = await protocol;
275
+ prepared = true;
276
+ const oids = [
277
+ ...new Set([...description.parameters, ...description.columns.map(({ dataTypeID }) => dataTypeID)]),
278
+ ];
279
+ const types = await client.query(`SELECT oid, format_type(oid, NULL) AS "databaseType" FROM pg_type WHERE oid = ANY($1::oid[])`, [oids]);
280
+ const names = new Map(types.rows.map(({ oid, databaseType }) => [oid, databaseType]));
281
+ parameterTypes = description.parameters.map((oid) => names.get(oid) ?? `oid:${oid}`);
282
+ resultTypes = description.columns.map(({ name: fieldName, dataTypeID }) => ({
283
+ name: fieldName,
284
+ databaseType: names.get(dataTypeID) ?? `oid:${dataTypeID}`,
285
+ }));
286
+ }
124
287
  const policy = options.typePolicy ?? defaultPostgresTypePolicy;
125
- const fields = (types) => (types ?? []).map((databaseType, offset) => ({
288
+ const fields = (types) => types.map(({ name: fieldName, databaseType }, offset) => ({
126
289
  index: offset + 1,
127
290
  databaseType,
291
+ ...(fieldName === undefined ? {} : { name: fieldName }),
128
292
  ...(isKnownPostgresType(databaseType, options.schema)
129
293
  ? { tsType: mapPostgresType(databaseType, policy, options.schema) }
130
294
  : {}),
131
295
  }));
132
296
  evidence = {
133
- parameters: fields(row.parameterTypes),
134
- columns: fields(row.resultTypes),
135
- ...(major >= 18 ? {} : { unavailable: ["columns"] }),
297
+ parameters: fields(parameterTypes.map((databaseType) => ({ databaseType }))),
298
+ columns: fields(resultTypes),
299
+ ...(unavailable === undefined ? {} : { unavailable }),
136
300
  };
137
301
  }
138
302
  catch (error) {
@@ -162,7 +326,7 @@ export function createPgLiveVerifier(options) {
162
326
  },
163
327
  };
164
328
  }
165
- const POSTGRES_PLAN_INSPECTOR_VERSION = "postgres-explain-json-v1";
329
+ const POSTGRES_PLAN_INSPECTOR_VERSION = "postgres-explain-json-v2";
166
330
  const postgresPlanSettings = [
167
331
  "cpu_index_tuple_cost",
168
332
  "cpu_operator_cost",
@@ -289,9 +453,42 @@ export function createPgPlanInspector(options) {
289
453
  const client = await (await acquirePool()).connect();
290
454
  let failure;
291
455
  try {
292
- const prefix = request.values === undefined ? "EXPLAIN (GENERIC_PLAN TRUE, FORMAT JSON) " : "EXPLAIN (FORMAT JSON) ";
293
- const result = await client.query(`${prefix}${request.sql}`, request.values);
294
- return postgresPlan(result.rows[0]?.["QUERY PLAN"]);
456
+ if (request.values !== undefined) {
457
+ const result = await client.query(`EXPLAIN (FORMAT JSON) ${request.sql}`, request.values);
458
+ return postgresPlan(result.rows[0]?.["QUERY PLAN"]);
459
+ }
460
+ const major = Number.parseInt((await this.environment()).version.split(".")[0] ?? "0", 10);
461
+ if (major >= 16) {
462
+ const result = await client.query(`EXPLAIN (GENERIC_PLAN TRUE, FORMAT JSON) ${request.sql}`);
463
+ return postgresPlan(result.rows[0]?.["QUERY PLAN"]);
464
+ }
465
+ const name = `typed_sql_plan_${request.fingerprint.replace(/^sha256:/u, "").slice(0, 32)}`;
466
+ const quotedName = quotePreparedStatementName(name);
467
+ let transaction = false;
468
+ let prepared = false;
469
+ try {
470
+ await client.query("BEGIN");
471
+ transaction = true;
472
+ await client.query("SET LOCAL plan_cache_mode = force_generic_plan");
473
+ await client.query(`PREPARE ${quotedName} AS ${request.sql}`);
474
+ prepared = true;
475
+ const parameters = request.parameterCount === 0
476
+ ? ""
477
+ : `(${Array.from({ length: request.parameterCount }, () => "NULL").join(", ")})`;
478
+ const result = await client.query(`EXPLAIN (FORMAT JSON) EXECUTE ${quotedName}${parameters}`);
479
+ await client.query(`DEALLOCATE ${quotedName}`);
480
+ prepared = false;
481
+ await client.query("ROLLBACK");
482
+ transaction = false;
483
+ return postgresPlan(result.rows[0]?.["QUERY PLAN"]);
484
+ }
485
+ catch (error) {
486
+ if (transaction)
487
+ await client.query("ROLLBACK").catch(() => undefined);
488
+ if (prepared)
489
+ await client.query(`DEALLOCATE ${quotedName}`).catch(() => undefined);
490
+ throw error;
491
+ }
295
492
  }
296
493
  catch (error) {
297
494
  failure = error;
@@ -314,6 +511,21 @@ function validatePoolConfig(poolConfig) {
314
511
  throw new TypeError("@typed-sql/postgres/pg owns poolConfig.types so decoded values match typePolicy; remove that option");
315
512
  }
316
513
  }
514
+ function statementCacheSize(value) {
515
+ const size = value ?? 256;
516
+ if (!Number.isSafeInteger(size) || size < 1) {
517
+ throw new TypeError("PostgreSQL statementCacheSize must be a positive safe integer");
518
+ }
519
+ return size;
520
+ }
521
+ function changesPreparedStatementIdentity(source) {
522
+ const sql = source.replace(/^\s*(?:(?:--[^\n]*(?:\n|$))|(?:\/\*[\s\S]*?\*\/))*/u, "").trimStart();
523
+ return (/^(?:ALTER|COMMENT|CREATE|DISCARD|DROP|GRANT|REINDEX|REVOKE|TRUNCATE)\b/iu.test(sql) ||
524
+ /^(?:RESET\s+search_path|SET(?:\s+(?:LOCAL|SESSION))?\s+search_path\b)/iu.test(sql));
525
+ }
526
+ function quotePreparedStatementName(name) {
527
+ return `"${name.replaceAll('"', '""')}"`;
528
+ }
317
529
  function validateConnectionStringQueryTimeout(value) {
318
530
  try {
319
531
  const url = new URL(value);
@@ -336,12 +548,23 @@ function queryConfig(config) {
336
548
  ...(config.types === undefined ? {} : { types: config.types }),
337
549
  };
338
550
  }
339
- export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copyStreamsImporter = defaultPgCopyStreamsImporter) {
551
+ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copyStreamsImporter = defaultPgCopyStreamsImporter, adapterOptions = {}) {
340
552
  const options = pool.options;
341
553
  if (options !== undefined && "query_timeout" in options)
342
554
  throw new TypeError(queryTimeoutError);
343
555
  if (typeof options?.connectionString === "string")
344
556
  validateConnectionStringQueryTimeout(options.connectionString);
557
+ const maximumPreparedStatements = statementCacheSize(adapterOptions.statementCacheSize);
558
+ let preparedGeneration = 0;
559
+ const preparedConnections = new WeakMap();
560
+ const preparedState = (client) => {
561
+ const existing = preparedConnections.get(client);
562
+ if (existing !== undefined)
563
+ return existing;
564
+ const created = { generation: preparedGeneration, statements: new Map() };
565
+ preparedConnections.set(client, created);
566
+ return created;
567
+ };
345
568
  let cursorConstructorPromise;
346
569
  const loadCursor = () => {
347
570
  cursorConstructorPromise ??= loadPgCursorDriver(cursorImporter);
@@ -353,6 +576,7 @@ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copy
353
576
  return copyStreamsPromise;
354
577
  };
355
578
  const wrapClient = (client) => {
579
+ const statementState = preparedState(client);
356
580
  let fatalError;
357
581
  let rejectFatal;
358
582
  const fatalSettlement = new Promise((_resolve, reject) => {
@@ -363,8 +587,8 @@ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copy
363
587
  const recordFatal = (error) => {
364
588
  if (fatalError !== undefined)
365
589
  return;
366
- fatalError = error;
367
- rejectFatal(error);
590
+ fatalError = normalizePostgresAdapterError(error);
591
+ rejectFatal(fatalError);
368
592
  };
369
593
  const onError = (error) => recordFatal(error);
370
594
  const onEnd = () => recordFatal(new Error("The PostgreSQL connection ended while it was leased"));
@@ -373,10 +597,38 @@ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copy
373
597
  return {
374
598
  pipeline: client.pipeline,
375
599
  async query(config) {
376
- const result = typeof config === "string"
377
- ? await client.query(config)
378
- : await client.query(queryConfig(config));
379
- return { rows: result.rows };
600
+ try {
601
+ if (statementState.generation !== preparedGeneration) {
602
+ await client.query("DEALLOCATE ALL");
603
+ statementState.statements.clear();
604
+ statementState.generation = preparedGeneration;
605
+ }
606
+ if (typeof config !== "string" && config.name !== undefined) {
607
+ const cachedText = statementState.statements.get(config.name);
608
+ if (cachedText !== undefined) {
609
+ statementState.statements.delete(config.name);
610
+ statementState.statements.set(config.name, cachedText);
611
+ }
612
+ else if (statementState.statements.size >= maximumPreparedStatements) {
613
+ const oldest = statementState.statements.keys().next().value;
614
+ await client.query(`DEALLOCATE ${quotePreparedStatementName(oldest)}`);
615
+ statementState.statements.delete(oldest);
616
+ }
617
+ }
618
+ const result = typeof config === "string"
619
+ ? await client.query(config)
620
+ : await client.query(queryConfig(config));
621
+ if (typeof config !== "string" && config.name !== undefined) {
622
+ statementState.statements.set(config.name, config.text);
623
+ }
624
+ const text = typeof config === "string" ? config : config.text;
625
+ if (changesPreparedStatementIdentity(text))
626
+ preparedGeneration += 1;
627
+ return { rows: result.rows };
628
+ }
629
+ catch (error) {
630
+ throw normalizePostgresAdapterError(error);
631
+ }
380
632
  },
381
633
  async openCursor(config) {
382
634
  const Cursor = await loadCursor();
@@ -480,10 +732,38 @@ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copy
480
732
  return {
481
733
  executionCapabilities: Object.freeze({ cancellation: true, deadlines: true }),
482
734
  async query(config) {
483
- const result = typeof config === "string"
484
- ? await pool.query(config)
485
- : await pool.query(queryConfig(config));
486
- return { rows: result.rows };
735
+ if (typeof config !== "string" && config.name !== undefined) {
736
+ let client;
737
+ try {
738
+ client = wrapClient(await pool.connect());
739
+ }
740
+ catch (error) {
741
+ throw normalizePostgresAdapterError(error);
742
+ }
743
+ let failure;
744
+ try {
745
+ return await client.query(config);
746
+ }
747
+ catch (error) {
748
+ failure = error;
749
+ throw error;
750
+ }
751
+ finally {
752
+ client.release(failure instanceof Error ? failure : failure === undefined ? undefined : true);
753
+ }
754
+ }
755
+ try {
756
+ const result = typeof config === "string"
757
+ ? await pool.query(config)
758
+ : await pool.query(queryConfig(config));
759
+ const text = typeof config === "string" ? config : config.text;
760
+ if (changesPreparedStatementIdentity(text))
761
+ preparedGeneration += 1;
762
+ return { rows: result.rows };
763
+ }
764
+ catch (error) {
765
+ throw normalizePostgresAdapterError(error);
766
+ }
487
767
  },
488
768
  async ensureCursor() {
489
769
  await loadCursor();
@@ -492,7 +772,12 @@ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copy
492
772
  await loadCopyStreams();
493
773
  },
494
774
  async connect() {
495
- return wrapClient(await pool.connect());
775
+ try {
776
+ return wrapClient(await pool.connect());
777
+ }
778
+ catch (error) {
779
+ throw normalizePostgresAdapterError(error);
780
+ }
496
781
  },
497
782
  async end() {
498
783
  await pool.end();
@@ -501,19 +786,48 @@ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copy
501
786
  }
502
787
  export async function createPgDatabase(options) {
503
788
  validatePoolConfig(options.poolConfig);
789
+ if ((options.extensionManifests?.length ?? 0) > 0 && options.compatibilitySnapshot === undefined) {
790
+ throw new TypeError("PostgreSQL runtime extension manifests require a compatibilitySnapshot file");
791
+ }
792
+ const snapshot = options.compatibilitySnapshot === undefined
793
+ ? undefined
794
+ : parsePostgresRuntimeSnapshot(JSON.parse(await readFile(options.compatibilitySnapshot, "utf8")));
504
795
  const resolvedConnectionString = await connectionString(options.connectionString);
505
796
  validateConnectionStringQueryTimeout(resolvedConnectionString);
506
797
  const driver = await loadPgDriver();
507
798
  const { Pool } = driver;
508
799
  const pool = new Pool({ ...options.poolConfig, connectionString: resolvedConnectionString });
509
- return createPostgresDatabase({
510
- pool: adaptPgPool(pool, options.cursorImporter, options.copyStreamsImporter),
511
- ownsPool: true,
512
- fallbackTypeParsers: driver.types,
513
- ...(options.typePolicy === undefined ? {} : { typePolicy: options.typePolicy }),
514
- ...(options.decimal === undefined ? {} : { decimal: options.decimal }),
515
- ...(options.observer === undefined ? {} : { observer: options.observer }),
516
- });
800
+ try {
801
+ let codecs = [];
802
+ if (snapshot !== undefined) {
803
+ const evidence = await readPgRuntimeServerEvidence(pool);
804
+ validatePostgresRuntimeCompatibility(snapshot, evidence, options.typePolicy);
805
+ if ((options.extensionManifests?.length ?? 0) > 0) {
806
+ const extensions = resolvePostgresExtensionManifests(snapshot, options.extensionManifests ?? []);
807
+ if (extensions.issues.length > 0)
808
+ throw new PostgresExtensionResolutionError(extensions.issues);
809
+ codecs = await resolvePgRuntimeCodecs(pool, extensions.codecs);
810
+ }
811
+ }
812
+ return createPostgresDatabase({
813
+ pool: adaptPgPool(pool, options.cursorImporter, options.copyStreamsImporter, {
814
+ ...(options.statementCacheSize === undefined ? {} : { statementCacheSize: options.statementCacheSize }),
815
+ }),
816
+ ownsPool: true,
817
+ fallbackTypeParsers: driver.types,
818
+ ...(options.typePolicy === undefined ? {} : { typePolicy: options.typePolicy }),
819
+ ...(options.decimal === undefined ? {} : { decimal: options.decimal }),
820
+ ...(codecs.length === 0 ? {} : { codecs }),
821
+ ...(options.observer === undefined ? {} : { observer: options.observer }),
822
+ ...(options.preparedCardinalityVariantLimit === undefined
823
+ ? {}
824
+ : { preparedCardinalityVariantLimit: options.preparedCardinalityVariantLimit }),
825
+ });
826
+ }
827
+ catch (error) {
828
+ await pool.end();
829
+ throw error;
830
+ }
517
831
  }
518
832
  export function pg(options) {
519
833
  return {
@@ -525,6 +839,7 @@ export function pg(options) {
525
839
  ...(options.client === undefined ? {} : { client: options.client }),
526
840
  ...(options.schemas === undefined ? {} : { includeSchemas: options.schemas }),
527
841
  ...(options.typePolicy === undefined ? {} : { typePolicy: options.typePolicy }),
842
+ ...(options.extensionManifests === undefined ? {} : { extensionManifests: options.extensionManifests }),
528
843
  });
529
844
  if (options.client !== undefined)
530
845
  return (await provider.introspect({}));
@@ -1 +1 @@
1
- {"version":3,"file":"pg.js","sourceRoot":"","sources":["../../../../src/pg.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pg.js","sourceRoot":"","sources":["../../../../src/pg.ts"],"names":[],"mappings":"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"}