tedious 6.4.0 → 6.6.2
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/lib/bulk-load.js +17 -22
- package/lib/connection.js +363 -251
- package/lib/connector.js +3 -1
- package/lib/data-type.js +111 -109
- package/lib/data-types/bigint.js +19 -7
- package/lib/data-types/binary.js +19 -10
- package/lib/data-types/bit.js +14 -4
- package/lib/data-types/bitn.js +26 -3
- package/lib/data-types/char.js +26 -13
- package/lib/data-types/date.js +18 -9
- package/lib/data-types/datetime.js +23 -5
- package/lib/data-types/datetime2.js +10 -22
- package/lib/data-types/datetimen.js +26 -3
- package/lib/data-types/datetimeoffset.js +11 -22
- package/lib/data-types/decimal.js +14 -6
- package/lib/data-types/decimaln.js +26 -5
- package/lib/data-types/float.js +14 -4
- package/lib/data-types/floatn.js +26 -3
- package/lib/data-types/image.js +12 -5
- package/lib/data-types/int.js +14 -4
- package/lib/data-types/intn.js +26 -3
- package/lib/data-types/money.js +14 -4
- package/lib/data-types/moneyn.js +26 -3
- package/lib/data-types/nchar.js +17 -6
- package/lib/data-types/ntext.js +26 -5
- package/lib/data-types/null.js +27 -3
- package/lib/data-types/numeric.js +14 -6
- package/lib/data-types/numericn.js +26 -5
- package/lib/data-types/nvarchar.js +20 -11
- package/lib/data-types/real.js +14 -4
- package/lib/data-types/smalldatetime.js +14 -4
- package/lib/data-types/smallint.js +14 -4
- package/lib/data-types/smallmoney.js +14 -4
- package/lib/data-types/sql-variant.js +23 -4
- package/lib/data-types/text.js +13 -7
- package/lib/data-types/time.js +9 -21
- package/lib/data-types/tinyint.js +14 -4
- package/lib/data-types/tvp.js +12 -3
- package/lib/data-types/udt.js +26 -3
- package/lib/data-types/uniqueidentifier.js +12 -5
- package/lib/data-types/varbinary.js +18 -8
- package/lib/data-types/varchar.js +19 -10
- package/lib/data-types/xml.js +26 -3
- package/lib/debug.js +3 -1
- package/lib/guid-parser.js +6 -6
- package/lib/incoming-message-stream.js +10 -7
- package/lib/instance-lookup.js +12 -6
- package/lib/library.js +6 -1
- package/lib/login7-payload.js +2 -3
- package/lib/message-io.js +14 -3
- package/lib/message.js +2 -3
- package/lib/metadata-parser.js +259 -136
- package/lib/ntlm-payload.js +12 -21
- package/lib/outgoing-message-stream.js +7 -6
- package/lib/packet.js +4 -5
- package/lib/prelogin-payload.js +3 -4
- package/lib/request.js +11 -11
- package/lib/rpcrequest-payload.js +28 -22
- package/lib/sender.js +25 -11
- package/lib/special-stored-procedure.js +9 -2
- package/lib/tds-versions.js +8 -2
- package/lib/tedious.js +75 -9
- package/lib/token/colmetadata-token-parser.js +20 -10
- package/lib/token/done-token-parser.js +32 -25
- package/lib/token/env-change-token-parser.js +50 -20
- package/lib/token/feature-ext-ack-parser.js +19 -14
- package/lib/token/fedauth-info-parser.js +17 -11
- package/lib/token/infoerror-token-parser.js +14 -14
- package/lib/token/loginack-token-parser.js +21 -12
- package/lib/token/nbcrow-token-parser.js +35 -23
- package/lib/token/order-token-parser.js +14 -7
- package/lib/token/returnstatus-token-parser.js +14 -7
- package/lib/token/returnvalue-token-parser.js +22 -11
- package/lib/token/row-token-parser.js +34 -22
- package/lib/token/sspi-token-parser.js +14 -8
- package/lib/token/stream-parser.js +95 -36
- package/lib/token/token-stream-parser.js +16 -10
- package/lib/token/token.js +396 -2
- package/lib/tracking-buffer/writable-tracking-buffer.js +37 -5
- package/lib/transaction.js +25 -16
- package/lib/transient-error-lookup.js +6 -1
- package/lib/value-parser.js +412 -315
- package/package.json +24 -21
- package/pull_request_template.md +1 -1
- package/tsconfig.json +1 -1
- package/lib/tracking-buffer/bigint.js +0 -102
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
4
7
|
|
|
5
|
-
|
|
8
|
+
var _writableTrackingBuffer = _interopRequireDefault(require("./tracking-buffer/writable-tracking-buffer"));
|
|
9
|
+
|
|
10
|
+
var _allHeaders = require("./all-headers");
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
// const OPTION = {
|
|
6
15
|
// WITH_RECOMPILE: 0x01,
|
|
7
16
|
// NO_METADATA: 0x02,
|
|
8
17
|
// REUSE_METADATA: 0x04
|
|
9
18
|
// };
|
|
10
|
-
|
|
11
|
-
|
|
12
19
|
const STATUS = {
|
|
13
20
|
BY_REF_VALUE: 0x01,
|
|
14
21
|
DEFAULT_VALUE: 0x02
|
|
@@ -17,7 +24,7 @@ const STATUS = {
|
|
|
17
24
|
s2.2.6.5
|
|
18
25
|
*/
|
|
19
26
|
|
|
20
|
-
|
|
27
|
+
class RpcRequestPayload {
|
|
21
28
|
constructor(request, txnDescriptor, options) {
|
|
22
29
|
this.request = request;
|
|
23
30
|
this.procedure = this.request.sqlTextOrProcedure;
|
|
@@ -26,11 +33,11 @@ module.exports = class RpcRequestPayload {
|
|
|
26
33
|
}
|
|
27
34
|
|
|
28
35
|
getData(cb) {
|
|
29
|
-
const buffer = new
|
|
36
|
+
const buffer = new _writableTrackingBuffer.default(500);
|
|
30
37
|
|
|
31
38
|
if (this.options.tdsVersion >= '7_2') {
|
|
32
39
|
const outstandingRequestCount = 1;
|
|
33
|
-
|
|
40
|
+
(0, _allHeaders.writeToTrackingBuffer)(buffer, this.txnDescriptor, outstandingRequestCount);
|
|
34
41
|
}
|
|
35
42
|
|
|
36
43
|
if (typeof this.procedure === 'string') {
|
|
@@ -60,8 +67,7 @@ module.exports = class RpcRequestPayload {
|
|
|
60
67
|
writeNext(0);
|
|
61
68
|
}
|
|
62
69
|
|
|
63
|
-
toString(indent) {
|
|
64
|
-
indent || (indent = '');
|
|
70
|
+
toString(indent = '') {
|
|
65
71
|
return indent + ('RPC Request - ' + this.procedure);
|
|
66
72
|
}
|
|
67
73
|
|
|
@@ -87,20 +93,16 @@ module.exports = class RpcRequestPayload {
|
|
|
87
93
|
}
|
|
88
94
|
}
|
|
89
95
|
|
|
90
|
-
if (
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
param.precision = type.resolvePrecision(parameter);
|
|
95
|
-
}
|
|
96
|
+
if (parameter.precision) {
|
|
97
|
+
param.precision = parameter.precision;
|
|
98
|
+
} else if (type.resolvePrecision) {
|
|
99
|
+
param.precision = type.resolvePrecision(parameter);
|
|
96
100
|
}
|
|
97
101
|
|
|
98
|
-
if (
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
param.scale = type.resolveScale(parameter);
|
|
103
|
-
}
|
|
102
|
+
if (parameter.scale) {
|
|
103
|
+
param.scale = parameter.scale;
|
|
104
|
+
} else if (type.resolveScale) {
|
|
105
|
+
param.scale = type.resolveScale(parameter);
|
|
104
106
|
}
|
|
105
107
|
|
|
106
108
|
type.writeTypeInfo(buffer, param, this.options);
|
|
@@ -109,4 +111,8 @@ module.exports = class RpcRequestPayload {
|
|
|
109
111
|
});
|
|
110
112
|
}
|
|
111
113
|
|
|
112
|
-
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
var _default = RpcRequestPayload;
|
|
117
|
+
exports.default = _default;
|
|
118
|
+
module.exports = RpcRequestPayload;
|
package/lib/sender.js
CHANGED
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Sender = exports.ParallelSendStrategy = void 0;
|
|
4
7
|
|
|
5
|
-
|
|
8
|
+
var _dgram = _interopRequireDefault(require("dgram"));
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
var _dns = _interopRequireDefault(require("dns"));
|
|
8
11
|
|
|
9
|
-
|
|
12
|
+
var _net = _interopRequireDefault(require("net"));
|
|
13
|
+
|
|
14
|
+
var punycode = _interopRequireWildcard(require("punycode"));
|
|
15
|
+
|
|
16
|
+
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
|
|
17
|
+
|
|
18
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
21
|
|
|
11
22
|
class ParallelSendStrategy {
|
|
12
23
|
constructor(addresses, port, request) {
|
|
@@ -55,7 +66,8 @@ class ParallelSendStrategy {
|
|
|
55
66
|
};
|
|
56
67
|
|
|
57
68
|
const createDgramSocket = (udpType, onError, onMessage) => {
|
|
58
|
-
const socket =
|
|
69
|
+
const socket = _dgram.default.createSocket(udpType);
|
|
70
|
+
|
|
59
71
|
socket.on('error', onError);
|
|
60
72
|
socket.on('message', onMessage);
|
|
61
73
|
return socket;
|
|
@@ -64,7 +76,7 @@ class ParallelSendStrategy {
|
|
|
64
76
|
for (let j = 0; j < this.addresses.length; j++) {
|
|
65
77
|
const udpTypeV4 = 'udp4';
|
|
66
78
|
const udpTypeV6 = 'udp6';
|
|
67
|
-
const udpType =
|
|
79
|
+
const udpType = this.addresses[j].family === 6 ? udpTypeV6 : udpTypeV4;
|
|
68
80
|
let socket;
|
|
69
81
|
|
|
70
82
|
if (udpType === udpTypeV4) {
|
|
@@ -94,6 +106,8 @@ class ParallelSendStrategy {
|
|
|
94
106
|
|
|
95
107
|
}
|
|
96
108
|
|
|
109
|
+
exports.ParallelSendStrategy = ParallelSendStrategy;
|
|
110
|
+
|
|
97
111
|
class Sender {
|
|
98
112
|
constructor(host, port, request) {
|
|
99
113
|
this.host = host;
|
|
@@ -103,7 +117,7 @@ class Sender {
|
|
|
103
117
|
}
|
|
104
118
|
|
|
105
119
|
execute(cb) {
|
|
106
|
-
if (
|
|
120
|
+
if (_net.default.isIP(this.host)) {
|
|
107
121
|
this.executeForIP(cb);
|
|
108
122
|
} else {
|
|
109
123
|
this.executeForHostname(cb);
|
|
@@ -112,13 +126,14 @@ class Sender {
|
|
|
112
126
|
|
|
113
127
|
executeForIP(cb) {
|
|
114
128
|
this.executeForAddresses([{
|
|
115
|
-
address: this.host
|
|
129
|
+
address: this.host,
|
|
130
|
+
family: _net.default.isIPv6(this.host) ? 6 : 4
|
|
116
131
|
}], cb);
|
|
117
132
|
} // Wrapper for stubbing. Sinon does not have support for stubbing module functions.
|
|
118
133
|
|
|
119
134
|
|
|
120
135
|
invokeLookupAll(host, cb) {
|
|
121
|
-
|
|
136
|
+
_dns.default.lookup(punycode.toASCII(host), {
|
|
122
137
|
all: true
|
|
123
138
|
}, cb);
|
|
124
139
|
}
|
|
@@ -152,5 +167,4 @@ class Sender {
|
|
|
152
167
|
|
|
153
168
|
}
|
|
154
169
|
|
|
155
|
-
|
|
156
|
-
module.exports.ParallelSendStrategy = ParallelSendStrategy;
|
|
170
|
+
exports.Sender = Sender;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
const procedures = {
|
|
4
8
|
Sp_Cursor: 1,
|
|
5
9
|
Sp_CursorOpen: 2,
|
|
6
10
|
Sp_CursorPrepare: 3,
|
|
@@ -16,4 +20,7 @@ module.exports = {
|
|
|
16
20
|
Sp_PrepExec: 13,
|
|
17
21
|
Sp_PrepExecRpc: 14,
|
|
18
22
|
Sp_Unprepare: 15
|
|
19
|
-
};
|
|
23
|
+
};
|
|
24
|
+
var _default = procedures;
|
|
25
|
+
exports.default = _default;
|
|
26
|
+
module.exports = procedures;
|
package/lib/tds-versions.js
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.versionsByValue = exports.versions = void 0;
|
|
7
|
+
const versions = {
|
|
4
8
|
'7_1': 0x71000001,
|
|
5
9
|
'7_2': 0x72090002,
|
|
6
10
|
'7_3_A': 0x730A0003,
|
|
7
11
|
'7_3_B': 0x730B0003,
|
|
8
12
|
'7_4': 0x74000004
|
|
9
13
|
};
|
|
10
|
-
|
|
14
|
+
exports.versions = versions;
|
|
15
|
+
const versionsByValue = {};
|
|
16
|
+
exports.versionsByValue = versionsByValue;
|
|
11
17
|
|
|
12
18
|
for (const name in versions) {
|
|
13
19
|
versionsByValue[versions[name]] = name;
|
package/lib/tedious.js
CHANGED
|
@@ -1,11 +1,77 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "BulkLoad", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _bulkLoad.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "Connection", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _connection.default;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "Request", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function get() {
|
|
21
|
+
return _request.default;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "ConnectionError", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function get() {
|
|
27
|
+
return _errors.ConnectionError;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "RequestError", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function get() {
|
|
33
|
+
return _errors.RequestError;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "TYPES", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function get() {
|
|
39
|
+
return _dataType.typeByName;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "ISOLATION_LEVEL", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function get() {
|
|
45
|
+
return _transaction.ISOLATION_LEVEL;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
Object.defineProperty(exports, "TDS_VERSION", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function get() {
|
|
51
|
+
return _tdsVersions.versions;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
exports.library = void 0;
|
|
55
|
+
|
|
56
|
+
var _bulkLoad = _interopRequireDefault(require("./bulk-load"));
|
|
57
|
+
|
|
58
|
+
var _connection = _interopRequireDefault(require("./connection"));
|
|
59
|
+
|
|
60
|
+
var _request = _interopRequireDefault(require("./request"));
|
|
61
|
+
|
|
62
|
+
var _library = require("./library");
|
|
63
|
+
|
|
64
|
+
var _errors = require("./errors");
|
|
65
|
+
|
|
66
|
+
var _dataType = require("./data-type");
|
|
67
|
+
|
|
68
|
+
var _transaction = require("./transaction");
|
|
69
|
+
|
|
70
|
+
var _tdsVersions = require("./tds-versions");
|
|
71
|
+
|
|
72
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
73
|
+
|
|
74
|
+
const library = {
|
|
75
|
+
name: _library.name
|
|
76
|
+
};
|
|
77
|
+
exports.library = library;
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _metadataParser = _interopRequireDefault(require("../metadata-parser"));
|
|
9
|
+
|
|
10
|
+
var _token = require("./token");
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
4
13
|
|
|
5
14
|
function readTableName(parser, options, metadata, callback) {
|
|
6
15
|
if (metadata.type.hasTableName) {
|
|
@@ -48,19 +57,20 @@ function readColumnName(parser, options, index, metadata, callback) {
|
|
|
48
57
|
}
|
|
49
58
|
|
|
50
59
|
function readColumn(parser, options, index, callback) {
|
|
51
|
-
|
|
60
|
+
(0, _metadataParser.default)(parser, options, metadata => {
|
|
52
61
|
readTableName(parser, options, metadata, tableName => {
|
|
53
62
|
readColumnName(parser, options, index, metadata, colName => {
|
|
54
63
|
callback({
|
|
55
64
|
userType: metadata.userType,
|
|
56
65
|
flags: metadata.flags,
|
|
57
66
|
type: metadata.type,
|
|
58
|
-
colName: colName,
|
|
59
67
|
collation: metadata.collation,
|
|
60
68
|
precision: metadata.precision,
|
|
61
69
|
scale: metadata.scale,
|
|
62
70
|
udtInfo: metadata.udtInfo,
|
|
63
71
|
dataLength: metadata.dataLength,
|
|
72
|
+
schema: metadata.schema,
|
|
73
|
+
colName: colName,
|
|
64
74
|
tableName: tableName
|
|
65
75
|
});
|
|
66
76
|
});
|
|
@@ -68,7 +78,7 @@ function readColumn(parser, options, index, callback) {
|
|
|
68
78
|
});
|
|
69
79
|
}
|
|
70
80
|
|
|
71
|
-
|
|
81
|
+
function colMetadataParser(parser, _colMetadata, options, callback) {
|
|
72
82
|
parser.readUInt16LE(columnCount => {
|
|
73
83
|
const columns = [];
|
|
74
84
|
let i = 0;
|
|
@@ -86,11 +96,11 @@ module.exports = function (parser, colMetadata, options, callback) {
|
|
|
86
96
|
}
|
|
87
97
|
|
|
88
98
|
next(() => {
|
|
89
|
-
callback(
|
|
90
|
-
name: 'COLMETADATA',
|
|
91
|
-
event: 'columnMetadata',
|
|
92
|
-
columns: columns
|
|
93
|
-
});
|
|
99
|
+
callback(new _token.ColMetadataToken(columns));
|
|
94
100
|
});
|
|
95
101
|
});
|
|
96
|
-
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
var _default = colMetadataParser;
|
|
105
|
+
exports.default = _default;
|
|
106
|
+
module.exports = colMetadataParser;
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.doneParser = doneParser;
|
|
7
|
+
exports.doneInProcParser = doneInProcParser;
|
|
8
|
+
exports.doneProcParser = doneProcParser;
|
|
9
|
+
|
|
10
|
+
var _jsbi = _interopRequireDefault(require("jsbi"));
|
|
11
|
+
|
|
12
|
+
var _token = require("./token");
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
3
16
|
// s2.2.7.5/6/7
|
|
4
17
|
const STATUS = {
|
|
5
18
|
MORE: 0x0001,
|
|
@@ -19,10 +32,8 @@ function parseToken(parser, options, callback) {
|
|
|
19
32
|
const attention = !!(status & STATUS.ATTN);
|
|
20
33
|
const serverError = !!(status & STATUS.SRVERROR);
|
|
21
34
|
parser.readUInt16LE(curCmd => {
|
|
22
|
-
|
|
35
|
+
const next = rowCount => {
|
|
23
36
|
callback({
|
|
24
|
-
name: 'DONE',
|
|
25
|
-
event: 'done',
|
|
26
37
|
more: more,
|
|
27
38
|
sqlError: sqlError,
|
|
28
39
|
attention: attention,
|
|
@@ -30,37 +41,33 @@ function parseToken(parser, options, callback) {
|
|
|
30
41
|
rowCount: rowCountValid ? rowCount : undefined,
|
|
31
42
|
curCmd: curCmd
|
|
32
43
|
});
|
|
33
|
-
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
if (options.tdsVersion < '7_2') {
|
|
47
|
+
parser.readUInt32LE(next);
|
|
48
|
+
} else {
|
|
49
|
+
parser.readBigUInt64LE(rowCount => {
|
|
50
|
+
next(_jsbi.default.toNumber(rowCount));
|
|
51
|
+
});
|
|
52
|
+
}
|
|
34
53
|
});
|
|
35
54
|
});
|
|
36
55
|
}
|
|
37
56
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
parseToken(parser, options, token => {
|
|
42
|
-
token.name = 'DONE';
|
|
43
|
-
token.event = 'done';
|
|
44
|
-
callback(token);
|
|
57
|
+
function doneParser(parser, _colMetadata, options, callback) {
|
|
58
|
+
parseToken(parser, options, data => {
|
|
59
|
+
callback(new _token.DoneToken(data));
|
|
45
60
|
});
|
|
46
61
|
}
|
|
47
62
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
parseToken(parser, options, token => {
|
|
52
|
-
token.name = 'DONEINPROC';
|
|
53
|
-
token.event = 'doneInProc';
|
|
54
|
-
callback(token);
|
|
63
|
+
function doneInProcParser(parser, _colMetadata, options, callback) {
|
|
64
|
+
parseToken(parser, options, data => {
|
|
65
|
+
callback(new _token.DoneInProcToken(data));
|
|
55
66
|
});
|
|
56
67
|
}
|
|
57
68
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
parseToken(parser, options, token => {
|
|
62
|
-
token.name = 'DONEPROC';
|
|
63
|
-
token.event = 'doneProc';
|
|
64
|
-
callback(token);
|
|
69
|
+
function doneProcParser(parser, _colMetadata, options, callback) {
|
|
70
|
+
parseToken(parser, options, data => {
|
|
71
|
+
callback(new _token.DoneProcToken(data));
|
|
65
72
|
});
|
|
66
73
|
}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _token = require("./token");
|
|
9
|
+
|
|
3
10
|
const types = {
|
|
4
11
|
1: {
|
|
5
12
|
name: 'DATABASE',
|
|
@@ -59,10 +66,21 @@ function readNewAndOldValue(parser, length, type, callback) {
|
|
|
59
66
|
case 'DATABASE_MIRRORING_PARTNER':
|
|
60
67
|
return parser.readBVarChar(newValue => {
|
|
61
68
|
parser.readBVarChar(oldValue => {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
69
|
+
switch (type.name) {
|
|
70
|
+
case 'PACKET_SIZE':
|
|
71
|
+
return callback(new _token.PacketSizeEnvChangeToken(parseInt(newValue), parseInt(oldValue)));
|
|
72
|
+
|
|
73
|
+
case 'DATABASE':
|
|
74
|
+
return callback(new _token.DatabaseEnvChangeToken(newValue, oldValue));
|
|
75
|
+
|
|
76
|
+
case 'LANGUAGE':
|
|
77
|
+
return callback(new _token.LanguageEnvChangeToken(newValue, oldValue));
|
|
78
|
+
|
|
79
|
+
case 'CHARSET':
|
|
80
|
+
return callback(new _token.CharsetEnvChangeToken(newValue, oldValue));
|
|
81
|
+
|
|
82
|
+
case 'DATABASE_MIRRORING_PARTNER':
|
|
83
|
+
return callback(new _token.DatabaseMirroringPartnerEnvChangeToken(newValue, oldValue));
|
|
66
84
|
}
|
|
67
85
|
});
|
|
68
86
|
});
|
|
@@ -74,12 +92,27 @@ function readNewAndOldValue(parser, length, type, callback) {
|
|
|
74
92
|
case 'RESET_CONNECTION':
|
|
75
93
|
return parser.readBVarByte(newValue => {
|
|
76
94
|
parser.readBVarByte(oldValue => {
|
|
77
|
-
|
|
95
|
+
switch (type.name) {
|
|
96
|
+
case 'SQL_COLLATION':
|
|
97
|
+
return callback(new _token.CollationChangeToken(newValue, oldValue));
|
|
98
|
+
|
|
99
|
+
case 'BEGIN_TXN':
|
|
100
|
+
return callback(new _token.BeginTransactionEnvChangeToken(newValue, oldValue));
|
|
101
|
+
|
|
102
|
+
case 'COMMIT_TXN':
|
|
103
|
+
return callback(new _token.CommitTransactionEnvChangeToken(newValue, oldValue));
|
|
104
|
+
|
|
105
|
+
case 'ROLLBACK_TXN':
|
|
106
|
+
return callback(new _token.RollbackTransactionEnvChangeToken(newValue, oldValue));
|
|
107
|
+
|
|
108
|
+
case 'RESET_CONNECTION':
|
|
109
|
+
return callback(new _token.ResetConnectionEnvChangeToken(newValue, oldValue));
|
|
110
|
+
}
|
|
78
111
|
});
|
|
79
112
|
});
|
|
80
113
|
|
|
81
114
|
case 'ROUTING_CHANGE':
|
|
82
|
-
parser.readUInt16LE(valueLength => {
|
|
115
|
+
return parser.readUInt16LE(valueLength => {
|
|
83
116
|
// Routing Change:
|
|
84
117
|
// Byte 1: Protocol (must be 0)
|
|
85
118
|
// Bytes 2-3 (USHORT): Port number
|
|
@@ -103,23 +136,22 @@ function readNewAndOldValue(parser, length, type, callback) {
|
|
|
103
136
|
};
|
|
104
137
|
parser.readUInt16LE(oldValueLength => {
|
|
105
138
|
parser.readBuffer(oldValueLength, oldValue => {
|
|
106
|
-
callback(newValue, oldValue);
|
|
139
|
+
callback(new _token.RoutingEnvChangeToken(newValue, oldValue));
|
|
107
140
|
});
|
|
108
141
|
});
|
|
109
142
|
});
|
|
110
143
|
});
|
|
111
|
-
break;
|
|
112
144
|
|
|
113
145
|
default:
|
|
114
146
|
console.error('Tedious > Unsupported ENVCHANGE type ' + type.name); // skip unknown bytes
|
|
115
147
|
|
|
116
148
|
parser.readBuffer(length - 1, () => {
|
|
117
|
-
callback(undefined
|
|
149
|
+
callback(undefined);
|
|
118
150
|
});
|
|
119
151
|
}
|
|
120
152
|
}
|
|
121
153
|
|
|
122
|
-
|
|
154
|
+
function envChangeParser(parser, _colMetadata, _options, callback) {
|
|
123
155
|
parser.readUInt16LE(length => {
|
|
124
156
|
parser.readUInt8(typeNumber => {
|
|
125
157
|
const type = types[typeNumber];
|
|
@@ -128,19 +160,17 @@ module.exports = function (parser, colMetadata, options, callback) {
|
|
|
128
160
|
console.error('Tedious > Unsupported ENVCHANGE type ' + typeNumber); // skip unknown bytes
|
|
129
161
|
|
|
130
162
|
return parser.readBuffer(length - 1, () => {
|
|
131
|
-
callback();
|
|
163
|
+
callback(undefined);
|
|
132
164
|
});
|
|
133
165
|
}
|
|
134
166
|
|
|
135
|
-
readNewAndOldValue(parser, length, type,
|
|
136
|
-
callback(
|
|
137
|
-
name: 'ENVCHANGE',
|
|
138
|
-
type: type.name,
|
|
139
|
-
event: type.event,
|
|
140
|
-
oldValue: oldValue,
|
|
141
|
-
newValue: newValue
|
|
142
|
-
});
|
|
167
|
+
readNewAndOldValue(parser, length, type, token => {
|
|
168
|
+
callback(token);
|
|
143
169
|
});
|
|
144
170
|
});
|
|
145
171
|
});
|
|
146
|
-
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
var _default = envChangeParser;
|
|
175
|
+
exports.default = _default;
|
|
176
|
+
module.exports = envChangeParser;
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _token = require("./token");
|
|
9
|
+
|
|
3
10
|
const FEATURE_ID = {
|
|
4
11
|
SESSIONRECOVERY: 0x01,
|
|
5
12
|
FEDAUTH: 0x02,
|
|
@@ -9,32 +16,30 @@ const FEATURE_ID = {
|
|
|
9
16
|
TERMINATOR: 0xFF
|
|
10
17
|
};
|
|
11
18
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
'name': 'FEATUREEXTACK',
|
|
15
|
-
'event': 'featureExtAck',
|
|
16
|
-
'fedAuth': undefined
|
|
17
|
-
};
|
|
19
|
+
function featureExtAckParser(parser, _colMetadata, _options, callback) {
|
|
20
|
+
let fedAuth;
|
|
18
21
|
|
|
19
|
-
function next(
|
|
22
|
+
function next() {
|
|
20
23
|
parser.readUInt8(featureId => {
|
|
21
24
|
if (featureId === FEATURE_ID.TERMINATOR) {
|
|
22
|
-
return
|
|
25
|
+
return callback(new _token.FeatureExtAckToken(fedAuth));
|
|
23
26
|
}
|
|
24
27
|
|
|
25
28
|
parser.readUInt32LE(featureAckDataLen => {
|
|
26
29
|
parser.readBuffer(featureAckDataLen, featureData => {
|
|
27
30
|
if (featureId === FEATURE_ID.FEDAUTH) {
|
|
28
|
-
|
|
31
|
+
fedAuth = featureData;
|
|
29
32
|
}
|
|
30
33
|
|
|
31
|
-
next(
|
|
34
|
+
next();
|
|
32
35
|
});
|
|
33
36
|
});
|
|
34
37
|
});
|
|
35
38
|
}
|
|
36
39
|
|
|
37
|
-
next(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
next();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
var _default = featureExtAckParser;
|
|
44
|
+
exports.default = _default;
|
|
45
|
+
module.exports = featureExtAckParser;
|