mysql2 3.4.3 → 3.4.5

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.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- ## Node MySQL 2
1
+ ## MySQL 2
2
2
 
3
3
  [![Greenkeeper badge](https://badges.greenkeeper.io/sidorares/node-mysql2.svg)](https://greenkeeper.io/)
4
4
  [![NPM Version][npm-image]][npm-url]
@@ -73,10 +73,19 @@ class Prepare extends Command {
73
73
  return Prepare.prototype.readField;
74
74
  }
75
75
  return this.prepareDone(connection);
76
-
77
76
  }
78
77
 
79
78
  readParameter(packet, connection) {
79
+ // there might be scenarios when mysql server reports more parameters than
80
+ // are actually present in the array of parameter definitions.
81
+ // if EOF packet is received we switch to "read fields" state if there are
82
+ // any fields reported by the server, otherwise we finish the command.
83
+ if (packet.isEOF()) {
84
+ if (this.fieldCount > 0) {
85
+ return Prepare.prototype.readField;
86
+ }
87
+ return this.prepareDone(connection);
88
+ }
80
89
  const def = new Packets.ColumnDefinition(packet, connection.clientEncoding);
81
90
  this.parameterDefinitions.push(def);
82
91
  if (this.parameterDefinitions.length === this.parameterCount) {
@@ -86,6 +95,9 @@ class Prepare extends Command {
86
95
  }
87
96
 
88
97
  readField(packet, connection) {
98
+ if (packet.isEOF()) {
99
+ return this.prepareDone(connection);
100
+ }
89
101
  const def = new Packets.ColumnDefinition(packet, connection.clientEncoding);
90
102
  this.fields.push(def);
91
103
  if (this.fields.length === this.fieldCount) {
package/lib/connection.js CHANGED
@@ -489,14 +489,23 @@ class Connection extends EventEmitter {
489
489
  }
490
490
  this._bumpSequenceId(packet.numPackets);
491
491
  }
492
- const done = this._command.execute(packet, this);
493
- if (done) {
494
- this._command = this._commands.shift();
495
- if (this._command) {
496
- this.sequenceId = 0;
497
- this.compressedSequenceId = 0;
498
- this.handlePacket();
492
+ try {
493
+ if (this._fatalError) {
494
+ // skip remaining packets after client is in the error state
495
+ return;
496
+ }
497
+ const done = this._command.execute(packet, this);
498
+ if (done) {
499
+ this._command = this._commands.shift();
500
+ if (this._command) {
501
+ this.sequenceId = 0;
502
+ this.compressedSequenceId = 0;
503
+ this.handlePacket();
504
+ }
499
505
  }
506
+ } catch (err) {
507
+ this._handleFatalError(err);
508
+ this.stream.destroy();
500
509
  }
501
510
  }
502
511
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mysql2",
3
- "version": "3.4.3",
3
+ "version": "3.4.5",
4
4
  "description": "fast mysql driver. Implements core protocol, prepared statements, ssl and compression in native JS",
5
5
  "main": "index.js",
6
6
  "directories": {
@@ -12,6 +12,7 @@
12
12
  "lint:code": "eslint index.js promise.js index.d.ts promise.d.ts \"typings/**/*.ts\" \"lib/**/*.js\" \"test/**/*.{js,ts}\" \"benchmarks/**/*.js\"",
13
13
  "lint:docs": "eslint Contributing.md README.md \"documentation/**/*.md\" \"examples/*.js\"",
14
14
  "test": "node ./test/run.js",
15
+ "test:builtin-node-runner": "NODE_V8_COVERAGE=./coverage node --test --experimental-test-coverage test/builtin-runner",
15
16
  "test:tsc-build": "cd \"test/tsc-build\" && npx tsc -p \"tsconfig.json\"",
16
17
  "coverage-test": "c8 -r cobertura -r lcov -r text node ./test/run.js",
17
18
  "benchmark": "node ./benchmarks/benchmark.js",
@@ -0,0 +1,18 @@
1
+ import { OkPacket } from './OkPacket.js';
2
+ import { ResultSetHeader } from './ResultSetHeader.js';
3
+ import { RowDataPacket } from './RowDataPacket.js';
4
+
5
+ declare type ProcedureCallPacket<
6
+ T = RowDataPacket[] | RowDataPacket[][] | ResultSetHeader
7
+ > = T extends RowDataPacket[]
8
+ ? [...T, ResultSetHeader]
9
+ : T extends RowDataPacket[][]
10
+ ? [...T, ResultSetHeader]
11
+ : T extends ResultSetHeader | OkPacket | OkPacket[]
12
+ ? ResultSetHeader
13
+ :
14
+ | [...RowDataPacket[], ResultSetHeader]
15
+ | [...RowDataPacket[][], ResultSetHeader]
16
+ | ResultSetHeader;
17
+
18
+ export { ProcedureCallPacket };
@@ -2,6 +2,7 @@ import { OkPacket } from './OkPacket.js';
2
2
  import { RowDataPacket } from './RowDataPacket.js';
3
3
  import { FieldPacket } from './FieldPacket.js';
4
4
  import { Field } from './Field.js';
5
+ import { ProcedureCallPacket } from './ProcedurePacket.js';
5
6
  import { ResultSetHeader } from './ResultSetHeader.js';
6
7
  import { OkPacketParams } from './params/OkPacketParams.js';
7
8
  import { ErrorPacketParams } from './params/ErrorPacketParams.js';
@@ -11,6 +12,7 @@ export {
11
12
  RowDataPacket,
12
13
  FieldPacket,
13
14
  Field,
15
+ ProcedureCallPacket,
14
16
  ResultSetHeader,
15
17
  OkPacketParams,
16
18
  ErrorPacketParams,
@@ -3,6 +3,7 @@ import {
3
3
  FieldPacket,
4
4
  RowDataPacket,
5
5
  ResultSetHeader,
6
+ ProcedureCallPacket,
6
7
  } from '../packets/index.js';
7
8
  import {
8
9
  Query,
@@ -10,6 +11,7 @@ import {
10
11
  QueryOptions,
11
12
  QueryableConstructor,
12
13
  } from './Query.js';
14
+
13
15
  export declare function ExecutableBase<T extends QueryableConstructor>(
14
16
  Base?: T
15
17
  ): {
@@ -21,6 +23,7 @@ export declare function ExecutableBase<T extends QueryableConstructor>(
21
23
  | RowDataPacket[]
22
24
  | RowDataPacket[][]
23
25
  | OkPacket[]
26
+ | ProcedureCallPacket
24
27
  >(
25
28
  sql: string,
26
29
  callback?:
@@ -28,44 +31,47 @@ export declare function ExecutableBase<T extends QueryableConstructor>(
28
31
  | undefined
29
32
  ): Query;
30
33
  execute<
31
- T_1 extends
34
+ T extends
32
35
  | OkPacket
33
36
  | ResultSetHeader
34
37
  | RowDataPacket[]
35
38
  | RowDataPacket[][]
36
39
  | OkPacket[]
40
+ | ProcedureCallPacket
37
41
  >(
38
42
  sql: string,
39
43
  values: any,
40
44
  callback?:
41
- | ((err: QueryError | null, result: T_1, fields: FieldPacket[]) => any)
45
+ | ((err: QueryError | null, result: T, fields: FieldPacket[]) => any)
42
46
  | undefined
43
47
  ): Query;
44
48
  execute<
45
- T_2 extends
49
+ T extends
46
50
  | OkPacket
47
51
  | ResultSetHeader
48
52
  | RowDataPacket[]
49
53
  | RowDataPacket[][]
50
54
  | OkPacket[]
55
+ | ProcedureCallPacket
51
56
  >(
52
57
  options: QueryOptions,
53
58
  callback?:
54
- | ((err: QueryError | null, result: T_2, fields?: FieldPacket[]) => any)
59
+ | ((err: QueryError | null, result: T, fields?: FieldPacket[]) => any)
55
60
  | undefined
56
61
  ): Query;
57
62
  execute<
58
- T_3 extends
63
+ T extends
59
64
  | OkPacket
60
65
  | ResultSetHeader
61
66
  | RowDataPacket[]
62
67
  | RowDataPacket[][]
63
68
  | OkPacket[]
69
+ | ProcedureCallPacket
64
70
  >(
65
71
  options: QueryOptions,
66
72
  values: any,
67
73
  callback?:
68
- | ((err: QueryError | null, result: T_3, fields: FieldPacket[]) => any)
74
+ | ((err: QueryError | null, result: T, fields: FieldPacket[]) => any)
69
75
  | undefined
70
76
  ): Query;
71
77
  };
@@ -3,6 +3,7 @@ import {
3
3
  FieldPacket,
4
4
  RowDataPacket,
5
5
  ResultSetHeader,
6
+ ProcedureCallPacket,
6
7
  } from '../packets/index.js';
7
8
  import {
8
9
  Query,
@@ -10,6 +11,7 @@ import {
10
11
  QueryOptions,
11
12
  QueryableConstructor,
12
13
  } from './Query.js';
14
+
13
15
  export declare function QueryableBase<T extends QueryableConstructor>(
14
16
  Base?: T
15
17
  ): {
@@ -21,6 +23,7 @@ export declare function QueryableBase<T extends QueryableConstructor>(
21
23
  | RowDataPacket[]
22
24
  | RowDataPacket[][]
23
25
  | OkPacket[]
26
+ | ProcedureCallPacket
24
27
  >(
25
28
  sql: string,
26
29
  callback?:
@@ -28,44 +31,47 @@ export declare function QueryableBase<T extends QueryableConstructor>(
28
31
  | undefined
29
32
  ): Query;
30
33
  query<
31
- T_1 extends
34
+ T extends
32
35
  | OkPacket
33
36
  | ResultSetHeader
34
37
  | RowDataPacket[]
35
38
  | RowDataPacket[][]
36
39
  | OkPacket[]
40
+ | ProcedureCallPacket
37
41
  >(
38
42
  sql: string,
39
43
  values: any,
40
44
  callback?:
41
- | ((err: QueryError | null, result: T_1, fields: FieldPacket[]) => any)
45
+ | ((err: QueryError | null, result: T, fields: FieldPacket[]) => any)
42
46
  | undefined
43
47
  ): Query;
44
48
  query<
45
- T_2 extends
49
+ T extends
46
50
  | OkPacket
47
51
  | ResultSetHeader
48
52
  | RowDataPacket[]
49
53
  | RowDataPacket[][]
50
54
  | OkPacket[]
55
+ | ProcedureCallPacket
51
56
  >(
52
57
  options: QueryOptions,
53
58
  callback?:
54
- | ((err: QueryError | null, result: T_2, fields?: FieldPacket[]) => any)
59
+ | ((err: QueryError | null, result: T, fields?: FieldPacket[]) => any)
55
60
  | undefined
56
61
  ): Query;
57
62
  query<
58
- T_3 extends
63
+ T extends
59
64
  | OkPacket
60
65
  | ResultSetHeader
61
66
  | RowDataPacket[]
62
67
  | RowDataPacket[][]
63
68
  | OkPacket[]
69
+ | ProcedureCallPacket
64
70
  >(
65
71
  options: QueryOptions,
66
72
  values: any,
67
73
  callback?:
68
- | ((err: QueryError | null, result: T_3, fields: FieldPacket[]) => any)
74
+ | ((err: QueryError | null, result: T, fields: FieldPacket[]) => any)
69
75
  | undefined
70
76
  ): Query;
71
77
  };
@@ -3,6 +3,7 @@ import {
3
3
  FieldPacket,
4
4
  RowDataPacket,
5
5
  ResultSetHeader,
6
+ ProcedureCallPacket,
6
7
  } from '../../packets/index.js';
7
8
  import { QueryOptions, QueryableConstructor } from '../Query.js';
8
9
 
@@ -17,40 +18,44 @@ export declare function ExecutableBase<T extends QueryableConstructor>(
17
18
  | RowDataPacket[]
18
19
  | RowDataPacket[][]
19
20
  | OkPacket[]
21
+ | ProcedureCallPacket
20
22
  >(
21
23
  sql: string
22
24
  ): Promise<[T, FieldPacket[]]>;
23
25
  execute<
24
- T_1 extends
26
+ T extends
25
27
  | OkPacket
26
28
  | ResultSetHeader
27
29
  | RowDataPacket[]
28
30
  | RowDataPacket[][]
29
31
  | OkPacket[]
32
+ | ProcedureCallPacket
30
33
  >(
31
34
  sql: string,
32
35
  values: any
33
- ): Promise<[T_1, FieldPacket[]]>;
36
+ ): Promise<[T, FieldPacket[]]>;
34
37
  execute<
35
- T_2 extends
38
+ T extends
36
39
  | OkPacket
37
40
  | ResultSetHeader
38
41
  | RowDataPacket[]
39
42
  | RowDataPacket[][]
40
43
  | OkPacket[]
44
+ | ProcedureCallPacket
41
45
  >(
42
46
  options: QueryOptions
43
- ): Promise<[T_2, FieldPacket[]]>;
47
+ ): Promise<[T, FieldPacket[]]>;
44
48
  execute<
45
- T_3 extends
49
+ T extends
46
50
  | OkPacket
47
51
  | ResultSetHeader
48
52
  | RowDataPacket[]
49
53
  | RowDataPacket[][]
50
54
  | OkPacket[]
55
+ | ProcedureCallPacket
51
56
  >(
52
57
  options: QueryOptions,
53
58
  values: any
54
- ): Promise<[T_3, FieldPacket[]]>;
59
+ ): Promise<[T, FieldPacket[]]>;
55
60
  };
56
61
  } & T;
@@ -3,6 +3,7 @@ import {
3
3
  FieldPacket,
4
4
  RowDataPacket,
5
5
  ResultSetHeader,
6
+ ProcedureCallPacket,
6
7
  } from '../../packets/index.js';
7
8
  import { QueryOptions, QueryableConstructor } from '../Query.js';
8
9
 
@@ -17,40 +18,44 @@ export declare function QueryableBase<T extends QueryableConstructor>(
17
18
  | RowDataPacket[]
18
19
  | RowDataPacket[][]
19
20
  | OkPacket[]
21
+ | ProcedureCallPacket
20
22
  >(
21
23
  sql: string
22
24
  ): Promise<[T, FieldPacket[]]>;
23
25
  query<
24
- T_1 extends
26
+ T extends
25
27
  | OkPacket
26
28
  | ResultSetHeader
27
29
  | RowDataPacket[]
28
30
  | RowDataPacket[][]
29
31
  | OkPacket[]
32
+ | ProcedureCallPacket
30
33
  >(
31
34
  sql: string,
32
35
  values: any
33
- ): Promise<[T_1, FieldPacket[]]>;
36
+ ): Promise<[T, FieldPacket[]]>;
34
37
  query<
35
- T_2 extends
38
+ T extends
36
39
  | OkPacket
37
40
  | ResultSetHeader
38
41
  | RowDataPacket[]
39
42
  | RowDataPacket[][]
40
43
  | OkPacket[]
44
+ | ProcedureCallPacket
41
45
  >(
42
46
  options: QueryOptions
43
- ): Promise<[T_2, FieldPacket[]]>;
47
+ ): Promise<[T, FieldPacket[]]>;
44
48
  query<
45
- T_3 extends
49
+ T extends
46
50
  | OkPacket
47
51
  | ResultSetHeader
48
52
  | RowDataPacket[]
49
53
  | RowDataPacket[][]
50
54
  | OkPacket[]
55
+ | ProcedureCallPacket
51
56
  >(
52
57
  options: QueryOptions,
53
58
  values: any
54
- ): Promise<[T_3, FieldPacket[]]>;
59
+ ): Promise<[T, FieldPacket[]]>;
55
60
  };
56
61
  } & T;