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.
Files changed (62) hide show
  1. package/README.md +1 -1
  2. package/appveyor.yml +9 -5
  3. package/benchmarks/README.md +33 -0
  4. package/benchmarks/common.js +82 -0
  5. package/benchmarks/index.js +34 -0
  6. package/benchmarks/query/many-result-rows.js +49 -0
  7. package/benchmarks/query/nvarchar-large.js +44 -0
  8. package/benchmarks/query/nvarchar-small.js +44 -0
  9. package/benchmarks/query/varbinary-4.js +42 -0
  10. package/benchmarks/query/varbinary-huge.js +46 -0
  11. package/benchmarks/query/varbinary-large.js +46 -0
  12. package/benchmarks/query/varbinary-small.js +42 -0
  13. package/benchmarks/token-parser/colmetadata-token.js +42 -0
  14. package/benchmarks/token-parser/done-token.js +42 -0
  15. package/benchmarks/token-parser/simple-tokens.js +366 -0
  16. package/lib/all-headers.js +9 -11
  17. package/lib/buffertools.js +17 -13
  18. package/lib/bulk-load.js +196 -169
  19. package/lib/collation.js +80 -2
  20. package/lib/connection.js +1086 -1060
  21. package/lib/data-type.js +450 -253
  22. package/lib/debug.js +57 -51
  23. package/lib/errors.js +40 -55
  24. package/lib/guid-parser.js +12 -36
  25. package/lib/instance-lookup.js +57 -54
  26. package/lib/library.js +3 -2
  27. package/lib/login7-payload.js +187 -180
  28. package/lib/message-io.js +169 -199
  29. package/lib/metadata-parser.js +169 -255
  30. package/lib/ntlm-payload.js +173 -160
  31. package/lib/packet.js +166 -152
  32. package/lib/prelogin-payload.js +170 -160
  33. package/lib/request.js +122 -122
  34. package/lib/rpcrequest-payload.js +64 -38
  35. package/lib/special-stored-procedure.js +3 -2
  36. package/lib/sqlbatch-payload.js +20 -16
  37. package/lib/stream-parser.js +116 -104
  38. package/lib/tds-versions.js +5 -8
  39. package/lib/tedious.js +8 -14
  40. package/lib/token/colmetadata-token-parser.js +79 -125
  41. package/lib/token/done-token-parser.js +47 -129
  42. package/lib/token/env-change-token-parser.js +90 -126
  43. package/lib/token/infoerror-token-parser.js +47 -125
  44. package/lib/token/loginack-token-parser.js +36 -74
  45. package/lib/token/nbcrow-token-parser.js +40 -64
  46. package/lib/token/order-token-parser.js +26 -43
  47. package/lib/token/returnstatus-token-parser.js +11 -23
  48. package/lib/token/returnvalue-token-parser.js +31 -54
  49. package/lib/token/row-token-parser.js +39 -52
  50. package/lib/token/sspi-token-parser.js +14 -32
  51. package/lib/token/stream-parser.js +424 -304
  52. package/lib/token/token-stream-parser.js +39 -34
  53. package/lib/token/token.js +3 -6
  54. package/lib/tracking-buffer/bigint.js +45 -48
  55. package/lib/tracking-buffer/readable-tracking-buffer.js +238 -223
  56. package/lib/tracking-buffer/tracking-buffer.js +3 -9
  57. package/lib/tracking-buffer/writable-tracking-buffer.js +272 -244
  58. package/lib/transaction.js +112 -102
  59. package/lib/value-parser.js +559 -1154
  60. package/package.json +10 -9
  61. package/benchmarks/benchmarks.coffee +0 -122
  62. 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.12.3",
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
- "test": "nodeunit --reporter minimal test/register-coffee.js test/unit/ test/unit/token/ test/unit/tracking-buffer",
56
- "test-all": "nodeunit --reporter minimal test/register-coffee.js test/unit/ test/unit/token/ test/unit/tracking-buffer test/integration/",
57
- "test-integration": "nodeunit --reporter minimal test/register-coffee.js test/integration/",
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
- "whitelist": [
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)
@@ -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!")