tedious 1.12.3 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/appveyor.yml +9 -5
- package/benchmarks/README.md +33 -0
- package/benchmarks/common.js +82 -0
- package/benchmarks/index.js +34 -0
- package/benchmarks/query/many-result-rows.js +49 -0
- package/benchmarks/query/nvarchar-large.js +44 -0
- package/benchmarks/query/nvarchar-small.js +44 -0
- package/benchmarks/query/varbinary-4.js +42 -0
- package/benchmarks/query/varbinary-huge.js +46 -0
- package/benchmarks/query/varbinary-large.js +46 -0
- package/benchmarks/query/varbinary-small.js +42 -0
- package/benchmarks/token-parser/colmetadata-token.js +42 -0
- package/benchmarks/token-parser/done-token.js +42 -0
- package/benchmarks/token-parser/simple-tokens.js +366 -0
- package/lib/all-headers.js +9 -11
- package/lib/buffertools.js +17 -13
- package/lib/bulk-load.js +196 -169
- package/lib/collation.js +80 -2
- package/lib/connection.js +1086 -1060
- package/lib/data-type.js +450 -253
- package/lib/debug.js +57 -51
- package/lib/errors.js +40 -55
- package/lib/guid-parser.js +12 -36
- package/lib/instance-lookup.js +57 -54
- package/lib/library.js +3 -2
- package/lib/login7-payload.js +187 -180
- package/lib/message-io.js +169 -199
- package/lib/metadata-parser.js +169 -255
- package/lib/ntlm-payload.js +173 -160
- package/lib/packet.js +166 -152
- package/lib/prelogin-payload.js +170 -160
- package/lib/request.js +122 -122
- package/lib/rpcrequest-payload.js +64 -38
- package/lib/special-stored-procedure.js +3 -2
- package/lib/sqlbatch-payload.js +20 -16
- package/lib/stream-parser.js +116 -104
- package/lib/tds-versions.js +5 -8
- package/lib/tedious.js +8 -14
- package/lib/token/colmetadata-token-parser.js +79 -125
- package/lib/token/done-token-parser.js +47 -129
- package/lib/token/env-change-token-parser.js +90 -126
- package/lib/token/infoerror-token-parser.js +47 -125
- package/lib/token/loginack-token-parser.js +36 -74
- package/lib/token/nbcrow-token-parser.js +40 -64
- package/lib/token/order-token-parser.js +26 -43
- package/lib/token/returnstatus-token-parser.js +11 -23
- package/lib/token/returnvalue-token-parser.js +31 -54
- package/lib/token/row-token-parser.js +39 -52
- package/lib/token/sspi-token-parser.js +14 -32
- package/lib/token/stream-parser.js +424 -304
- package/lib/token/token-stream-parser.js +39 -34
- package/lib/token/token.js +3 -6
- package/lib/tracking-buffer/bigint.js +45 -48
- package/lib/tracking-buffer/readable-tracking-buffer.js +238 -223
- package/lib/tracking-buffer/tracking-buffer.js +3 -9
- package/lib/tracking-buffer/writable-tracking-buffer.js +272 -244
- package/lib/transaction.js +112 -102
- package/lib/value-parser.js +559 -1154
- package/package.json +10 -9
- package/benchmarks/benchmarks.coffee +0 -122
- package/benchmarks/query.coffee +0 -57
package/lib/transaction.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
var ISOLATION_LEVEL, OPERATION_TYPE, Transaction, WritableTrackingBuffer, isolationLevelByValue, name, value, writeAllHeaders;
|
|
1
|
+
'use strict';
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
var _createClass = require('babel-runtime/helpers/create-class')['default'];
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
|
|
6
|
+
|
|
7
|
+
var WritableTrackingBuffer = require('./tracking-buffer/writable-tracking-buffer');
|
|
8
|
+
var writeAllHeaders = require('./all-headers').writeToTrackingBuffer;
|
|
7
9
|
|
|
8
10
|
/*
|
|
9
11
|
s2.2.6.8
|
|
10
12
|
*/
|
|
11
13
|
|
|
12
|
-
OPERATION_TYPE = {
|
|
14
|
+
var OPERATION_TYPE = module.exports.OPERATION_TYPE = {
|
|
13
15
|
TM_GET_DTC_ADDRESS: 0x00,
|
|
14
16
|
TM_PROPAGATE_XACT: 0x01,
|
|
15
17
|
TM_BEGIN_XACT: 0x05,
|
|
@@ -19,7 +21,7 @@ OPERATION_TYPE = {
|
|
|
19
21
|
TM_SAVE_XACT: 0x09
|
|
20
22
|
};
|
|
21
23
|
|
|
22
|
-
ISOLATION_LEVEL = {
|
|
24
|
+
var ISOLATION_LEVEL = module.exports.ISOLATION_LEVEL = {
|
|
23
25
|
NO_CHANGE: 0x00,
|
|
24
26
|
READ_UNCOMMITTED: 0x01,
|
|
25
27
|
READ_COMMITTED: 0x02,
|
|
@@ -28,110 +30,118 @@ ISOLATION_LEVEL = {
|
|
|
28
30
|
SNAPSHOT: 0x05
|
|
29
31
|
};
|
|
30
32
|
|
|
31
|
-
isolationLevelByValue = {};
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
value =
|
|
35
|
-
isolationLevelByValue[value] = name;
|
|
33
|
+
var isolationLevelByValue = {};
|
|
34
|
+
for (var _name in ISOLATION_LEVEL) {
|
|
35
|
+
var value = ISOLATION_LEVEL[_name];
|
|
36
|
+
isolationLevelByValue[value] = _name;
|
|
36
37
|
}
|
|
37
38
|
|
|
38
|
-
Transaction = (function () {
|
|
39
|
-
function Transaction(
|
|
40
|
-
this
|
|
39
|
+
var Transaction = (function () {
|
|
40
|
+
function Transaction(name, isolationLevel) {
|
|
41
|
+
_classCallCheck(this, Transaction);
|
|
42
|
+
|
|
43
|
+
this.name = name;
|
|
41
44
|
this.isolationLevel = isolationLevel;
|
|
42
45
|
this.outstandingRequestCount = 1;
|
|
43
46
|
}
|
|
44
47
|
|
|
45
|
-
Transaction
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
buffer = new WritableTrackingBuffer(100, 'ascii');
|
|
84
|
-
writeAllHeaders(buffer, txnDescriptor, this.outstandingRequestCount);
|
|
85
|
-
buffer.writeUShort(OPERATION_TYPE.TM_ROLLBACK_XACT);
|
|
86
|
-
buffer.writeUInt8(this.name.length * 2);
|
|
87
|
-
buffer.writeString(this.name, 'ucs2');
|
|
88
|
-
buffer.writeUInt8(0);
|
|
89
|
-
return payload = {
|
|
90
|
-
data: buffer.data,
|
|
91
|
-
toString: (function (_this) {
|
|
92
|
-
return function () {
|
|
93
|
-
return "Rollback Transaction: name=" + _this.name;
|
|
94
|
-
};
|
|
95
|
-
})(this)
|
|
96
|
-
};
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
Transaction.prototype.savePayload = function (txnDescriptor) {
|
|
100
|
-
var buffer, payload;
|
|
101
|
-
buffer = new WritableTrackingBuffer(100, 'ascii');
|
|
102
|
-
writeAllHeaders(buffer, txnDescriptor, this.outstandingRequestCount);
|
|
103
|
-
buffer.writeUShort(OPERATION_TYPE.TM_SAVE_XACT);
|
|
104
|
-
buffer.writeUInt8(this.name.length * 2);
|
|
105
|
-
buffer.writeString(this.name, 'ucs2');
|
|
106
|
-
return payload = {
|
|
107
|
-
data: buffer.data,
|
|
108
|
-
toString: (function (_this) {
|
|
109
|
-
return function () {
|
|
110
|
-
return "Save Transaction: name=" + _this.name;
|
|
111
|
-
};
|
|
112
|
-
})(this)
|
|
113
|
-
};
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
Transaction.prototype.isolationLevelToTSQL = function () {
|
|
117
|
-
switch (this.isolationLevel) {
|
|
118
|
-
case ISOLATION_LEVEL.READ_UNCOMMITTED:
|
|
119
|
-
return 'READ UNCOMMITTED';
|
|
120
|
-
case ISOLATION_LEVEL.READ_COMMITTED:
|
|
121
|
-
return 'READ COMMITTED';
|
|
122
|
-
case ISOLATION_LEVEL.REPEATABLE_READ:
|
|
123
|
-
return 'REPEATABLE READ';
|
|
124
|
-
case ISOLATION_LEVEL.SERIALIZABLE:
|
|
125
|
-
return 'SERIALIZABLE';
|
|
126
|
-
case ISOLATION_LEVEL.SNAPSHOT:
|
|
127
|
-
return 'SNAPSHOT';
|
|
48
|
+
_createClass(Transaction, [{
|
|
49
|
+
key: 'beginPayload',
|
|
50
|
+
value: function beginPayload(txnDescriptor) {
|
|
51
|
+
var _this = this;
|
|
52
|
+
|
|
53
|
+
var buffer = new WritableTrackingBuffer(100, 'ucs2');
|
|
54
|
+
writeAllHeaders(buffer, txnDescriptor, this.outstandingRequestCount);
|
|
55
|
+
buffer.writeUShort(OPERATION_TYPE.TM_BEGIN_XACT);
|
|
56
|
+
buffer.writeUInt8(this.isolationLevel);
|
|
57
|
+
buffer.writeUInt8(this.name.length * 2);
|
|
58
|
+
buffer.writeString(this.name, 'ucs2');
|
|
59
|
+
|
|
60
|
+
return {
|
|
61
|
+
data: buffer.data,
|
|
62
|
+
toString: function toString() {
|
|
63
|
+
return 'Begin Transaction: name=' + _this.name + ', isolationLevel=' + isolationLevelByValue[_this.isolationLevel];
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}, {
|
|
68
|
+
key: 'commitPayload',
|
|
69
|
+
value: function commitPayload(txnDescriptor) {
|
|
70
|
+
var _this2 = this;
|
|
71
|
+
|
|
72
|
+
var buffer = new WritableTrackingBuffer(100, 'ascii');
|
|
73
|
+
writeAllHeaders(buffer, txnDescriptor, this.outstandingRequestCount);
|
|
74
|
+
buffer.writeUShort(OPERATION_TYPE.TM_COMMIT_XACT);
|
|
75
|
+
buffer.writeUInt8(this.name.length * 2);
|
|
76
|
+
buffer.writeString(this.name, 'ucs2');
|
|
77
|
+
// No fBeginXact flag, so no new transaction is started.
|
|
78
|
+
buffer.writeUInt8(0);
|
|
79
|
+
|
|
80
|
+
return {
|
|
81
|
+
data: buffer.data,
|
|
82
|
+
toString: function toString() {
|
|
83
|
+
return 'Commit Transaction: name=' + _this2.name;
|
|
84
|
+
}
|
|
85
|
+
};
|
|
128
86
|
}
|
|
129
|
-
|
|
130
|
-
|
|
87
|
+
}, {
|
|
88
|
+
key: 'rollbackPayload',
|
|
89
|
+
value: function rollbackPayload(txnDescriptor) {
|
|
90
|
+
var _this3 = this;
|
|
91
|
+
|
|
92
|
+
var buffer = new WritableTrackingBuffer(100, 'ascii');
|
|
93
|
+
writeAllHeaders(buffer, txnDescriptor, this.outstandingRequestCount);
|
|
94
|
+
buffer.writeUShort(OPERATION_TYPE.TM_ROLLBACK_XACT);
|
|
95
|
+
buffer.writeUInt8(this.name.length * 2);
|
|
96
|
+
buffer.writeString(this.name, 'ucs2');
|
|
97
|
+
// No fBeginXact flag, so no new transaction is started.
|
|
98
|
+
buffer.writeUInt8(0);
|
|
99
|
+
|
|
100
|
+
return {
|
|
101
|
+
data: buffer.data,
|
|
102
|
+
toString: function toString() {
|
|
103
|
+
return 'Rollback Transaction: name=' + _this3.name;
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}, {
|
|
108
|
+
key: 'savePayload',
|
|
109
|
+
value: function savePayload(txnDescriptor) {
|
|
110
|
+
var _this4 = this;
|
|
111
|
+
|
|
112
|
+
var buffer = new WritableTrackingBuffer(100, 'ascii');
|
|
113
|
+
writeAllHeaders(buffer, txnDescriptor, this.outstandingRequestCount);
|
|
114
|
+
buffer.writeUShort(OPERATION_TYPE.TM_SAVE_XACT);
|
|
115
|
+
buffer.writeUInt8(this.name.length * 2);
|
|
116
|
+
buffer.writeString(this.name, 'ucs2');
|
|
117
|
+
|
|
118
|
+
return {
|
|
119
|
+
data: buffer.data,
|
|
120
|
+
toString: function toString() {
|
|
121
|
+
return 'Save Transaction: name=' + _this4.name;
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
}, {
|
|
126
|
+
key: 'isolationLevelToTSQL',
|
|
127
|
+
value: function isolationLevelToTSQL() {
|
|
128
|
+
switch (this.isolationLevel) {
|
|
129
|
+
case ISOLATION_LEVEL.READ_UNCOMMITTED:
|
|
130
|
+
return 'READ UNCOMMITTED';
|
|
131
|
+
case ISOLATION_LEVEL.READ_COMMITTED:
|
|
132
|
+
return 'READ COMMITTED';
|
|
133
|
+
case ISOLATION_LEVEL.REPEATABLE_READ:
|
|
134
|
+
return 'REPEATABLE READ';
|
|
135
|
+
case ISOLATION_LEVEL.SERIALIZABLE:
|
|
136
|
+
return 'SERIALIZABLE';
|
|
137
|
+
case ISOLATION_LEVEL.SNAPSHOT:
|
|
138
|
+
return 'SNAPSHOT';
|
|
139
|
+
}
|
|
140
|
+
return '';
|
|
141
|
+
}
|
|
142
|
+
}]);
|
|
131
143
|
|
|
132
144
|
return Transaction;
|
|
133
145
|
})();
|
|
134
146
|
|
|
135
|
-
exports.Transaction = Transaction;
|
|
136
|
-
|
|
137
|
-
exports.ISOLATION_LEVEL = ISOLATION_LEVEL;
|
|
147
|
+
module.exports.Transaction = Transaction;
|