linkgress-orm 0.4.40 → 0.4.42

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 (60) hide show
  1. package/dist/database/bun-client.d.ts +31 -0
  2. package/dist/database/bun-client.d.ts.map +1 -1
  3. package/dist/database/bun-client.js +143 -23
  4. package/dist/database/bun-client.js.map +1 -1
  5. package/dist/database/database-client.interface.d.ts +12 -0
  6. package/dist/database/database-client.interface.d.ts.map +1 -1
  7. package/dist/database/database-client.interface.js +16 -0
  8. package/dist/database/database-client.interface.js.map +1 -1
  9. package/dist/database/index.d.ts +2 -1
  10. package/dist/database/index.d.ts.map +1 -1
  11. package/dist/database/index.js.map +1 -1
  12. package/dist/database/pg-client.d.ts +5 -2
  13. package/dist/database/pg-client.d.ts.map +1 -1
  14. package/dist/database/pg-client.js +21 -17
  15. package/dist/database/pg-client.js.map +1 -1
  16. package/dist/database/postgres-client.d.ts +9 -0
  17. package/dist/database/postgres-client.d.ts.map +1 -1
  18. package/dist/database/postgres-client.js +59 -15
  19. package/dist/database/postgres-client.js.map +1 -1
  20. package/dist/database/types.d.ts +9 -0
  21. package/dist/database/types.d.ts.map +1 -1
  22. package/dist/entity/db-context.d.ts +14 -2
  23. package/dist/entity/db-context.d.ts.map +1 -1
  24. package/dist/entity/db-context.js +55 -10
  25. package/dist/entity/db-context.js.map +1 -1
  26. package/dist/index.d.ts +42 -22
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/query/collection-strategy.interface.d.ts +6 -0
  30. package/dist/query/collection-strategy.interface.d.ts.map +1 -1
  31. package/dist/query/conditions.d.ts +5 -0
  32. package/dist/query/conditions.d.ts.map +1 -1
  33. package/dist/query/conditions.js +13 -0
  34. package/dist/query/conditions.js.map +1 -1
  35. package/dist/query/cte-builder.d.ts +50 -2
  36. package/dist/query/cte-builder.d.ts.map +1 -1
  37. package/dist/query/cte-builder.js +68 -6
  38. package/dist/query/cte-builder.js.map +1 -1
  39. package/dist/query/grouped-query.d.ts +2 -0
  40. package/dist/query/grouped-query.d.ts.map +1 -1
  41. package/dist/query/grouped-query.js +4 -0
  42. package/dist/query/grouped-query.js.map +1 -1
  43. package/dist/query/query-builder.d.ts +15 -0
  44. package/dist/query/query-builder.d.ts.map +1 -1
  45. package/dist/query/query-builder.js +129 -8
  46. package/dist/query/query-builder.js.map +1 -1
  47. package/dist/query/strategies/cte-collection-strategy.js +98 -98
  48. package/dist/query/strategies/cte-collection-strategy.js.map +1 -1
  49. package/dist/query/strategies/lateral-collection-strategy.d.ts.map +1 -1
  50. package/dist/query/strategies/lateral-collection-strategy.js +62 -58
  51. package/dist/query/strategies/lateral-collection-strategy.js.map +1 -1
  52. package/dist/query/strategies/temptable-collection-strategy.d.ts +3 -14
  53. package/dist/query/strategies/temptable-collection-strategy.d.ts.map +1 -1
  54. package/dist/query/strategies/temptable-collection-strategy.js +106 -226
  55. package/dist/query/strategies/temptable-collection-strategy.js.map +1 -1
  56. package/dist/types/custom-types.d.ts +0 -4
  57. package/dist/types/custom-types.d.ts.map +1 -1
  58. package/dist/types/custom-types.js +29 -1
  59. package/dist/types/custom-types.js.map +1 -1
  60. package/package.json +4 -1
@@ -11,6 +11,16 @@ type BunSql = any;
11
11
  export declare class BunClient extends DatabaseClient {
12
12
  private sql;
13
13
  private ownsConnection;
14
+ /**
15
+ * True when the client was constructed with `prepare: false` — Bun then uses
16
+ * unnamed statements with TEXT-format results, whose array decoding is
17
+ * correct (the binary decoder panics / mis-shapes arrays, see
18
+ * supportsBinaryArrayResults). Conservatively false for pre-built instances
19
+ * and connection strings, where the prepare mode is unknown.
20
+ */
21
+ private usesTextResults;
22
+ /** See BunSqlOptions.datesAsStrings — linkgress-level Date→PG-text conversion. */
23
+ private datesAsStrings;
14
24
  /**
15
25
  * Create a BunClient
16
26
  * @param config - Either a connection string, BunSqlOptions config object, or an existing Bun SQL instance
@@ -50,6 +60,15 @@ export declare class BunClient extends DatabaseClient {
50
60
  * This allows true single round-trip optimization
51
61
  */
52
62
  supportsMultiStatementQueries(): boolean;
63
+ /**
64
+ * Normalize a Bun `.simple()` result into an array of result sets.
65
+ *
66
+ * For a SINGLE statement, `.simple()` returns the result set itself (an
67
+ * array of row objects); for MULTIPLE statements it returns an array with
68
+ * one result set per statement. Distinguish by element shape — a result
69
+ * set's elements are row objects, never arrays.
70
+ */
71
+ private static normalizeSimpleResultSets;
53
72
  /**
54
73
  * Execute a multi-statement query using the simple protocol
55
74
  * This bypasses prepared statements and allows multiple statements
@@ -66,6 +85,18 @@ export declare class BunClient extends DatabaseClient {
66
85
  * No explicit toggle needed
67
86
  */
68
87
  supportsBinaryProtocol(): boolean;
88
+ /**
89
+ * Bun ≤ 1.3.14 cannot decode BINARY array result columns (alignment panic /
90
+ * object-shaped arrays — see debug/bun-sql-binary-array-repro.ts), so by
91
+ * default query builders aggregate via json_agg instead of array_agg.
92
+ *
93
+ * With `prepare: false`, Bun uses unnamed statements with TEXT-format
94
+ * results whose array decoding is correct — native arrays work and the
95
+ * panic surface disappears entirely (raw SQL included), at ~0.05ms/query
96
+ * re-parse cost. In that mode this returns true and strategies keep
97
+ * array_agg.
98
+ */
99
+ supportsBinaryArrayResults(): boolean;
69
100
  /**
70
101
  * Get access to the underlying Bun SQL instance for advanced use cases
71
102
  */
@@ -1 +1 @@
1
- {"version":3,"file":"bun-client.d.ts","sourceRoot":"","sources":["../../src/database/bun-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,KAAK,MAAM,GAAG,GAAG,CAAC;AA6BlB;;;;;;GAMG;AACH,qBAAa,SAAU,SAAQ,cAAc;IAC3C,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,cAAc,CAAU;IAEhC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;gBACS,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM;IAwB7C,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAUtG,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAMpC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1B,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACG,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAcxH;;;OAGG;IACH,6BAA6B,IAAI,OAAO;IAIxC;;;;OAIG;IACG,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAchE;;;OAGG;IACG,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAW3D;;;OAGG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;OAEG;IACH,MAAM,IAAI,MAAM;CAGjB"}
1
+ {"version":3,"file":"bun-client.d.ts","sourceRoot":"","sources":["../../src/database/bun-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,KAAK,MAAM,GAAG,GAAG,CAAC;AAqGlB;;;;;;GAMG;AACH,qBAAa,SAAU,SAAQ,cAAc;IAC3C,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,cAAc,CAAU;IAChC;;;;;;OAMG;IACH,OAAO,CAAC,eAAe,CAAU;IACjC,kFAAkF;IAClF,OAAO,CAAC,cAAc,CAAU;IAEhC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;gBACS,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM;IA+B7C,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAetG,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAMpC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1B,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACG,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmBxH;;;OAGG;IACH,6BAA6B,IAAI,OAAO;IAIxC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAYxC;;;;OAIG;IACG,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IA0BhE;;;OAGG;IACG,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAgB3D;;;OAGG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;;;;;;;;;OAUG;IACH,0BAA0B,IAAI,OAAO;IAIrC;;OAEG;IACH,MAAM,IAAI,MAAM;CAGjB"}
@@ -2,23 +2,86 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BunClient = void 0;
4
4
  const database_client_interface_1 = require("./database-client.interface");
5
+ /**
6
+ * Resolve Bun's SQL constructor.
7
+ *
8
+ * Bun exposes SQL on the `Bun` global and via the virtual `bun` module —
9
+ * there is no `bun:sql` builtin. Prefer the global (no module resolution
10
+ * involved, works under every bundler), fall back to `require('bun')` for
11
+ * environments that strip globals.
12
+ */
13
+ function resolveBunSqlConstructor() {
14
+ const bunGlobal = globalThis.Bun;
15
+ if (bunGlobal && typeof bunGlobal.SQL === 'function') {
16
+ return bunGlobal.SQL;
17
+ }
18
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
19
+ const { SQL } = require('bun');
20
+ return SQL;
21
+ }
5
22
  /**
6
23
  * Check if a value is a Bun SQL instance
7
24
  */
8
25
  function isBunSqlInstance(value) {
9
26
  return value && typeof value === 'function' && typeof value.unsafe === 'function' && typeof value.close === 'function';
10
27
  }
28
+ /**
29
+ * In text-results mode (`prepare: false`), Bun serializes object/array params
30
+ * with toString() — a jsonb param would reach the server as "[object Object]".
31
+ * Pre-stringify them: in the text protocol PostgreSQL parses the JSON string
32
+ * into the json/jsonb target correctly (matching binary-mode behavior).
33
+ * Dates pass through — Bun formats those itself.
34
+ */
35
+ /**
36
+ * Convert Date values in result rows to PostgreSQL-text strings, in place.
37
+ * 'YYYY-MM-DD HH:MM:SS.mmm' (UTC, no zone suffix); exactly-UTC-midnight
38
+ * values become plain 'YYYY-MM-DD' (DATE columns arrive as midnight Dates).
39
+ */
40
+ function convertDatesToPgText(rows) {
41
+ for (const row of rows) {
42
+ for (const key in row) {
43
+ const value = row[key];
44
+ if (value instanceof Date) {
45
+ const iso = value.toISOString();
46
+ row[key] = iso.endsWith('T00:00:00.000Z') ? iso.slice(0, 10) : iso.slice(0, 23).replace('T', ' ');
47
+ }
48
+ }
49
+ }
50
+ }
51
+ function normalizeTextModeParams(params, textMode) {
52
+ const list = params || [];
53
+ if (!textMode) {
54
+ return list;
55
+ }
56
+ let needsCopy = false;
57
+ for (const param of list) {
58
+ if (param !== null && typeof param === 'object' && !(param instanceof Date)) {
59
+ needsCopy = true;
60
+ break;
61
+ }
62
+ }
63
+ if (!needsCopy) {
64
+ return list;
65
+ }
66
+ return list.map(param => param !== null && typeof param === 'object' && !(param instanceof Date) ? JSON.stringify(param) : param);
67
+ }
11
68
  /**
12
69
  * Wrapper for the reserved connection from Bun SQL
13
70
  */
14
71
  class BunPooledConnection {
15
- constructor(reserved) {
72
+ constructor(reserved, textMode, datesAsStrings) {
16
73
  this.reserved = reserved;
74
+ this.textMode = textMode;
75
+ this.datesAsStrings = datesAsStrings;
17
76
  }
18
77
  async query(sql, params, _options) {
19
- const result = await this.reserved.unsafe(sql, params || []);
78
+ // Bun result sets are real arrays pass through without copying.
79
+ const result = await this.reserved.unsafe(sql, normalizeTextModeParams(params, this.textMode));
80
+ if (this.datesAsStrings) {
81
+ convertDatesToPgText(result);
82
+ }
20
83
  return {
21
- rows: Array.from(result),
84
+ rows: result,
22
85
  rowCount: result.count ?? result.length ?? null,
23
86
  };
24
87
  }
@@ -64,13 +127,18 @@ class BunClient extends database_client_interface_1.DatabaseClient {
64
127
  if (isBunSqlInstance(config)) {
65
128
  this.sql = config;
66
129
  this.ownsConnection = false;
130
+ this.usesTextResults = false;
131
+ this.datesAsStrings = false;
67
132
  }
68
133
  else {
134
+ const isOptionsObject = typeof config === 'object' && config !== null;
135
+ this.usesTextResults = isOptionsObject && config.prepare === false;
136
+ this.datesAsStrings = isOptionsObject && config.datesAsStrings === true;
137
+ // Strip linkgress-level extensions before handing the options to Bun.
138
+ const bunConfig = isOptionsObject ? { ...config, datesAsStrings: undefined } : config;
69
139
  try {
70
- // Bun's SQL is available via require('bun:sql') or import { SQL } from 'bun'
71
- // We try the bun:sql module first
72
- const { SQL } = require('bun:sql');
73
- this.sql = new SQL(config);
140
+ const SQL = resolveBunSqlConstructor();
141
+ this.sql = new SQL(bunConfig);
74
142
  this.ownsConnection = true;
75
143
  }
76
144
  catch (error) {
@@ -81,17 +149,21 @@ class BunClient extends database_client_interface_1.DatabaseClient {
81
149
  }
82
150
  }
83
151
  async query(sql, params, _options) {
84
- // Use unsafe() for parameterized queries (similar to postgres library)
85
- const result = await this.sql.unsafe(sql, params || []);
152
+ // Use unsafe() for parameterized queries (similar to postgres library).
153
+ // Bun result sets are real arrays pass through without copying.
154
+ const result = await this.sql.unsafe(sql, normalizeTextModeParams(params, this.usesTextResults));
155
+ if (this.datesAsStrings) {
156
+ convertDatesToPgText(result);
157
+ }
86
158
  return {
87
- rows: Array.from(result),
159
+ rows: result,
88
160
  rowCount: result.count ?? result.length ?? null,
89
161
  };
90
162
  }
91
163
  async connect() {
92
164
  // Bun SQL uses reserve() to get a dedicated connection from the pool
93
165
  const reserved = await this.sql.reserve();
94
- return new BunPooledConnection(reserved);
166
+ return new BunPooledConnection(reserved, this.usesTextResults, this.datesAsStrings);
95
167
  }
96
168
  async end() {
97
169
  // Only close the connection if we created it
@@ -109,9 +181,12 @@ class BunClient extends database_client_interface_1.DatabaseClient {
109
181
  async transaction(callback) {
110
182
  return await this.sql.begin(async (tx) => {
111
183
  const queryFn = async (sqlStr, params) => {
112
- const result = await tx.unsafe(sqlStr, params || []);
184
+ const result = await tx.unsafe(sqlStr, normalizeTextModeParams(params, this.usesTextResults));
185
+ if (this.datesAsStrings) {
186
+ convertDatesToPgText(result);
187
+ }
113
188
  return {
114
- rows: Array.from(result),
189
+ rows: result,
115
190
  rowCount: result.count ?? result.length ?? null,
116
191
  };
117
192
  };
@@ -125,6 +200,23 @@ class BunClient extends database_client_interface_1.DatabaseClient {
125
200
  supportsMultiStatementQueries() {
126
201
  return true;
127
202
  }
203
+ /**
204
+ * Normalize a Bun `.simple()` result into an array of result sets.
205
+ *
206
+ * For a SINGLE statement, `.simple()` returns the result set itself (an
207
+ * array of row objects); for MULTIPLE statements it returns an array with
208
+ * one result set per statement. Distinguish by element shape — a result
209
+ * set's elements are row objects, never arrays.
210
+ */
211
+ static normalizeSimpleResultSets(results) {
212
+ if (!Array.isArray(results)) {
213
+ return [results];
214
+ }
215
+ if (results.length > 0) {
216
+ return Array.isArray(results[0]) ? results : [results];
217
+ }
218
+ return typeof results.command === 'string' ? [results] : results;
219
+ }
128
220
  /**
129
221
  * Execute a multi-statement query using the simple protocol
130
222
  * This bypasses prepared statements and allows multiple statements
@@ -132,12 +224,22 @@ class BunClient extends database_client_interface_1.DatabaseClient {
132
224
  */
133
225
  async querySimple(sql) {
134
226
  const results = await this.sql.unsafe(sql).simple();
135
- // .simple() returns an array of results for each statement
136
- // Return the last non-empty result (usually the SELECT)
137
- const resultsArray = Array.isArray(results) ? results : [results];
138
- const lastResult = resultsArray[resultsArray.length - 1] || [];
227
+ const resultSets = BunClient.normalizeSimpleResultSets(results);
228
+ // Return the last ROW-BEARING result set (the SELECT) — Bun emits an
229
+ // entry per statement, so trailing row-less cleanup statements
230
+ // (DROP TABLE) must not shadow the data-bearing one.
231
+ let lastResult = [];
232
+ for (let i = resultSets.length - 1; i >= 0; i--) {
233
+ if ((resultSets[i]?.length ?? 0) > 0) {
234
+ lastResult = resultSets[i];
235
+ break;
236
+ }
237
+ }
238
+ if (this.datesAsStrings) {
239
+ convertDatesToPgText(lastResult);
240
+ }
139
241
  return {
140
- rows: Array.from(lastResult),
242
+ rows: lastResult,
141
243
  rowCount: lastResult.count ?? lastResult.length ?? null,
142
244
  };
143
245
  }
@@ -148,11 +250,15 @@ class BunClient extends database_client_interface_1.DatabaseClient {
148
250
  async querySimpleMulti(sql) {
149
251
  const results = await this.sql.unsafe(sql).simple();
150
252
  // Convert each result set to QueryResult format
151
- const resultsArray = Array.isArray(results) ? results : [results];
152
- return resultsArray.map((result) => ({
153
- rows: Array.from(result),
154
- rowCount: result.count ?? result.length ?? null,
155
- }));
253
+ return BunClient.normalizeSimpleResultSets(results).map((result) => {
254
+ if (this.datesAsStrings) {
255
+ convertDatesToPgText(result);
256
+ }
257
+ return {
258
+ rows: result,
259
+ rowCount: result.count ?? result.length ?? null,
260
+ };
261
+ });
156
262
  }
157
263
  /**
158
264
  * Bun SQL automatically uses binary protocol where appropriate
@@ -161,6 +267,20 @@ class BunClient extends database_client_interface_1.DatabaseClient {
161
267
  supportsBinaryProtocol() {
162
268
  return false; // No explicit control, but uses binary internally
163
269
  }
270
+ /**
271
+ * Bun ≤ 1.3.14 cannot decode BINARY array result columns (alignment panic /
272
+ * object-shaped arrays — see debug/bun-sql-binary-array-repro.ts), so by
273
+ * default query builders aggregate via json_agg instead of array_agg.
274
+ *
275
+ * With `prepare: false`, Bun uses unnamed statements with TEXT-format
276
+ * results whose array decoding is correct — native arrays work and the
277
+ * panic surface disappears entirely (raw SQL included), at ~0.05ms/query
278
+ * re-parse cost. In that mode this returns true and strategies keep
279
+ * array_agg.
280
+ */
281
+ supportsBinaryArrayResults() {
282
+ return this.usesTextResults;
283
+ }
164
284
  /**
165
285
  * Get access to the underlying Bun SQL instance for advanced use cases
166
286
  */
@@ -1 +1 @@
1
- {"version":3,"file":"bun-client.js","sourceRoot":"","sources":["../../src/database/bun-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bun-client.js","sourceRoot":"","sources":["../../src/database/bun-client.ts"],"names":[],"mappings":"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"}
@@ -102,6 +102,17 @@ export declare abstract class DatabaseClient {
102
102
  * Default: false
103
103
  */
104
104
  supportsBinaryProtocol(): boolean;
105
+ /**
106
+ * Whether the driver can decode native PostgreSQL ARRAY result columns
107
+ * (int[], text[], ...) in parameterized queries.
108
+ *
109
+ * Bun's SQL client (≤ 1.3.14) cannot: binary array results either panic the
110
+ * runtime ("incorrect alignment") or decode as numeric-keyed objects. When
111
+ * this returns false, query builders emit json_agg-based aggregations
112
+ * instead of array_agg so no native array ever reaches the wire.
113
+ * Default: true.
114
+ */
115
+ supportsBinaryArrayResults(): boolean;
105
116
  }
106
117
  /**
107
118
  * A wrapper client that routes queries through a transactional connection.
@@ -119,5 +130,6 @@ export declare class TransactionalClient extends DatabaseClient {
119
130
  transaction<T>(_callback: (query: (sql: string, params?: any[], options?: QueryExecutionOptions) => Promise<QueryResult>) => Promise<T>): Promise<T>;
120
131
  supportsMultiStatementQueries(): boolean;
121
132
  supportsBinaryProtocol(): boolean;
133
+ supportsBinaryArrayResults(): boolean;
122
134
  }
123
135
  //# sourceMappingURL=database-client.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"database-client.interface.d.ts","sourceRoot":"","sources":["../../src/database/database-client.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database-client.interface.d.ts","sourceRoot":"","sources":["../../src/database/database-client.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,yEAAyE;IACzE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEb,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAS5D;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,8BAAsB,cAAc;IAClC;;OAEG;IACH,eAAe,IAAI,OAAO;IAG1B;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE9G;;OAEG;IACH,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAE7C;;OAEG;IACH,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,aAAa,IAAI,MAAM;IAEhC;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAE5J;;;;;;OAMG;IACH,6BAA6B,IAAI,OAAO;IAIxC;;;OAGG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;;;;;;;;OASG;IACH,0BAA0B,IAAI,OAAO;CAGtC;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,cAAc;IAEnD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,YAAY;gBADZ,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,WAAW,CAAC,EAC/F,YAAY,EAAE,cAAc;IAKtC,eAAe,IAAI,OAAO;IAIpB,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAQrG,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAKpC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,aAAa,IAAI,MAAM;IAIjB,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAK1J,6BAA6B,IAAI,OAAO;IAIxC,sBAAsB,IAAI,OAAO;IAIjC,0BAA0B,IAAI,OAAO;CAGtC"}
@@ -48,6 +48,19 @@ class DatabaseClient {
48
48
  supportsBinaryProtocol() {
49
49
  return false;
50
50
  }
51
+ /**
52
+ * Whether the driver can decode native PostgreSQL ARRAY result columns
53
+ * (int[], text[], ...) in parameterized queries.
54
+ *
55
+ * Bun's SQL client (≤ 1.3.14) cannot: binary array results either panic the
56
+ * runtime ("incorrect alignment") or decode as numeric-keyed objects. When
57
+ * this returns false, query builders emit json_agg-based aggregations
58
+ * instead of array_agg so no native array ever reaches the wire.
59
+ * Default: true.
60
+ */
61
+ supportsBinaryArrayResults() {
62
+ return true;
63
+ }
51
64
  }
52
65
  exports.DatabaseClient = DatabaseClient;
53
66
  /**
@@ -90,6 +103,9 @@ class TransactionalClient extends DatabaseClient {
90
103
  supportsBinaryProtocol() {
91
104
  return this.parentClient.supportsBinaryProtocol();
92
105
  }
106
+ supportsBinaryArrayResults() {
107
+ return this.parentClient.supportsBinaryArrayResults();
108
+ }
93
109
  }
94
110
  exports.TransactionalClient = TransactionalClient;
95
111
  //# sourceMappingURL=database-client.interface.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"database-client.interface.js","sourceRoot":"","sources":["../../src/database/database-client.interface.ts"],"names":[],"mappings":";;;AAqCA;;;;;;;GAOG;AACH,MAAa,iBAAkB,SAAQ,KAAK;IAQ1C,YAAY,SAAiB,EAAE,GAAW,EAAE,KAAe;QACzD,KAAK,CAAC,iCAAiC,SAAS,sBAAsB,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,mEAAmE;QACnE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;CACF;AAjBD,8CAiBC;AAWD;;GAEG;AACH,MAAsB,cAAc;IAClC;;OAEG;IACH,eAAe;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IA8BD;;;;;;OAMG;IACH,6BAA6B;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,sBAAsB;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAtDD,wCAsDC;AAED;;;GAGG;AACH,MAAa,mBAAoB,SAAQ,cAAc;IACrD,YACU,OAA+F,EAC/F,YAA4B;QAEpC,KAAK,EAAE,CAAC;QAHA,YAAO,GAAP,OAAO,CAAwF;QAC/F,iBAAY,GAAZ,YAAY,CAAgB;IAGtC,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAK,CAAU,GAAW,EAAE,MAAc,EAAE,OAA+B;QAC/E,gFAAgF;QAChF,iFAAiF;QACjF,6EAA6E;QAC7E,kDAAkD;QAClD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAmB,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,OAAO;QACX,gEAAgE;QAChE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,GAAG;QACP,6DAA6D;IAC/D,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,WAAW,CAAI,SAAwH;QAC3I,+EAA+E;QAC/E,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,6BAA6B;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,6BAA6B,EAAE,CAAC;IAC3D,CAAC;IAED,sBAAsB;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC;IACpD,CAAC;CACF;AA7CD,kDA6CC"}
1
+ {"version":3,"file":"database-client.interface.js","sourceRoot":"","sources":["../../src/database/database-client.interface.ts"],"names":[],"mappings":";;;AAqCA;;;;;;;GAOG;AACH,MAAa,iBAAkB,SAAQ,KAAK;IAQ1C,YAAY,SAAiB,EAAE,GAAW,EAAE,KAAe;QACzD,KAAK,CAAC,iCAAiC,SAAS,sBAAsB,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,mEAAmE;QACnE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;CACF;AAjBD,8CAiBC;AAWD;;GAEG;AACH,MAAsB,cAAc;IAClC;;OAEG;IACH,eAAe;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IA8BD;;;;;;OAMG;IACH,6BAA6B;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,sBAAsB;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;OASG;IACH,0BAA0B;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AApED,wCAoEC;AAED;;;GAGG;AACH,MAAa,mBAAoB,SAAQ,cAAc;IACrD,YACU,OAA+F,EAC/F,YAA4B;QAEpC,KAAK,EAAE,CAAC;QAHA,YAAO,GAAP,OAAO,CAAwF;QAC/F,iBAAY,GAAZ,YAAY,CAAgB;IAGtC,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAK,CAAU,GAAW,EAAE,MAAc,EAAE,OAA+B;QAC/E,gFAAgF;QAChF,iFAAiF;QACjF,6EAA6E;QAC7E,kDAAkD;QAClD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAmB,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,OAAO;QACX,gEAAgE;QAChE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,GAAG;QACP,6DAA6D;IAC/D,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,WAAW,CAAI,SAAwH;QAC3I,+EAA+E;QAC/E,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,6BAA6B;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,6BAA6B,EAAE,CAAC;IAC3D,CAAC;IAED,sBAAsB;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAC;IACpD,CAAC;IAED,0BAA0B;QACxB,OAAO,IAAI,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC;IACxD,CAAC;CACF;AAjDD,kDAiDC"}
@@ -1,4 +1,5 @@
1
- export { DatabaseClient, PooledConnection, QueryResult, QueryTimeoutError } from './database-client.interface';
1
+ export { DatabaseClient, QueryTimeoutError, } from './database-client.interface';
2
+ export type { PooledConnection, QueryResult, } from './database-client.interface';
2
3
  export type { QueryExecutionOptions } from './database-client.interface';
3
4
  export { PostgresClient } from './postgres-client';
4
5
  export { PgClient } from './pg-client';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC/G,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,gBAAgB,EAChB,WAAW,GACZ,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":";;;AAAA,yEAA+G;AAAtG,2HAAA,cAAc,OAAA;AAAiC,8HAAA,iBAAiB,OAAA;AAEzE,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":";;;AAAA,yEAGqC;AAFnC,2HAAA,cAAc,OAAA;AACd,8HAAA,iBAAiB,OAAA;AAQnB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA"}
@@ -16,7 +16,7 @@ export declare class PgClient extends DatabaseClient {
16
16
  * @param config - Either a PoolConfig object or an existing pg.Pool instance
17
17
  */
18
18
  constructor(config: PoolConfig | Pool);
19
- query<T = any>(sql: string, params?: any[], options?: QueryExecutionOptions): Promise<QueryResult<T>>;
19
+ query<T = any>(sql: string, params?: any[], _options?: QueryExecutionOptions): Promise<QueryResult<T>>;
20
20
  connect(): Promise<PooledConnection>;
21
21
  end(): Promise<void>;
22
22
  getDriverName(): string;
@@ -32,7 +32,10 @@ export declare class PgClient extends DatabaseClient {
32
32
  */
33
33
  supportsMultiStatementQueries(): boolean;
34
34
  /**
35
- * pg library supports binary protocol via rowMode option
35
+ * pg has no binary result protocol toggle. The previous implementation
36
+ * mapped `useBinaryProtocol` to pg's `rowMode: 'array'`, which is NOT the
37
+ * binary protocol — it changes the row SHAPE to positional arrays and would
38
+ * corrupt every column-name-based result mapping downstream.
36
39
  */
37
40
  supportsBinaryProtocol(): boolean;
38
41
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pg-client.d.ts","sourceRoot":"","sources":["../../src/database/pg-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,KAAK,IAAI,GAAG,GAAG,CAAC;AAmChB;;;;;;GAMG;AACH,qBAAa,QAAS,SAAQ,cAAc;IAC1C,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,cAAc,CAAU;IAEhC;;;OAGG;gBACS,MAAM,EAAE,UAAU,GAAG,IAAI;IAsB/B,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAcrG,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAKpC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1B,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACG,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAyBxH;;;;OAIG;IACH,6BAA6B,IAAI,OAAO;IAIxC;;OAEG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;OAEG;IACH,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"pg-client.d.ts","sourceRoot":"","sources":["../../src/database/pg-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,KAAK,IAAI,GAAG,GAAG,CAAC;AA8BhB;;;;;;GAMG;AACH,qBAAa,QAAS,SAAQ,cAAc;IAC1C,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,cAAc,CAAU;IAEhC;;;OAGG;gBACS,MAAM,EAAE,UAAU,GAAG,IAAI;IAkC/B,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAStG,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAKpC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1B,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACG,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAyBxH;;;;OAIG;IACH,6BAA6B,IAAI,OAAO;IAIxC;;;;;OAKG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;OAEG;IACH,OAAO,IAAI,IAAI;CAGhB"}
@@ -15,12 +15,8 @@ class PgPooledConnection {
15
15
  constructor(client) {
16
16
  this.client = client;
17
17
  }
18
- async query(sql, params, options) {
19
- // pg library supports binary protocol via types option
20
- const queryConfig = options?.useBinaryProtocol
21
- ? { text: sql, values: params, rowMode: 'array' }
22
- : { text: sql, values: params };
23
- const result = await this.client.query(queryConfig);
18
+ async query(sql, params, _options) {
19
+ const result = await this.client.query(sql, params);
24
20
  return {
25
21
  rows: result.rows,
26
22
  rowCount: result.rowCount,
@@ -50,24 +46,29 @@ class PgClient extends database_client_interface_1.DatabaseClient {
50
46
  this.ownsConnection = false;
51
47
  }
52
48
  else {
49
+ let Pool;
53
50
  try {
54
51
  // eslint-disable-next-line @typescript-eslint/no-var-requires
55
- const { Pool } = require('pg');
56
- this.pool = new Pool(config);
57
- this.ownsConnection = true;
52
+ const pgModule = require('pg');
53
+ // Under ESM-interop loaders require() can return a module-namespace
54
+ // object ({ default: ... }) — unwrap it (same fix as PostgresClient).
55
+ Pool = pgModule?.Pool ?? pgModule?.default?.Pool;
58
56
  }
59
57
  catch (error) {
60
58
  throw new Error('PgClient requires the "pg" package to be installed. ' +
61
59
  'Install it with: npm install pg');
62
60
  }
61
+ if (typeof Pool !== 'function') {
62
+ throw new Error('The "pg" package did not expose a Pool constructor (unexpected module shape).');
63
+ }
64
+ // Outside the try/catch: a pool-construction error (e.g. invalid options)
65
+ // must propagate as-is, not masquerade as a missing package.
66
+ this.pool = new Pool(config);
67
+ this.ownsConnection = true;
63
68
  }
64
69
  }
65
- async query(sql, params, options) {
66
- // pg library supports binary protocol via types option
67
- const queryConfig = options?.useBinaryProtocol
68
- ? { text: sql, values: params, rowMode: 'array' }
69
- : { text: sql, values: params };
70
- const result = await this.pool.query(queryConfig);
70
+ async query(sql, params, _options) {
71
+ const result = await this.pool.query(sql, params);
71
72
  return {
72
73
  rows: result.rows,
73
74
  rowCount: result.rowCount,
@@ -122,10 +123,13 @@ class PgClient extends database_client_interface_1.DatabaseClient {
122
123
  return false;
123
124
  }
124
125
  /**
125
- * pg library supports binary protocol via rowMode option
126
+ * pg has no binary result protocol toggle. The previous implementation
127
+ * mapped `useBinaryProtocol` to pg's `rowMode: 'array'`, which is NOT the
128
+ * binary protocol — it changes the row SHAPE to positional arrays and would
129
+ * corrupt every column-name-based result mapping downstream.
126
130
  */
127
131
  supportsBinaryProtocol() {
128
- return true;
132
+ return false;
129
133
  }
130
134
  /**
131
135
  * Get access to the underlying pg Pool for advanced use cases
@@ -1 +1 @@
1
- {"version":3,"file":"pg-client.js","sourceRoot":"","sources":["../../src/database/pg-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pg-client.js","sourceRoot":"","sources":["../../src/database/pg-client.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,15 @@ export declare class PostgresClient extends DatabaseClient {
36
36
  * This allows true single round-trip optimization
37
37
  */
38
38
  supportsMultiStatementQueries(): boolean;
39
+ /**
40
+ * Normalize a porsager `.simple()` result into an array of result sets.
41
+ *
42
+ * For a SINGLE statement, `.simple()` returns the RowList itself (an array of
43
+ * row objects carrying a string `command`); for MULTIPLE statements it
44
+ * returns a plain array of RowLists. Distinguish by element shape — a result
45
+ * set's elements are row objects, never arrays.
46
+ */
47
+ private static normalizeSimpleResultSets;
39
48
  /**
40
49
  * Execute a multi-statement query using the simple protocol
41
50
  * This bypasses prepared statements and allows multiple statements
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-client.d.ts","sourceRoot":"","sources":["../../src/database/postgres-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAqB,MAAM,6BAA6B,CAAC;AACtI,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,KAAK,GAAG,GAAG,GAAG,CAAC;AAsJf;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,cAAc,CAAU;IAChC,yEAAyE;IACzE,OAAO,CAAC,uBAAuB,CAAC,CAAS;IAEzC;;;OAGG;gBACS,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,GAAG;IAsBlD;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAyBjB,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAMrG,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAOpC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1B,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,6BAA6B,IAAI,OAAO;IAIxC;;;;OAIG;IACG,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAahE;;;OAGG;IACG,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAU3D;;;OAGG;IACG,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI9D;;;OAGG;IACG,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAYzJ;;;OAGG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;OAEG;IACH,MAAM,IAAI,GAAG;CAGd"}
1
+ {"version":3,"file":"postgres-client.d.ts","sourceRoot":"","sources":["../../src/database/postgres-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAqB,MAAM,6BAA6B,CAAC;AACtI,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,KAAK,GAAG,GAAG,GAAG,CAAC;AA6Jf;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,cAAc,CAAU;IAChC,yEAAyE;IACzE,OAAO,CAAC,uBAAuB,CAAC,CAAS;IAEzC;;;OAGG;gBACS,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,GAAG;IAmClD;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAyBjB,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAMrG,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAcpC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1B,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,6BAA6B,IAAI,OAAO;IAIxC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAQxC;;;;OAIG;IACG,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAqBhE;;;OAGG;IACG,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAU3D;;;OAGG;IACG,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI9D;;;OAGG;IACG,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,KAAK,OAAO,CAAC,WAAW,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAYzJ;;;OAGG;IACH,sBAAsB,IAAI,OAAO;IAIjC;;OAEG;IACH,MAAM,IAAI,GAAG;CAGd"}