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/package.json
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"homepage": "https://github.com/pekim/tedious",
|
|
28
28
|
"bugs": "https://github.com/pekim/tedious/issues",
|
|
29
29
|
"license": "MIT",
|
|
30
|
-
"version": "1.
|
|
30
|
+
"version": "1.14.0",
|
|
31
31
|
"main": "./lib/tedious.js",
|
|
32
32
|
"repository": {
|
|
33
33
|
"type": "git",
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"bl": "^1.0.0",
|
|
43
43
|
"iconv-lite": "^0.4.11",
|
|
44
44
|
"readable-stream": "^2.0.2",
|
|
45
|
+
"semver": "^5.1.0",
|
|
45
46
|
"sprintf": "0.1.5"
|
|
46
47
|
},
|
|
47
48
|
"devDependencies": {
|
|
@@ -49,19 +50,19 @@
|
|
|
49
50
|
"babel": "^5.8.19",
|
|
50
51
|
"benchmark": "^1.0.0",
|
|
51
52
|
"coffee-script": "^1.9.3",
|
|
53
|
+
"eslint": "^1.10.3",
|
|
52
54
|
"nodeunit": "^0.9.1"
|
|
53
55
|
},
|
|
54
56
|
"scripts": {
|
|
55
|
-
"
|
|
56
|
-
"test
|
|
57
|
-
"
|
|
57
|
+
"pretest": "eslint src test",
|
|
58
|
+
"test": "nodeunit --reporter minimal test/setup.js test/unit/ test/unit/token/ test/unit/tracking-buffer",
|
|
59
|
+
"pretest-all": "eslint src test",
|
|
60
|
+
"test-all": "nodeunit --reporter minimal test/setup.js test/unit/ test/unit/token/ test/unit/tracking-buffer test/integration/",
|
|
61
|
+
"pretest-integration": "eslint src test",
|
|
62
|
+
"test-integration": "nodeunit --reporter minimal test/setup.js test/integration/",
|
|
58
63
|
"prepublish": "coffee scripts/build.coffee"
|
|
59
64
|
},
|
|
60
65
|
"babel": {
|
|
61
|
-
"
|
|
62
|
-
"regenerator",
|
|
63
|
-
"es6.modules",
|
|
64
|
-
"runtime"
|
|
65
|
-
]
|
|
66
|
+
"optional": [ "runtime" ]
|
|
66
67
|
}
|
|
67
68
|
}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
{Request, TYPES} = require "../src/tedious"
|
|
2
|
-
|
|
3
|
-
module.exports =
|
|
4
|
-
|
|
5
|
-
"nvarchar (small)":
|
|
6
|
-
setup: (connection, cb) ->
|
|
7
|
-
request = new Request "CREATE TABLE #benchmark ([value] nvarchar(max))", (err) ->
|
|
8
|
-
return cb(err) if err
|
|
9
|
-
|
|
10
|
-
request = new Request "INSERT INTO #benchmark ([value]) VALUES (@value)", cb
|
|
11
|
-
request.addParameter("value", TYPES.NVarChar, "asdf")
|
|
12
|
-
connection.execSql(request)
|
|
13
|
-
|
|
14
|
-
connection.execSqlBatch(request)
|
|
15
|
-
|
|
16
|
-
exec: (connection, cb) ->
|
|
17
|
-
request = new Request "SELECT * FROM #benchmark", cb
|
|
18
|
-
connection.execSql(request)
|
|
19
|
-
|
|
20
|
-
teardown: (connection, cb) ->
|
|
21
|
-
request = new Request "DROP TABLE #benchmark", cb
|
|
22
|
-
connection.execSqlBatch(request)
|
|
23
|
-
|
|
24
|
-
"nvarchar (large)":
|
|
25
|
-
setup: (connection, cb) ->
|
|
26
|
-
request = new Request "CREATE TABLE #benchmark ([value] nvarchar(max))", (err) ->
|
|
27
|
-
return cb(err) if err
|
|
28
|
-
|
|
29
|
-
request = new Request "INSERT INTO #benchmark ([value]) VALUES (@value)", cb
|
|
30
|
-
request.addParameter("value", TYPES.NVarChar, new Array(5 * 1024 * 1024).join("x"))
|
|
31
|
-
connection.execSql(request)
|
|
32
|
-
|
|
33
|
-
connection.execSqlBatch(request)
|
|
34
|
-
|
|
35
|
-
exec: (connection, cb) ->
|
|
36
|
-
request = new Request "SELECT * FROM #benchmark", cb
|
|
37
|
-
connection.execSql(request)
|
|
38
|
-
|
|
39
|
-
teardown: (connection, cb) ->
|
|
40
|
-
request = new Request "DROP TABLE #benchmark", cb
|
|
41
|
-
connection.execSqlBatch(request)
|
|
42
|
-
|
|
43
|
-
"varbinary (small)":
|
|
44
|
-
setup: (connection, cb) ->
|
|
45
|
-
request = new Request "CREATE TABLE #benchmark ([value] varbinary(max))", (err) ->
|
|
46
|
-
return cb(err) if err
|
|
47
|
-
|
|
48
|
-
request = new Request "INSERT INTO #benchmark ([value]) VALUES (@value)", cb
|
|
49
|
-
request.addParameter("value", TYPES.VarBinary, new Buffer("asdf"))
|
|
50
|
-
connection.execSql(request)
|
|
51
|
-
|
|
52
|
-
connection.execSqlBatch(request)
|
|
53
|
-
|
|
54
|
-
exec: (connection, cb) ->
|
|
55
|
-
request = new Request "SELECT * FROM #benchmark", cb
|
|
56
|
-
connection.execSql(request)
|
|
57
|
-
|
|
58
|
-
teardown: (connection, cb) ->
|
|
59
|
-
request = new Request "DROP TABLE #benchmark", cb
|
|
60
|
-
connection.execSqlBatch(request)
|
|
61
|
-
|
|
62
|
-
"varbinary (4)":
|
|
63
|
-
setup: (connection, cb) ->
|
|
64
|
-
request = new Request "CREATE TABLE #benchmark ([value] varbinary(4))", (err) ->
|
|
65
|
-
return cb(err) if err
|
|
66
|
-
|
|
67
|
-
request = new Request "INSERT INTO #benchmark ([value]) VALUES (@value)", cb
|
|
68
|
-
request.addParameter("value", TYPES.VarBinary, new Buffer("asdf"))
|
|
69
|
-
connection.execSql(request)
|
|
70
|
-
|
|
71
|
-
connection.execSqlBatch(request)
|
|
72
|
-
|
|
73
|
-
exec: (connection, cb) ->
|
|
74
|
-
request = new Request "SELECT * FROM #benchmark", cb
|
|
75
|
-
connection.execSql(request)
|
|
76
|
-
|
|
77
|
-
teardown: (connection, cb) ->
|
|
78
|
-
request = new Request "DROP TABLE #benchmark", cb
|
|
79
|
-
connection.execSqlBatch(request)
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
"varbinary (large)":
|
|
83
|
-
setup: (connection, cb) ->
|
|
84
|
-
request = new Request "CREATE TABLE #benchmark ([value] varbinary(max))", (err) ->
|
|
85
|
-
return cb(err) if err
|
|
86
|
-
|
|
87
|
-
request = new Request "INSERT INTO #benchmark ([value]) VALUES (@value)", cb
|
|
88
|
-
buf = new Buffer(5 * 1024 * 1024)
|
|
89
|
-
buf.fill("x")
|
|
90
|
-
request.addParameter("value", TYPES.VarBinary, buf)
|
|
91
|
-
connection.execSql(request)
|
|
92
|
-
|
|
93
|
-
connection.execSqlBatch(request)
|
|
94
|
-
|
|
95
|
-
exec: (connection, cb) ->
|
|
96
|
-
request = new Request "SELECT * FROM #benchmark", cb
|
|
97
|
-
connection.execSql(request)
|
|
98
|
-
|
|
99
|
-
teardown: (connection, cb) ->
|
|
100
|
-
request = new Request "DROP TABLE #benchmark", cb
|
|
101
|
-
connection.execSqlBatch(request)
|
|
102
|
-
|
|
103
|
-
"varbinary (huge)":
|
|
104
|
-
setup: (connection, cb) ->
|
|
105
|
-
request = new Request "CREATE TABLE #benchmark ([value] varbinary(max))", (err) ->
|
|
106
|
-
return cb(err) if err
|
|
107
|
-
|
|
108
|
-
request = new Request "INSERT INTO #benchmark ([value]) VALUES (@value)", cb
|
|
109
|
-
buf = new Buffer(50 * 1024 * 1024)
|
|
110
|
-
buf.fill("x")
|
|
111
|
-
request.addParameter("value", TYPES.VarBinary, buf)
|
|
112
|
-
connection.execSql(request)
|
|
113
|
-
|
|
114
|
-
connection.execSqlBatch(request)
|
|
115
|
-
|
|
116
|
-
exec: (connection, cb) ->
|
|
117
|
-
request = new Request "SELECT * FROM #benchmark", cb
|
|
118
|
-
connection.execSql(request)
|
|
119
|
-
|
|
120
|
-
teardown: (connection, cb) ->
|
|
121
|
-
request = new Request "DROP TABLE #benchmark", cb
|
|
122
|
-
connection.execSqlBatch(request)
|
package/benchmarks/query.coffee
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
fs = require "fs"
|
|
2
|
-
|
|
3
|
-
Benchmark = require("benchmark")
|
|
4
|
-
{Connection} = require "../src/tedious"
|
|
5
|
-
|
|
6
|
-
setup = (cb) ->
|
|
7
|
-
config = JSON.parse(fs.readFileSync(process.env.HOME + '/.tedious/test-connection.json', 'utf8')).config
|
|
8
|
-
|
|
9
|
-
connection = new Connection(config)
|
|
10
|
-
connection.on "connect", ->
|
|
11
|
-
cb(connection)
|
|
12
|
-
|
|
13
|
-
benchmarks = require("./benchmarks")
|
|
14
|
-
|
|
15
|
-
setup (connection) ->
|
|
16
|
-
execute = (names, cb) ->
|
|
17
|
-
return cb() unless names.length
|
|
18
|
-
|
|
19
|
-
name = names.shift()
|
|
20
|
-
|
|
21
|
-
memMax = memStart = process.memoryUsage().rss;
|
|
22
|
-
|
|
23
|
-
benchmark = benchmarks[name]
|
|
24
|
-
benchmark.setup connection, (err) ->
|
|
25
|
-
if (err)
|
|
26
|
-
console.log("Error in '#{name}' setup:")
|
|
27
|
-
console.error(err)
|
|
28
|
-
|
|
29
|
-
bench = new Benchmark name,
|
|
30
|
-
defer: true
|
|
31
|
-
fn: (deferred) ->
|
|
32
|
-
benchmark.exec connection, (err) ->
|
|
33
|
-
if (err)
|
|
34
|
-
console.log("Error in '#{name}' execution:")
|
|
35
|
-
console.error(err)
|
|
36
|
-
|
|
37
|
-
memMax = Math.max(memMax, process.memoryUsage().rss);
|
|
38
|
-
|
|
39
|
-
deferred.resolve()
|
|
40
|
-
|
|
41
|
-
bench.on "complete", (event) ->
|
|
42
|
-
console.log(String(event.target))
|
|
43
|
-
console.log("Memory:", (memMax - memStart)/1024/1024)
|
|
44
|
-
|
|
45
|
-
benchmark.teardown connection, (err) ->
|
|
46
|
-
if (err)
|
|
47
|
-
console.log("Error in '#{name}' teardown:")
|
|
48
|
-
console.error(err)
|
|
49
|
-
|
|
50
|
-
execute(names, cb)
|
|
51
|
-
|
|
52
|
-
console.log "Benchmarking '#{name}'"
|
|
53
|
-
bench.run "async": true
|
|
54
|
-
|
|
55
|
-
execute Object.keys(benchmarks), ->
|
|
56
|
-
connection.close()
|
|
57
|
-
console.log("Done!")
|