@spinajs/orm-mysql 2.0.480 → 2.0.482

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,60 @@
1
- import { QueryContext, OrmDriver, IColumnDescriptor, QueryBuilder, TransactionCallback, ServerResponseMapper, ISupportedFeature, ITransaction } from '@spinajs/orm';
1
+ import { QueryContext, OrmDriver, IColumnDescriptor, ServerResponseMapper, ISupportedFeature, IsolationLevel, ITransactionContext, ITransactionOptions, IPoolMetrics } from '@spinajs/orm';
2
2
  import { SqlDriver } from '@spinajs/orm-sql';
3
3
  import * as mysql from 'mysql2';
4
4
  import { PoolConnection } from 'mysql2';
5
5
  import { Client as SSHClient } from 'ssh2';
6
- import { AsyncLocalStorage } from 'async_hooks';
7
- export interface IMySqlTransactionContext {
6
+ export interface IMySqlTransactionContext extends ITransactionContext {
8
7
  connection: PoolConnection;
9
8
  }
10
9
  export declare class MysqlServerResponseMapper extends ServerResponseMapper {
11
10
  read(data: any): {
12
11
  LastInsertId: any;
13
12
  RowsAffected: any;
13
+ Returning: any[];
14
14
  };
15
15
  }
16
16
  export declare class MySqlOrmDriver extends SqlDriver {
17
17
  protected Pool: mysql.Pool;
18
- protected _executionId: number;
19
- protected TransactionStorage: AsyncLocalStorage<IMySqlTransactionContext>;
20
- private getNextExecutionId;
18
+ /**
19
+ * MySQL/InnoDB honours all four standard levels.
20
+ */
21
+ readonly SupportedIsolationLevels: IsolationLevel[];
21
22
  executeOnDb(stmt: string, params: any[], context: QueryContext): Promise<any>;
23
+ /**
24
+ * True when the error means the transport died rather than the statement being wrong.
25
+ */
26
+ protected isRetryableError(err: unknown): boolean;
27
+ protected _executeOnDbOnce(stmt: string, params: any[], context: QueryContext): Promise<any>;
22
28
  supportedFeatures(): ISupportedFeature;
23
29
  resolve(): void;
30
+ /**
31
+ * mysql2 keeps its pool bookkeeping on the internal `_allConnections` / `_freeConnections` /
32
+ * `_connectionQueue` lists. They are not public API, so every read is guarded — a mysql2
33
+ * upgrade that renames them degrades to zeros rather than crashing the health check.
34
+ */
35
+ poolMetrics(): IPoolMetrics;
24
36
  ping(): Promise<boolean>;
25
37
  connect(): Promise<OrmDriver>;
26
38
  disconnect(): Promise<OrmDriver>;
27
39
  tableInfo(name: string, schema?: string): Promise<IColumnDescriptor[]>;
28
- transaction(queryOrCallback?: QueryBuilder<any>[] | TransactionCallback): Promise<ITransaction>;
40
+ /**
41
+ * Pulls the pooled connection out of a transaction context. The base class only ever hands
42
+ * us contexts this driver's own `_begin` produced, so the cast is safe.
43
+ */
44
+ private txConnection;
45
+ /**
46
+ * Runs a statement on the transaction's own connection, bypassing the ambient-context lookup
47
+ * in `executeOnDb`. Transaction control statements must never land on a pooled connection
48
+ * other than their own.
49
+ */
50
+ private runOnConnection;
51
+ protected _begin(options?: ITransactionOptions): Promise<ITransactionContext>;
52
+ protected _commit(ctx: ITransactionContext): Promise<void>;
53
+ protected _rollback(ctx: ITransactionContext): Promise<void>;
54
+ protected _savepoint(ctx: ITransactionContext, name: string): Promise<void>;
55
+ protected _releaseSavepoint(ctx: ITransactionContext, name: string): Promise<void>;
56
+ protected _rollbackToSavepoint(ctx: ITransactionContext, name: string): Promise<void>;
57
+ protected _dispose(ctx: ITransactionContext): Promise<void>;
29
58
  }
30
59
  export declare class MySqlSSHOrmDriver extends MySqlOrmDriver {
31
60
  protected SshClient: SSHClient;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,EAAqC,oBAAoB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACvM,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAY,cAAc,EAAe,MAAM,QAAQ,CAAC;AAG/D,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED,qBAAa,yBAA0B,SAAQ,oBAAoB;IAC1D,IAAI,CAAC,IAAI,EAAE,GAAG;;;;CAGtB;AAED,qBAEa,cAAe,SAAQ,SAAS;IAC3C,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;IAC3B,SAAS,CAAC,YAAY,SAAK;IAC3B,SAAS,CAAC,kBAAkB,8CAAqD;IAEjF,OAAO,CAAC,kBAAkB;IAKnB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;IAkF7E,iBAAiB,IAAI,iBAAiB;IAItC,OAAO;IAOD,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAS9B,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;IAyC7B,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAkB1B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAiD5E,WAAW,CAAC,eAAe,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;CA6EvG;AAED,qBAEa,iBAAkB,SAAQ,cAAc;IACnD,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;IAExB,OAAO;IAYD,UAAU;IAUhB,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;CAuCrC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAqC,oBAAoB,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAmB,YAAY,EAAE,MAAM,cAAc,CAAC;AAC/O,OAAO,EAAoB,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,KAAK,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAY,cAAc,EAAe,MAAM,QAAQ,CAAC;AAG/D,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAG3C,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED,qBAAa,yBAA0B,SAAQ,oBAAoB;IAC1D,IAAI,CAAC,IAAI,EAAE,GAAG;;;mBAKA,GAAG,EAAE;;CAG3B;AAED,qBAEa,cAAe,SAAQ,SAAS;IAC3C,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;IAK3B;;OAEG;IACH,SAAgB,wBAAwB,EAAE,cAAc,EAAE,CAA6E;IAEhI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;IAMpF;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IA0BjD,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;IA6FrF,iBAAiB,IAAI,iBAAiB;IAQtC,OAAO;IAOd;;;;OAIG;IACI,WAAW,IAAI,YAAY;IAarB,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAW9B,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;IAmD7B,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAqB1B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA8DnF;;;OAGG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAMvB,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkC7E,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlF,SAAS,CAAC,oBAAoB,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAIrE,QAAQ,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlE;AAED,qBAEa,iBAAkB,SAAQ,cAAc;IACnD,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;IAExB,OAAO;IAYD,UAAU;IAUhB,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;CA4CrC"}
package/lib/mjs/index.js CHANGED
@@ -6,105 +6,174 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  /* eslint-disable promise/no-promise-in-callback */
8
8
  import { Injectable, NewInstance } from '@spinajs/di';
9
- import { LogLevel } from '@spinajs/log';
10
- import { QueryContext, TableExistsCompiler, OrmException, ServerResponseMapper } from '@spinajs/orm';
11
- import { SqlDriver } from '@spinajs/orm-sql';
9
+ // No LogLevel import: master moved per-query timing out of every driver and into a single
10
+ // `Perf.measure('orm.query', ...)` around SqlDriver.execute, so duplicating it here would
11
+ // emit the same query twice. QueryBuilder / TransactionCallback / ITransaction are gone with
12
+ // the old `{ commit, rollback }` transaction shape this branch replaced. ConnectionState /
13
+ // IPoolMetrics are orm-infra's connection-resilience + pool-telemetry work.
14
+ import { QueryContext, TableExistsCompiler, OrmException, ServerResponseMapper, ConnectionState } from '@spinajs/orm';
15
+ import { escapeIdentifier, SqlDriver } from '@spinajs/orm-sql';
12
16
  import * as mysql from 'mysql2';
13
17
  import { MySqlTableExistsCompiler } from './compilers.js';
14
18
  import { Client as SSHClient } from 'ssh2';
15
19
  import fs from 'fs';
16
- import { AsyncLocalStorage } from 'async_hooks';
17
20
  export class MysqlServerResponseMapper extends ServerResponseMapper {
18
21
  read(data) {
19
- return { LastInsertId: data.LastInsertId, RowsAffected: data.RowsAffected };
22
+ // MySQL has no RETURNING; the identity value is all it reports.
23
+ return {
24
+ LastInsertId: data?.LastInsertId ?? 0,
25
+ RowsAffected: data?.RowsAffected ?? 0,
26
+ Returning: [],
27
+ };
20
28
  }
21
29
  }
22
30
  let MySqlOrmDriver = class MySqlOrmDriver extends SqlDriver {
23
31
  constructor() {
24
32
  super(...arguments);
25
- this._executionId = 0;
26
- this.TransactionStorage = new AsyncLocalStorage();
27
- }
28
- getNextExecutionId() {
29
- this._executionId = (this._executionId + 1) % Number.MAX_SAFE_INTEGER;
30
- return this._executionId;
33
+ // `_executionId` went with the per-driver query timing master centralised.
34
+ // `TransactionStorage` is no longer declared here either — it moved up to OrmDriver so
35
+ // ambient-connection propagation is part of the contract rather than a MySQL detail.
36
+ /**
37
+ * MySQL/InnoDB honours all four standard levels.
38
+ */
39
+ this.SupportedIsolationLevels = ['READ UNCOMMITTED', 'READ COMMITTED', 'REPEATABLE READ', 'SERIALIZABLE'];
31
40
  }
32
41
  executeOnDb(stmt, params, context) {
42
+ // Reads and writes are both retried: `withReconnect` only re-runs on transport failures,
43
+ // where the statement provably never reached the server.
44
+ return this.withReconnect(() => this._executeOnDbOnce(stmt, params, context));
45
+ }
46
+ /**
47
+ * True when the error means the transport died rather than the statement being wrong.
48
+ */
49
+ isRetryableError(err) {
50
+ // Inside a transaction the connection carried uncommitted state. Reconnecting and replaying
51
+ // one statement would silently apply it OUTSIDE the transaction, so the error must surface.
52
+ if (this.TransactionStorage.getStore()) {
53
+ return false;
54
+ }
55
+ if (super.isRetryableError(err)) {
56
+ return true;
57
+ }
58
+ // mysql2 marks connection-level failures fatal; a fatal error means the connection is gone
59
+ // regardless of which code came with it.
60
+ let current = err;
61
+ let depth = 0;
62
+ while (current && depth < 5) {
63
+ if (current.fatal === true) {
64
+ return true;
65
+ }
66
+ current = current.inner ?? current.cause;
67
+ depth++;
68
+ }
69
+ return false;
70
+ }
71
+ _executeOnDbOnce(stmt, params, context) {
33
72
  const self = this;
34
- const tName = `query-${this.getNextExecutionId()}`;
35
- this.Log.timeStart(`query-${tName}`);
36
- // Check if we're inside a transaction context and use that connection
73
+ // Check if we're inside a transaction context and use that connection.
74
+ // The context comes from the base driver, so `connection` is typed loosely there; only
75
+ // this driver's `_begin` ever populates it, and it always puts a PoolConnection in.
37
76
  const txContext = this.TransactionStorage.getStore();
38
- const queryable = txContext?.connection ?? this.Pool;
39
77
  return new Promise((resolve, reject) => {
40
- queryable.query(stmt, params, function (err, results) {
41
- if (err) {
42
- return reject(new OrmException(`Error executing orm command `, {
43
- Host: self.Options.Host,
44
- User: self.Options.User,
45
- Name: self.Options.Name,
46
- }, stmt, params, err));
78
+ const fail = (err) => reject(new OrmException(`Error executing orm command `, {
79
+ Host: self.Options.Host,
80
+ User: self.Options.User,
81
+ Name: self.Options.Name,
82
+ }, stmt, params, err));
83
+ const run = (queryable, done) => {
84
+ try {
85
+ queryable.query(stmt, params, function (err, results) {
86
+ done();
87
+ if (err) {
88
+ return fail(err);
89
+ }
90
+ switch (context) {
91
+ case QueryContext.Update:
92
+ case QueryContext.Delete:
93
+ resolve({
94
+ RowsAffected: results.affectedRows,
95
+ });
96
+ break;
97
+ case QueryContext.Insert:
98
+ case QueryContext.Upsert:
99
+ resolve({
100
+ RowsAffected: results.affectedRows,
101
+ LastInsertId: results.insertId,
102
+ Returning: [],
103
+ });
104
+ break;
105
+ default:
106
+ resolve(results);
107
+ break;
108
+ }
109
+ });
47
110
  }
48
- switch (context) {
49
- case QueryContext.Update:
50
- case QueryContext.Delete:
51
- resolve({
52
- RowsAffected: results.affectedRows,
53
- });
54
- break;
55
- case QueryContext.Insert:
56
- case QueryContext.Upsert:
57
- resolve({
58
- RowsAffected: results.affectedRows,
59
- LastInsertId: results.insertId,
60
- });
61
- break;
62
- default:
63
- resolve(results);
64
- break;
111
+ catch (err) {
112
+ // A synchronous throw would otherwise strand the connection outside the pool.
113
+ done();
114
+ fail(err);
65
115
  }
116
+ };
117
+ if (txContext?.connection) {
118
+ // A transaction owns its connection for its whole lifetime — releasing it after one
119
+ // statement would hand the rest of the transaction to a different connection.
120
+ run(txContext.connection, () => undefined);
121
+ return;
122
+ }
123
+ // Acquiring is the part that queues when the pool is saturated, so it is the part worth
124
+ // timing. Taking the connection explicitly, instead of letting `Pool.query` do it out of
125
+ // sight, is what makes `orm_pool_acquire_seconds` a real number instead of always zero.
126
+ const acquireStart = process.hrtime.bigint();
127
+ this.Pool.getConnection((err, connection) => {
128
+ const seconds = Number(process.hrtime.bigint() - acquireStart) / 1e9;
129
+ this.observeAcquireSeconds(seconds);
130
+ if (err) {
131
+ fail(err);
132
+ return;
133
+ }
134
+ let released = false;
135
+ run(connection, () => {
136
+ if (released) {
137
+ return;
138
+ }
139
+ released = true;
140
+ connection.release();
141
+ });
66
142
  });
67
- })
68
- .then((val) => {
69
- const tDiff = this.Log.timeEnd(`query-${tName}`);
70
- void this.Log.write({
71
- Level: LogLevel.Trace,
72
- Variables: {
73
- error: undefined,
74
- message: `Executed: ${stmt}, bindings: ${params ? params.join(',') : 'none'}`,
75
- logger: this.Log.Name,
76
- level: 'TRACE',
77
- duration: tDiff,
78
- },
79
- });
80
- return val;
81
- })
82
- .catch((err) => {
83
- const tDiff = this.Log.timeEnd(`query-${tName}`);
84
- void this.Log.write({
85
- Level: LogLevel.Error,
86
- Variables: {
87
- error: err,
88
- message: `Failed: ${stmt}, bindings: ${params ? params.join(',') : 'none'}`,
89
- logger: this.Log.Name,
90
- level: 'Error',
91
- duration: tDiff,
92
- },
93
- });
94
- throw err;
95
143
  });
96
144
  }
97
145
  supportedFeatures() {
98
- return { events: true };
146
+ // insertIdIsFirstOfBatch: a multi-row `INSERT ... VALUES` is a *simple insert* to InnoDB
147
+ // ( row count known before execution ), so it reserves one contiguous block of
148
+ // auto-increment values and LAST_INSERT_ID() reports the first of them. True even under
149
+ // innodb_autoinc_lock_mode = 2, the MySQL 8 default.
150
+ return { events: true, insertReturning: false, insertIdIsFirstOfBatch: true };
99
151
  }
100
152
  resolve() {
101
153
  super.resolve();
102
154
  this.Container.register(MySqlTableExistsCompiler).as(TableExistsCompiler);
103
155
  this.Container.register(MysqlServerResponseMapper).as(ServerResponseMapper);
104
156
  }
157
+ /**
158
+ * mysql2 keeps its pool bookkeeping on the internal `_allConnections` / `_freeConnections` /
159
+ * `_connectionQueue` lists. They are not public API, so every read is guarded — a mysql2
160
+ * upgrade that renames them degrades to zeros rather than crashing the health check.
161
+ */
162
+ poolMetrics() {
163
+ const pool = this.Pool;
164
+ const size = pool?._allConnections?.length ?? 0;
165
+ const free = pool?._freeConnections?.length ?? 0;
166
+ return {
167
+ Size: size,
168
+ InUse: Math.max(size - free, 0),
169
+ Waiting: pool?._connectionQueue?.length ?? 0,
170
+ };
171
+ }
105
172
  async ping() {
106
173
  try {
107
- await this.executeOnDb('SELECT 1', [], QueryContext.Select);
174
+ // deliberately bypasses `withReconnect` — a health probe that reconnects on its own
175
+ // would turn one dead connection into a reconnect storm on every tick.
176
+ await this._executeOnDbOnce('SELECT 1', [], QueryContext.Select);
108
177
  return true;
109
178
  }
110
179
  catch {
@@ -114,6 +183,7 @@ let MySqlOrmDriver = class MySqlOrmDriver extends SqlDriver {
114
183
  connect() {
115
184
  return new Promise((resolve, reject) => {
116
185
  try {
186
+ const pool = this.resolvedPoolOptions();
117
187
  this.Pool = mysql.createPool({
118
188
  host: this.Options.Host,
119
189
  user: this.Options.User,
@@ -121,7 +191,14 @@ let MySqlOrmDriver = class MySqlOrmDriver extends SqlDriver {
121
191
  port: this.Options.Port,
122
192
  database: this.Options.Database,
123
193
  waitForConnections: true,
124
- connectionLimit: this.Options.PoolLimit,
194
+ connectionLimit: pool.Max,
195
+ // mysql2's `maxIdle` is a CEILING on idle connections, not a floor, and it never
196
+ // pre-warms the pool — so there is no direct equivalent of `Pool.Min`. Passing Min
197
+ // straight through would set maxIdle to 0 by default and make mysql2 destroy every
198
+ // released connection, i.e. disable pooling. Instead: an explicit Min becomes the
199
+ // number of connections we let sit idle; Min = 0 keeps mysql2's own default (Max).
200
+ maxIdle: pool.Min > 0 ? pool.Min : pool.Max,
201
+ idleTimeout: pool.IdleTimeout,
125
202
  queueLimit: 0,
126
203
  });
127
204
  // Test the pool connection
@@ -135,6 +212,7 @@ let MySqlOrmDriver = class MySqlOrmDriver extends SqlDriver {
135
212
  }
136
213
  // Release the test connection
137
214
  connection.release();
215
+ this.setState(ConnectionState.Connected);
138
216
  resolve(this);
139
217
  });
140
218
  }
@@ -152,6 +230,8 @@ let MySqlOrmDriver = class MySqlOrmDriver extends SqlDriver {
152
230
  });
153
231
  }
154
232
  disconnect() {
233
+ this.stopHealthCheck();
234
+ this.setState(ConnectionState.Disconnected);
155
235
  return new Promise((resolve, reject) => {
156
236
  if (!this.Pool) {
157
237
  resolve(this);
@@ -169,21 +249,31 @@ let MySqlOrmDriver = class MySqlOrmDriver extends SqlDriver {
169
249
  });
170
250
  }
171
251
  async tableInfo(name, schema) {
172
- const tblInfo = (await this.executeOnDb(`SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=? ${schema ? 'AND TABLE_SCHEMA=?' : ''} `, schema ? [name, schema] : [name], QueryContext.Select));
173
- const isView = (await this.executeOnDb(`SHOW FULL TABLES where \`Tables_in_${schema}\`='${name}'`, [], QueryContext.Select));
252
+ const dbSchema = schema ?? this.Options.Database;
253
+ if (!dbSchema) {
254
+ throw new OrmException(`Cannot read table info for '${name}': no schema/database configured for this connection ( pass a schema or set Options.Database )`);
255
+ }
256
+ // backtick-quote an identifier, escaping embedded backticks by doubling them
257
+ const escapeId = (id) => '`' + String(id).replace(/`/g, '``') + '`';
258
+ // ORDER BY ORDINAL_POSITION is not decoration. Without it MySQL is free to return the rows
259
+ // in any order — and does: the same table came back as (Code, TenantId) in one run and
260
+ // (TenantId, Code) in the next. Column order is part of what a table descriptor means, so
261
+ // it has to be the table's own order, not whatever the optimizer produced this time.
262
+ const tblInfo = (await this.executeOnDb(`SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=? AND TABLE_SCHEMA=? ORDER BY ORDINAL_POSITION`, [name, dbSchema], QueryContext.Select));
263
+ const isView = (await this.executeOnDb(`SHOW FULL TABLES FROM ${escapeId(dbSchema)} WHERE ${escapeId(`Tables_in_${dbSchema}`)}=?`, [name], QueryContext.Select));
174
264
  let indexInfo = [];
175
265
  if (!isView || isView.length === 0) {
176
- throw new OrmException(`Table ${schema}.${name} does not exist`);
266
+ throw new OrmException(`Table ${dbSchema}.${name} does not exist`);
177
267
  }
178
268
  if (!tblInfo || !Array.isArray(tblInfo) || tblInfo.length === 0) {
179
- this.Log.trace(`Table ${schema}.${name} does not have any columns.`);
269
+ this.Log.trace(`Table ${dbSchema}.${name} does not have any columns.`);
180
270
  return null;
181
271
  }
182
272
  if (isView && isView[0].Table_type === 'VIEW') {
183
- this.Log.trace(`Table ${schema}.${name} is a VIEW and dont have indexes set.`);
273
+ this.Log.trace(`Table ${dbSchema}.${name} is a VIEW and dont have indexes set.`);
184
274
  }
185
275
  else {
186
- indexInfo = (await this.executeOnDb(`SHOW INDEXES FROM ${name}`, [], QueryContext.Select));
276
+ indexInfo = (await this.executeOnDb(`SHOW INDEXES FROM ${escapeId(name)}`, [], QueryContext.Select));
187
277
  }
188
278
  return tblInfo.map((r) => {
189
279
  const isPrimary = indexInfo.find((c) => c.Key_name === 'PRIMARY' && c.Column_name === r.COLUMN_NAME) !== undefined;
@@ -211,75 +301,76 @@ let MySqlOrmDriver = class MySqlOrmDriver extends SqlDriver {
211
301
  };
212
302
  });
213
303
  }
214
- transaction(queryOrCallback) {
304
+ /**
305
+ * Pulls the pooled connection out of a transaction context. The base class only ever hands
306
+ * us contexts this driver's own `_begin` produced, so the cast is safe.
307
+ */
308
+ txConnection(ctx) {
309
+ return ctx.connection;
310
+ }
311
+ /**
312
+ * Runs a statement on the transaction's own connection, bypassing the ambient-context lookup
313
+ * in `executeOnDb`. Transaction control statements must never land on a pooled connection
314
+ * other than their own.
315
+ */
316
+ runOnConnection(connection, stmt) {
317
+ return new Promise((resolve, reject) => {
318
+ connection.query(stmt, (err) => (err ? reject(err) : resolve()));
319
+ });
320
+ }
321
+ _begin(options) {
215
322
  return new Promise((resolve, reject) => {
216
- const trx = {
217
- commit: () => Promise.resolve(),
218
- rollback: () => Promise.resolve(),
219
- };
220
- if (!queryOrCallback) {
221
- resolve(trx);
222
- return;
223
- }
224
323
  this.Pool.getConnection((err, connection) => {
225
324
  if (err) {
226
325
  reject(err);
227
326
  return;
228
327
  }
229
- connection.beginTransaction(async (err) => {
230
- if (err) {
328
+ const begin = () => {
329
+ connection.beginTransaction((err) => {
330
+ if (err) {
331
+ connection.release();
332
+ reject(err);
333
+ return;
334
+ }
335
+ resolve({ connection, depth: 0 });
336
+ });
337
+ };
338
+ if (options?.isolation) {
339
+ // isolation levels are a fixed, validated enum — never caller-supplied free text
340
+ this.runOnConnection(connection, `SET TRANSACTION ISOLATION LEVEL ${options.isolation}`).then(begin, (err) => {
231
341
  connection.release();
232
342
  reject(err);
233
- return;
234
- }
235
- try {
236
- // Run the callback/queries within async context so executeOnDb uses this connection
237
- await this.TransactionStorage.run({ connection }, async () => {
238
- if (Array.isArray(queryOrCallback)) {
239
- for (const q of queryOrCallback) {
240
- await q;
241
- }
242
- }
243
- else {
244
- await queryOrCallback(this);
245
- }
246
- });
247
- resolve({
248
- commit: async () => {
249
- return new Promise((res, rej) => {
250
- connection.commit((err) => {
251
- if (err) {
252
- connection.rollback(() => {
253
- connection.release();
254
- rej(err);
255
- });
256
- return;
257
- }
258
- connection.release();
259
- res();
260
- });
261
- });
262
- },
263
- rollback: async () => {
264
- return new Promise((res) => {
265
- connection.rollback(() => {
266
- connection.release();
267
- res();
268
- });
269
- });
270
- },
271
- });
272
- }
273
- catch (ex) {
274
- connection.rollback(() => {
275
- connection.release();
276
- reject(ex);
277
- });
278
- }
279
- });
343
+ });
344
+ return;
345
+ }
346
+ begin();
280
347
  });
281
348
  });
282
349
  }
350
+ _commit(ctx) {
351
+ return new Promise((resolve, reject) => {
352
+ this.txConnection(ctx).commit((err) => (err ? reject(err) : resolve()));
353
+ });
354
+ }
355
+ _rollback(ctx) {
356
+ return new Promise((resolve, reject) => {
357
+ this.txConnection(ctx).rollback((err) => (err ? reject(err) : resolve()));
358
+ });
359
+ }
360
+ // savepoint names cannot be bound parameters, so they are inlined through the identifier
361
+ // escaper rather than passed as `?`
362
+ _savepoint(ctx, name) {
363
+ return this.runOnConnection(this.txConnection(ctx), `SAVEPOINT ${escapeIdentifier(name)}`);
364
+ }
365
+ _releaseSavepoint(ctx, name) {
366
+ return this.runOnConnection(this.txConnection(ctx), `RELEASE SAVEPOINT ${escapeIdentifier(name)}`);
367
+ }
368
+ _rollbackToSavepoint(ctx, name) {
369
+ return this.runOnConnection(this.txConnection(ctx), `ROLLBACK TO SAVEPOINT ${escapeIdentifier(name)}`);
370
+ }
371
+ async _dispose(ctx) {
372
+ this.txConnection(ctx).release();
373
+ }
283
374
  };
284
375
  MySqlOrmDriver = __decorate([
285
376
  Injectable('orm-driver-mysql'),
@@ -312,6 +403,7 @@ let MySqlSSHOrmDriver = class MySqlSSHOrmDriver extends MySqlOrmDriver {
312
403
  reject(err);
313
404
  return;
314
405
  }
406
+ const pool = this.resolvedPoolOptions();
315
407
  this.Pool = mysql.createPool({
316
408
  host: 'localhost', // we tunnel via ssh so we use localhost
317
409
  user: this.Options.User,
@@ -319,7 +411,10 @@ let MySqlSSHOrmDriver = class MySqlSSHOrmDriver extends MySqlOrmDriver {
319
411
  port: this.Options.Port,
320
412
  database: this.Options.Database,
321
413
  waitForConnections: true,
322
- connectionLimit: this.Options.PoolLimit,
414
+ connectionLimit: pool.Max,
415
+ // see MySqlOrmDriver.connect — `maxIdle` is a ceiling, so Min = 0 must not reach it
416
+ maxIdle: pool.Min > 0 ? pool.Min : pool.Max,
417
+ idleTimeout: pool.IdleTimeout,
323
418
  queueLimit: 0,
324
419
  stream: stream,
325
420
  });