tedious 20.3.2 → 20.3.4
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/LICENSE +1 -1
- package/README.md +11 -21
- package/lib/connection.js +8 -1
- package/lib/connection.js.map +1 -1
- package/lib/data-types/plp-stream.d.ts +1 -1
- package/lib/data-types/plp-stream.js +12 -9
- package/lib/data-types/plp-stream.js.map +1 -1
- package/lib/data-types/varchar.js +9 -14
- package/lib/data-types/varchar.js.map +1 -1
- package/lib/metadata-parser.d.ts +1 -3
- package/lib/metadata-parser.js +1 -22
- package/lib/metadata-parser.js.map +1 -1
- package/lib/request.d.ts +4 -5
- package/lib/request.js +5 -6
- package/lib/request.js.map +1 -1
- package/lib/token/colmetadata-token-parser.d.ts +11 -3
- package/lib/token/colmetadata-token-parser.js +29 -42
- package/lib/token/colmetadata-token-parser.js.map +1 -1
- package/lib/token/nbcrow-token-parser.d.ts +11 -3
- package/lib/token/nbcrow-token-parser.js +22 -89
- package/lib/token/nbcrow-token-parser.js.map +1 -1
- package/lib/token/returnvalue-token-parser.d.ts +19 -3
- package/lib/token/returnvalue-token-parser.js +67 -73
- package/lib/token/returnvalue-token-parser.js.map +1 -1
- package/lib/token/row-token-parser.d.ts +33 -3
- package/lib/token/row-token-parser.js +62 -60
- package/lib/token/row-token-parser.js.map +1 -1
- package/lib/token/stream-parser.d.ts +59 -27
- package/lib/token/stream-parser.js +157 -325
- package/lib/token/stream-parser.js.map +1 -1
- package/lib/token/token-stream-parser.d.ts +12 -5
- package/lib/token/token-stream-parser.js +46 -17
- package/lib/token/token-stream-parser.js.map +1 -1
- package/lib/value-parser.d.ts +19 -2
- package/lib/value-parser.js +73 -30
- package/lib/value-parser.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,101 +3,34 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.NBCRowTokenReader = void 0;
|
|
7
7
|
var _token = require("./token");
|
|
8
|
-
var iconv = _interopRequireWildcard(require("iconv-lite"));
|
|
9
|
-
var _valueParser = require("../value-parser");
|
|
10
8
|
var _helpers = require("./helpers");
|
|
11
|
-
|
|
9
|
+
var _rowTokenParser = require("./row-token-parser");
|
|
12
10
|
// s2.2.7.13 (introduced in TDS 7.3.B)
|
|
13
11
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Reads an `NBCROW` token - a `ROW` token prefixed with a bitmap that flags
|
|
14
|
+
* `null` columns, which then have no data.
|
|
15
|
+
*/
|
|
16
|
+
class NBCRowTokenReader extends _rowTokenParser.ColumnValuesReader {
|
|
17
|
+
constructor() {
|
|
18
|
+
super();
|
|
19
|
+
this.nullBitmap = undefined;
|
|
21
20
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
bitmap.push(byte & 0b100 ? true : false);
|
|
29
|
-
bitmap.push(byte & 0b1000 ? true : false);
|
|
30
|
-
bitmap.push(byte & 0b10000 ? true : false);
|
|
31
|
-
bitmap.push(byte & 0b100000 ? true : false);
|
|
32
|
-
bitmap.push(byte & 0b1000000 ? true : false);
|
|
33
|
-
bitmap.push(byte & 0b10000000 ? true : false);
|
|
34
|
-
}
|
|
35
|
-
for (let i = 0; i < colMetadata.length; i++) {
|
|
36
|
-
const metadata = colMetadata[i];
|
|
37
|
-
if (bitmap[i]) {
|
|
38
|
-
columns.push({
|
|
39
|
-
value: null,
|
|
40
|
-
metadata
|
|
41
|
-
});
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
|
-
while (true) {
|
|
45
|
-
if ((0, _valueParser.isPLPStream)(metadata)) {
|
|
46
|
-
const chunks = await (0, _valueParser.readPLPStream)(parser);
|
|
47
|
-
if (chunks === null) {
|
|
48
|
-
columns.push({
|
|
49
|
-
value: chunks,
|
|
50
|
-
metadata
|
|
51
|
-
});
|
|
52
|
-
} else if (metadata.type.name === 'NVarChar' || metadata.type.name === 'Xml') {
|
|
53
|
-
columns.push({
|
|
54
|
-
value: Buffer.concat(chunks).toString('ucs2'),
|
|
55
|
-
metadata
|
|
56
|
-
});
|
|
57
|
-
} else if (metadata.type.name === 'VarChar') {
|
|
58
|
-
columns.push({
|
|
59
|
-
value: iconv.decode(Buffer.concat(chunks), metadata.collation?.codepage ?? 'utf8'),
|
|
60
|
-
metadata
|
|
61
|
-
});
|
|
62
|
-
} else if (metadata.type.name === 'VarBinary' || metadata.type.name === 'UDT') {
|
|
63
|
-
columns.push({
|
|
64
|
-
value: Buffer.concat(chunks),
|
|
65
|
-
metadata
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
} else {
|
|
69
|
-
let result;
|
|
70
|
-
try {
|
|
71
|
-
result = (0, _valueParser.readValue)(parser.buffer, parser.position, metadata, parser.options);
|
|
72
|
-
} catch (err) {
|
|
73
|
-
if (err instanceof _helpers.NotEnoughDataError) {
|
|
74
|
-
await parser.waitForChunk();
|
|
75
|
-
continue;
|
|
76
|
-
}
|
|
77
|
-
throw err;
|
|
78
|
-
}
|
|
79
|
-
parser.position = result.offset;
|
|
80
|
-
columns.push({
|
|
81
|
-
value: result.value,
|
|
82
|
-
metadata
|
|
83
|
-
});
|
|
21
|
+
read(parser) {
|
|
22
|
+
if (this.nullBitmap === undefined) {
|
|
23
|
+
const start = parser.position;
|
|
24
|
+
const end = start + Math.ceil(parser.colMetadata.length / 8);
|
|
25
|
+
if (parser.buffer.length < end) {
|
|
26
|
+
throw new _helpers.NotEnoughDataError(end);
|
|
84
27
|
}
|
|
85
|
-
|
|
28
|
+
this.nullBitmap = parser.buffer.subarray(start, end);
|
|
29
|
+
parser.position = end;
|
|
86
30
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
const columnsMap = Object.create(null);
|
|
90
|
-
columns.forEach(column => {
|
|
91
|
-
const colName = column.metadata.colName;
|
|
92
|
-
if (columnsMap[colName] == null) {
|
|
93
|
-
columnsMap[colName] = column;
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
return new _token.NBCRowToken(columnsMap);
|
|
97
|
-
} else {
|
|
98
|
-
return new _token.NBCRowToken(columns);
|
|
31
|
+
this.readColumns(parser, this.nullBitmap);
|
|
32
|
+
return new _token.NBCRowToken(parser.options.useColumnNames ? (0, _rowTokenParser.toColumnsMap)(this.columns) : this.columns);
|
|
99
33
|
}
|
|
100
34
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiaWNvbnYiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl92YWx1ZVBhcnNlciIsIl9oZWxwZXJzIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiZGVmYXVsdCIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwibmJjUm93UGFyc2VyIiwicGFyc2VyIiwiY29sTWV0YWRhdGEiLCJjb2x1bW5zIiwiYml0bWFwIiwiYml0bWFwQnl0ZUxlbmd0aCIsIk1hdGgiLCJjZWlsIiwibGVuZ3RoIiwiYnVmZmVyIiwicG9zaXRpb24iLCJ3YWl0Rm9yQ2h1bmsiLCJieXRlcyIsInNsaWNlIiwibGVuIiwiYnl0ZSIsInB1c2giLCJtZXRhZGF0YSIsInZhbHVlIiwiaXNQTFBTdHJlYW0iLCJjaHVua3MiLCJyZWFkUExQU3RyZWFtIiwidHlwZSIsIm5hbWUiLCJCdWZmZXIiLCJjb25jYXQiLCJ0b1N0cmluZyIsImRlY29kZSIsImNvbGxhdGlvbiIsImNvZGVwYWdlIiwicmVzdWx0IiwicmVhZFZhbHVlIiwib3B0aW9ucyIsImVyciIsIk5vdEVub3VnaERhdGFFcnJvciIsIm9mZnNldCIsInVzZUNvbHVtbk5hbWVzIiwiY29sdW1uc01hcCIsImNyZWF0ZSIsImZvckVhY2giLCJjb2x1bW4iLCJjb2xOYW1lIiwiTkJDUm93VG9rZW4iLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vbmJjcm93LXRva2VuLXBhcnNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzMi4yLjcuMTMgKGludHJvZHVjZWQgaW4gVERTIDcuMy5CKVxuXG5pbXBvcnQgUGFyc2VyIGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5pbXBvcnQgeyB0eXBlIENvbHVtbk1ldGFkYXRhIH0gZnJvbSAnLi9jb2xtZXRhZGF0YS10b2tlbi1wYXJzZXInO1xuXG5pbXBvcnQgeyBOQkNSb3dUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuaW1wb3J0ICogYXMgaWNvbnYgZnJvbSAnaWNvbnYtbGl0ZSc7XG5cbmltcG9ydCB7IGlzUExQU3RyZWFtLCByZWFkUExQU3RyZWFtLCByZWFkVmFsdWUgfSBmcm9tICcuLi92YWx1ZS1wYXJzZXInO1xuaW1wb3J0IHsgTm90RW5vdWdoRGF0YUVycm9yIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuaW50ZXJmYWNlIENvbHVtbiB7XG4gIHZhbHVlOiB1bmtub3duO1xuICBtZXRhZGF0YTogQ29sdW1uTWV0YWRhdGE7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG5iY1Jvd1BhcnNlcihwYXJzZXI6IFBhcnNlcik6IFByb21pc2U8TkJDUm93VG9rZW4+IHtcbiAgY29uc3QgY29sTWV0YWRhdGEgPSBwYXJzZXIuY29sTWV0YWRhdGE7XG4gIGNvbnN0IGNvbHVtbnM6IENvbHVtbltdID0gW107XG4gIGNvbnN0IGJpdG1hcDogYm9vbGVhbltdID0gW107XG4gIGNvbnN0IGJpdG1hcEJ5dGVMZW5ndGggPSBNYXRoLmNlaWwoY29sTWV0YWRhdGEubGVuZ3RoIC8gOCk7XG5cbiAgd2hpbGUgKHBhcnNlci5idWZmZXIubGVuZ3RoIC0gcGFyc2VyLnBvc2l0aW9uIDwgYml0bWFwQnl0ZUxlbmd0aCkge1xuICAgIGF3YWl0IHBhcnNlci53YWl0Rm9yQ2h1bmsoKTtcbiAgfVxuXG4gIGNvbnN0IGJ5dGVzID0gcGFyc2VyLmJ1ZmZlci5zbGljZShwYXJzZXIucG9zaXRpb24sIHBhcnNlci5wb3NpdGlvbiArIGJpdG1hcEJ5dGVMZW5ndGgpO1xuICBwYXJzZXIucG9zaXRpb24gKz0gYml0bWFwQnl0ZUxlbmd0aDtcblxuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYnl0ZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjb25zdCBieXRlID0gYnl0ZXNbaV07XG5cbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxID8gdHJ1ZSA6IGZhbHNlKTtcbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxMCA/IHRydWUgOiBmYWxzZSk7XG4gICAgYml0bWFwLnB1c2goYnl0ZSAmIDBiMTAwID8gdHJ1ZSA6IGZhbHNlKTtcbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxMDAwID8gdHJ1ZSA6IGZhbHNlKTtcbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxMDAwMCA/IHRydWUgOiBmYWxzZSk7XG4gICAgYml0bWFwLnB1c2goYnl0ZSAmIDBiMTAwMDAwID8gdHJ1ZSA6IGZhbHNlKTtcbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxMDAwMDAwID8gdHJ1ZSA6IGZhbHNlKTtcbiAgICBiaXRtYXAucHVzaChieXRlICYgMGIxMDAwMDAwMCA/IHRydWUgOiBmYWxzZSk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbE1ldGFkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBjb2xNZXRhZGF0YVtpXTtcbiAgICBpZiAoYml0bWFwW2ldKSB7XG4gICAgICBjb2x1bW5zLnB1c2goeyB2YWx1ZTogbnVsbCwgbWV0YWRhdGEgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGlzUExQU3RyZWFtKG1ldGFkYXRhKSkge1xuICAgICAgICBjb25zdCBjaHVua3MgPSBhd2FpdCByZWFkUExQU3RyZWFtKHBhcnNlcik7XG5cbiAgICAgICAgaWYgKGNodW5rcyA9PT0gbnVsbCkge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiBjaHVua3MsIG1ldGFkYXRhIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ05WYXJDaGFyJyB8fCBtZXRhZGF0YS50eXBlLm5hbWUgPT09ICdYbWwnKSB7XG4gICAgICAgICAgY29sdW1ucy5wdXNoKHsgdmFsdWU6IEJ1ZmZlci5jb25jYXQoY2h1bmtzKS50b1N0cmluZygndWNzMicpLCBtZXRhZGF0YSB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChtZXRhZGF0YS50eXBlLm5hbWUgPT09ICdWYXJDaGFyJykge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiBpY29udi5kZWNvZGUoQnVmZmVyLmNvbmNhdChjaHVua3MpLCBtZXRhZGF0YS5jb2xsYXRpb24/LmNvZGVwYWdlID8/ICd1dGY4JyksIG1ldGFkYXRhIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ1ZhckJpbmFyeScgfHwgbWV0YWRhdGEudHlwZS5uYW1lID09PSAnVURUJykge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiBCdWZmZXIuY29uY2F0KGNodW5rcyksIG1ldGFkYXRhIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlc3VsdCA9IHJlYWRWYWx1ZShwYXJzZXIuYnVmZmVyLCBwYXJzZXIucG9zaXRpb24sIG1ldGFkYXRhLCBwYXJzZXIub3B0aW9ucyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgICAgIGF3YWl0IHBhcnNlci53YWl0Rm9yQ2h1bmsoKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcnNlci5wb3NpdGlvbiA9IHJlc3VsdC5vZmZzZXQ7XG4gICAgICAgIGNvbHVtbnMucHVzaCh7IHZhbHVlOiByZXN1bHQudmFsdWUsIG1ldGFkYXRhIH0pO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAocGFyc2VyLm9wdGlvbnMudXNlQ29sdW1uTmFtZXMpIHtcbiAgICBjb25zdCBjb2x1bW5zTWFwOiB7IFtrZXk6IHN0cmluZ106IENvbHVtbiB9ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICBjb25zdCBjb2xOYW1lID0gY29sdW1uLm1ldGFkYXRhLmNvbE5hbWU7XG4gICAgICBpZiAoY29sdW1uc01hcFtjb2xOYW1lXSA9PSBudWxsKSB7XG4gICAgICAgIGNvbHVtbnNNYXBbY29sTmFtZV0gPSBjb2x1bW47XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IE5CQ1Jvd1Rva2VuKGNvbHVtbnNNYXApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgTkJDUm93VG9rZW4oY29sdW1ucyk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVmYXVsdCBuYmNSb3dQYXJzZXI7XG5tb2R1bGUuZXhwb3J0cyA9IG5iY1Jvd1BhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBS0EsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksUUFBQSxHQUFBSixPQUFBO0FBQStDLFNBQUFFLHdCQUFBRyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBTCx1QkFBQSxZQUFBQSxDQUFBRyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQUMsT0FBQSxFQUFBVixDQUFBLGlCQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFNBQUFRLENBQUEs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UUFBUSxDQUFDSyxJQUFJLENBQUNDLElBQUksS0FBSyxLQUFLLEVBQUU7VUFDN0VwQixPQUFPLENBQUNhLElBQUksQ0FBQztZQUFFRSxLQUFLLEVBQUVNLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDTCxNQUFNLENBQUM7WUFBRUg7VUFBUyxDQUFDLENBQUM7UUFDMUQ7TUFDRixDQUFDLE1BQU07UUFDTCxJQUFJYSxNQUFNO1FBQ1YsSUFBSTtVQUNGQSxNQUFNLEdBQUcsSUFBQUMsc0JBQVMsRUFBQzlCLE1BQU0sQ0FBQ1EsTUFBTSxFQUFFUixNQUFNLENBQUNTLFFBQVEsRUFBRU8sUUFBUSxFQUFFaEIsTUFBTSxDQUFDK0IsT0FBTyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxPQUFPQyxHQUFHLEVBQUU7VUFDWixJQUFJQSxHQUFHLFlBQVlDLDJCQUFrQixFQUFFO1lBQ3JDLE1BQU1qQyxNQUFNLENBQUNVLFlBQVksQ0FBQyxDQUFDO1lBQzNCO1VBQ0Y7VUFFQSxNQUFNc0IsR0FBRztRQUNYO1FBRUFoQyxNQUFNLENBQUNTLFFBQVEsR0FBR29CLE1BQU0sQ0FBQ0ssTUFBTTtRQUMvQmhDLE9BQU8sQ0FBQ2EsSUFBSSxDQUFDO1VBQUVFLEtBQUssRUFBRVksTUFBTSxDQUFDWixLQUFLO1VBQUVEO1FBQVMsQ0FBQyxDQUFDO01BQ2pEO01BRUE7SUFDRjtFQUNGO0VBRUEsSUFBSWhCLE1BQU0sQ0FBQytCLE9BQU8sQ0FBQ0ksY0FBYyxFQUFFO0lBQ2pDLE1BQU1DLFVBQXFDLEdBQUd4QyxNQUFNLENBQUN5QyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBRWpFbkMsT0FBTyxDQUFDb0MsT0FBTyxDQUFFQyxNQUFNLElBQUs7TUFDMUIsTUFBTUMsT0FBTyxHQUFHRCxNQUFNLENBQUN2QixRQUFRLENBQUN3QixPQUFPO01BQ3ZDLElBQUlKLFVBQVUsQ0FBQ0ksT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFO1FBQy9CSixVQUFVLENBQUNJLE9BQU8sQ0FBQyxHQUFHRCxNQUFNO01BQzlCO0lBQ0YsQ0FBQyxDQUFDO0lBRUYsT0FBTyxJQUFJRSxrQkFBVyxDQUFDTCxVQUFVLENBQUM7RUFDcEMsQ0FBQyxNQUFNO0lBQ0wsT0FBTyxJQUFJSyxrQkFBVyxDQUFDdkMsT0FBTyxDQUFDO0VBQ2pDO0FBQ0Y7QUFBQyxJQUFBd0MsUUFBQSxHQUFBQyxPQUFBLENBQUFyRCxPQUFBLEdBR2NTLFlBQVk7QUFDM0I2QyxNQUFNLENBQUNELE9BQU8sR0FBRzVDLFlBQVkiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
35
|
+
exports.NBCRowTokenReader = NBCRowTokenReader;
|
|
36
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2hlbHBlcnMiLCJfcm93VG9rZW5QYXJzZXIiLCJOQkNSb3dUb2tlblJlYWRlciIsIkNvbHVtblZhbHVlc1JlYWRlciIsImNvbnN0cnVjdG9yIiwibnVsbEJpdG1hcCIsInVuZGVmaW5lZCIsInJlYWQiLCJwYXJzZXIiLCJzdGFydCIsInBvc2l0aW9uIiwiZW5kIiwiTWF0aCIsImNlaWwiLCJjb2xNZXRhZGF0YSIsImxlbmd0aCIsImJ1ZmZlciIsIk5vdEVub3VnaERhdGFFcnJvciIsInN1YmFycmF5IiwicmVhZENvbHVtbnMiLCJOQkNSb3dUb2tlbiIsIm9wdGlvbnMiLCJ1c2VDb2x1bW5OYW1lcyIsInRvQ29sdW1uc01hcCIsImNvbHVtbnMiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL25iY3Jvdy10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gczIuMi43LjEzIChpbnRyb2R1Y2VkIGluIFREUyA3LjMuQilcblxuaW1wb3J0IFBhcnNlciwgeyB0eXBlIFRva2VuUmVhZGVyIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcblxuaW1wb3J0IHsgTkJDUm93VG9rZW4gfSBmcm9tICcuL3Rva2VuJztcbmltcG9ydCB7IE5vdEVub3VnaERhdGFFcnJvciB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBDb2x1bW5WYWx1ZXNSZWFkZXIsIHRvQ29sdW1uc01hcCB9IGZyb20gJy4vcm93LXRva2VuLXBhcnNlcic7XG5cbi8qKlxuICogUmVhZHMgYW4gYE5CQ1JPV2AgdG9rZW4gLSBhIGBST1dgIHRva2VuIHByZWZpeGVkIHdpdGggYSBiaXRtYXAgdGhhdCBmbGFnc1xuICogYG51bGxgIGNvbHVtbnMsIHdoaWNoIHRoZW4gaGF2ZSBubyBkYXRhLlxuICovXG5leHBvcnQgY2xhc3MgTkJDUm93VG9rZW5SZWFkZXIgZXh0ZW5kcyBDb2x1bW5WYWx1ZXNSZWFkZXIgaW1wbGVtZW50cyBUb2tlblJlYWRlciB7XG4gIGRlY2xhcmUgbnVsbEJpdG1hcDogQnVmZmVyIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5udWxsQml0bWFwID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmVhZChwYXJzZXI6IFBhcnNlcik6IE5CQ1Jvd1Rva2VuIHtcbiAgICBpZiAodGhpcy5udWxsQml0bWFwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gcGFyc2VyLnBvc2l0aW9uO1xuICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyBNYXRoLmNlaWwocGFyc2VyLmNvbE1ldGFkYXRhLmxlbmd0aCAvIDgpO1xuICAgICAgaWYgKHBhcnNlci5idWZmZXIubGVuZ3RoIDwgZW5kKSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3IoZW5kKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5udWxsQml0bWFwID0gcGFyc2VyLmJ1ZmZlci5zdWJhcnJheShzdGFydCwgZW5kKTtcbiAgICAgIHBhcnNlci5wb3NpdGlvbiA9IGVuZDtcbiAgICB9XG5cbiAgICB0aGlzLnJlYWRDb2x1bW5zKHBhcnNlciwgdGhpcy5udWxsQml0bWFwKTtcbiAgICByZXR1cm4gbmV3IE5CQ1Jvd1Rva2VuKHBhcnNlci5vcHRpb25zLnVzZUNvbHVtbk5hbWVzID8gdG9Db2x1bW5zTWFwKHRoaXMuY29sdW1ucykgOiB0aGlzLmNvbHVtbnMpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUlBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGVBQUEsR0FBQUYsT0FBQTtBQU5BOztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUcsaUJBQWlCLFNBQVNDLGtDQUFrQixDQUF3QjtFQUcvRUMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLENBQUNDLFVBQVUsR0FBR0MsU0FBUztFQUM3QjtFQUVBQyxJQUFJQSxDQUFDQyxNQUFjLEVBQWU7SUFDaEMsSUFBSSxJQUFJLENBQUNILFVBQVUsS0FBS0MsU0FBUyxFQUFFO01BQ2pDLE1BQU1HLEtBQUssR0FBR0QsTUFBTSxDQUFDRSxRQUFRO01BQzdCLE1BQU1DLEdBQUcsR0FBR0YsS0FBSyxHQUFHRyxJQUFJLENBQUNDLElBQUksQ0FBQ0wsTUFBTSxDQUFDTSxXQUFXLENBQUNDLE1BQU0sR0FBRyxDQUFDLENBQUM7TUFDNUQsSUFBSVAsTUFBTSxDQUFDUSxNQUFNLENBQUNELE1BQU0sR0FBR0osR0FBRyxFQUFFO1FBQzlCLE1BQU0sSUFBSU0sMkJBQWtCLENBQUNOLEdBQUcsQ0FBQztNQUNuQztNQUVBLElBQUksQ0FBQ04sVUFBVSxHQUFHRyxNQUFNLENBQUNRLE1BQU0sQ0FBQ0UsUUFBUSxDQUFDVCxLQUFLLEVBQUVFLEdBQUcsQ0FBQztNQUNwREgsTUFBTSxDQUFDRSxRQUFRLEdBQUdDLEdBQUc7SUFDdkI7SUFFQSxJQUFJLENBQUNRLFdBQVcsQ0FBQ1gsTUFBTSxFQUFFLElBQUksQ0FBQ0gsVUFBVSxDQUFDO0lBQ3pDLE9BQU8sSUFBSWUsa0JBQVcsQ0FBQ1osTUFBTSxDQUFDYSxPQUFPLENBQUNDLGNBQWMsR0FBRyxJQUFBQyw0QkFBWSxFQUFDLElBQUksQ0FBQ0MsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDQSxPQUFPLENBQUM7RUFDbkc7QUFDRjtBQUFDQyxPQUFBLENBQUF2QixpQkFBQSxHQUFBQSxpQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nbcrow-token-parser.js","names":["_token","require","
|
|
1
|
+
{"version":3,"file":"nbcrow-token-parser.js","names":["_token","require","_helpers","_rowTokenParser","NBCRowTokenReader","ColumnValuesReader","constructor","nullBitmap","undefined","read","parser","start","position","end","Math","ceil","colMetadata","length","buffer","NotEnoughDataError","subarray","readColumns","NBCRowToken","options","useColumnNames","toColumnsMap","columns","exports"],"sources":["../../src/token/nbcrow-token-parser.ts"],"sourcesContent":["// s2.2.7.13 (introduced in TDS 7.3.B)\n\nimport Parser, { type TokenReader } from './stream-parser';\n\nimport { NBCRowToken } from './token';\nimport { NotEnoughDataError } from './helpers';\nimport { ColumnValuesReader, toColumnsMap } from './row-token-parser';\n\n/**\n * Reads an `NBCROW` token - a `ROW` token prefixed with a bitmap that flags\n * `null` columns, which then have no data.\n */\nexport class NBCRowTokenReader extends ColumnValuesReader implements TokenReader {\n declare nullBitmap: Buffer | undefined;\n\n constructor() {\n super();\n this.nullBitmap = undefined;\n }\n\n read(parser: Parser): NBCRowToken {\n if (this.nullBitmap === undefined) {\n const start = parser.position;\n const end = start + Math.ceil(parser.colMetadata.length / 8);\n if (parser.buffer.length < end) {\n throw new NotEnoughDataError(end);\n }\n\n this.nullBitmap = parser.buffer.subarray(start, end);\n parser.position = end;\n }\n\n this.readColumns(parser, this.nullBitmap);\n return new NBCRowToken(parser.options.useColumnNames ? toColumnsMap(this.columns) : this.columns);\n }\n}\n"],"mappings":";;;;;;AAIA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AANA;;AAQA;AACA;AACA;AACA;AACO,MAAMG,iBAAiB,SAASC,kCAAkB,CAAwB;EAG/EC,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,UAAU,GAAGC,SAAS;EAC7B;EAEAC,IAAIA,CAACC,MAAc,EAAe;IAChC,IAAI,IAAI,CAACH,UAAU,KAAKC,SAAS,EAAE;MACjC,MAAMG,KAAK,GAAGD,MAAM,CAACE,QAAQ;MAC7B,MAAMC,GAAG,GAAGF,KAAK,GAAGG,IAAI,CAACC,IAAI,CAACL,MAAM,CAACM,WAAW,CAACC,MAAM,GAAG,CAAC,CAAC;MAC5D,IAAIP,MAAM,CAACQ,MAAM,CAACD,MAAM,GAAGJ,GAAG,EAAE;QAC9B,MAAM,IAAIM,2BAAkB,CAACN,GAAG,CAAC;MACnC;MAEA,IAAI,CAACN,UAAU,GAAGG,MAAM,CAACQ,MAAM,CAACE,QAAQ,CAACT,KAAK,EAAEE,GAAG,CAAC;MACpDH,MAAM,CAACE,QAAQ,GAAGC,GAAG;IACvB;IAEA,IAAI,CAACQ,WAAW,CAACX,MAAM,EAAE,IAAI,CAACH,UAAU,CAAC;IACzC,OAAO,IAAIe,kBAAW,CAACZ,MAAM,CAACa,OAAO,CAACC,cAAc,GAAG,IAAAC,4BAAY,EAAC,IAAI,CAACC,OAAO,CAAC,GAAG,IAAI,CAACA,OAAO,CAAC;EACnG;AACF;AAACC,OAAA,CAAAvB,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|
|
@@ -1,4 +1,20 @@
|
|
|
1
|
-
import Parser from './stream-parser';
|
|
1
|
+
import Parser, { type TokenReader } from './stream-parser';
|
|
2
2
|
import { ReturnValueToken } from './token';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { type Metadata } from '../metadata-parser';
|
|
4
|
+
import { PLPReader } from '../value-parser';
|
|
5
|
+
interface ReturnValueHeader {
|
|
6
|
+
paramOrdinal: number;
|
|
7
|
+
paramName: string;
|
|
8
|
+
metadata: Metadata;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Reads a `RETURNVALUE` token. The returned value can be an arbitrarily large
|
|
12
|
+
* PLP value, so the progress is kept across chunks.
|
|
13
|
+
*/
|
|
14
|
+
export declare class ReturnValueTokenReader implements TokenReader {
|
|
15
|
+
header: ReturnValueHeader | undefined;
|
|
16
|
+
plpReader: PLPReader | undefined;
|
|
17
|
+
constructor();
|
|
18
|
+
read(parser: Parser): ReturnValueToken;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -3,91 +3,85 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.ReturnValueTokenReader = void 0;
|
|
7
7
|
var _token = require("./token");
|
|
8
8
|
var _metadataParser = require("../metadata-parser");
|
|
9
9
|
var _valueParser = require("../value-parser");
|
|
10
10
|
var _helpers = require("./helpers");
|
|
11
|
-
var iconv = _interopRequireWildcard(require("iconv-lite"));
|
|
12
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
13
11
|
// s2.2.7.16
|
|
14
12
|
|
|
15
|
-
|
|
16
|
-
let paramName;
|
|
13
|
+
function readHeader(buf, offset, options) {
|
|
17
14
|
let paramOrdinal;
|
|
15
|
+
({
|
|
16
|
+
offset,
|
|
17
|
+
value: paramOrdinal
|
|
18
|
+
} = (0, _helpers.readUInt16LE)(buf, offset));
|
|
19
|
+
let paramName;
|
|
20
|
+
({
|
|
21
|
+
offset,
|
|
22
|
+
value: paramName
|
|
23
|
+
} = (0, _helpers.readBVarChar)(buf, offset));
|
|
24
|
+
if (paramName.charAt(0) === '@') {
|
|
25
|
+
paramName = paramName.slice(1);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// status
|
|
29
|
+
({
|
|
30
|
+
offset
|
|
31
|
+
} = (0, _helpers.readUInt8)(buf, offset));
|
|
18
32
|
let metadata;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
({
|
|
34
|
+
offset,
|
|
35
|
+
value: metadata
|
|
36
|
+
} = (0, _metadataParser.readMetadata)(buf, offset, options));
|
|
37
|
+
return new _helpers.Result({
|
|
38
|
+
paramOrdinal,
|
|
39
|
+
paramName,
|
|
40
|
+
metadata
|
|
41
|
+
}, offset);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Reads a `RETURNVALUE` token. The returned value can be an arbitrarily large
|
|
46
|
+
* PLP value, so the progress is kept across chunks.
|
|
47
|
+
*/
|
|
48
|
+
class ReturnValueTokenReader {
|
|
49
|
+
// The reader of a PLP value that is not complete yet.
|
|
50
|
+
|
|
51
|
+
constructor() {
|
|
52
|
+
this.header = undefined;
|
|
53
|
+
this.plpReader = undefined;
|
|
54
|
+
}
|
|
55
|
+
read(parser) {
|
|
56
|
+
if (this.header === undefined) {
|
|
57
|
+
const {
|
|
58
|
+
value,
|
|
33
59
|
offset
|
|
34
|
-
} = (
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
value: metadata
|
|
38
|
-
} = (0, _metadataParser.readMetadata)(buf, offset, parser.options));
|
|
39
|
-
if (paramName.charAt(0) === '@') {
|
|
40
|
-
paramName = paramName.slice(1);
|
|
41
|
-
}
|
|
42
|
-
} catch (err) {
|
|
43
|
-
if (err instanceof _helpers.NotEnoughDataError) {
|
|
44
|
-
await parser.waitForChunk();
|
|
45
|
-
continue;
|
|
46
|
-
}
|
|
47
|
-
throw err;
|
|
60
|
+
} = readHeader(parser.buffer, parser.position, parser.options);
|
|
61
|
+
parser.position = offset;
|
|
62
|
+
this.header = value;
|
|
48
63
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
let offset = parser.position;
|
|
64
|
+
const {
|
|
65
|
+
paramOrdinal,
|
|
66
|
+
paramName,
|
|
67
|
+
metadata
|
|
68
|
+
} = this.header;
|
|
69
|
+
let value;
|
|
56
70
|
if ((0, _valueParser.isPLPStream)(metadata)) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
value = chunks;
|
|
60
|
-
} else if (metadata.type.name === 'NVarChar' || metadata.type.name === 'Xml') {
|
|
61
|
-
value = Buffer.concat(chunks).toString('ucs2');
|
|
62
|
-
} else if (metadata.type.name === 'VarChar') {
|
|
63
|
-
value = iconv.decode(Buffer.concat(chunks), metadata.collation?.codepage ?? 'utf8');
|
|
64
|
-
} else if (metadata.type.name === 'VarBinary' || metadata.type.name === 'UDT') {
|
|
65
|
-
value = Buffer.concat(chunks);
|
|
66
|
-
}
|
|
71
|
+
this.plpReader ??= new _valueParser.PLPReader(metadata);
|
|
72
|
+
value = this.plpReader.read(parser);
|
|
67
73
|
} else {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
offset
|
|
72
|
-
} = (0, _valueParser.readValue)(buf, offset, metadata, parser.options));
|
|
73
|
-
} catch (err) {
|
|
74
|
-
if (err instanceof _helpers.NotEnoughDataError) {
|
|
75
|
-
await parser.waitForChunk();
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
throw err;
|
|
79
|
-
}
|
|
80
|
-
parser.position = offset;
|
|
74
|
+
const result = (0, _valueParser.readValue)(parser.buffer, parser.position, metadata, parser.options);
|
|
75
|
+
parser.position = result.offset;
|
|
76
|
+
value = result.value;
|
|
81
77
|
}
|
|
82
|
-
|
|
78
|
+
return new _token.ReturnValueToken({
|
|
79
|
+
paramOrdinal,
|
|
80
|
+
paramName,
|
|
81
|
+
metadata,
|
|
82
|
+
value
|
|
83
|
+
});
|
|
83
84
|
}
|
|
84
|
-
return new _token.ReturnValueToken({
|
|
85
|
-
paramOrdinal: paramOrdinal,
|
|
86
|
-
paramName: paramName,
|
|
87
|
-
metadata: metadata,
|
|
88
|
-
value: value
|
|
89
|
-
});
|
|
90
85
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX21ldGFkYXRhUGFyc2VyIiwiX3ZhbHVlUGFyc2VyIiwiX2hlbHBlcnMiLCJpY29udiIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiZGVmYXVsdCIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwicmV0dXJuUGFyc2VyIiwicGFyc2VyIiwicGFyYW1OYW1lIiwicGFyYW1PcmRpbmFsIiwibWV0YWRhdGEiLCJidWYiLCJidWZmZXIiLCJvZmZzZXQiLCJwb3NpdGlvbiIsInZhbHVlIiwicmVhZFVJbnQxNkxFIiwicmVhZEJWYXJDaGFyIiwicmVhZFVJbnQ4IiwicmVhZE1ldGFkYXRhIiwib3B0aW9ucyIsImNoYXJBdCIsInNsaWNlIiwiZXJyIiwiTm90RW5vdWdoRGF0YUVycm9yIiwid2FpdEZvckNodW5rIiwiaXNQTFBTdHJlYW0iLCJjaHVua3MiLCJyZWFkUExQU3RyZWFtIiwidHlwZSIsIm5hbWUiLCJCdWZmZXIiLCJjb25jYXQiLCJ0b1N0cmluZyIsImRlY29kZSIsImNvbGxhdGlvbiIsImNvZGVwYWdlIiwicmVhZFZhbHVlIiwiUmV0dXJuVmFsdWVUb2tlbiIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi9yZXR1cm52YWx1ZS10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gczIuMi43LjE2XG5cbmltcG9ydCBQYXJzZXIgZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcblxuaW1wb3J0IHsgUmV0dXJuVmFsdWVUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuXG5pbXBvcnQgeyByZWFkTWV0YWRhdGEgfSBmcm9tICcuLi9tZXRhZGF0YS1wYXJzZXInO1xuaW1wb3J0IHsgaXNQTFBTdHJlYW0sIHJlYWRQTFBTdHJlYW0sIHJlYWRWYWx1ZSB9IGZyb20gJy4uL3ZhbHVlLXBhcnNlcic7XG5pbXBvcnQgeyBOb3RFbm91Z2hEYXRhRXJyb3IsIHJlYWRCVmFyQ2hhciwgcmVhZFVJbnQxNkxFLCByZWFkVUludDggfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0ICogYXMgaWNvbnYgZnJvbSAnaWNvbnYtbGl0ZSc7XG5cbmFzeW5jIGZ1bmN0aW9uIHJldHVyblBhcnNlcihwYXJzZXI6IFBhcnNlcik6IFByb21pc2U8UmV0dXJuVmFsdWVUb2tlbj4ge1xuICBsZXQgcGFyYW1OYW1lO1xuICBsZXQgcGFyYW1PcmRpbmFsO1xuICBsZXQgbWV0YWRhdGE7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBidWYgPSBwYXJzZXIuYnVmZmVyO1xuICAgIGxldCBvZmZzZXQgPSBwYXJzZXIucG9zaXRpb247XG5cbiAgICB0cnkge1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogcGFyYW1PcmRpbmFsIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IHBhcmFtTmFtZSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG4gICAgICAvLyBzdGF0dXNcbiAgICAgICh7IG9mZnNldCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBtZXRhZGF0YSB9ID0gcmVhZE1ldGFkYXRhKGJ1Ziwgb2Zmc2V0LCBwYXJzZXIub3B0aW9ucykpO1xuXG4gICAgICBpZiAocGFyYW1OYW1lLmNoYXJBdCgwKSA9PT0gJ0AnKSB7XG4gICAgICAgIHBhcmFtTmFtZSA9IHBhcmFtTmFtZS5zbGljZSgxKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBOb3RFbm91Z2hEYXRhRXJyb3IpIHtcbiAgICAgICAgYXdhaXQgcGFyc2VyLndhaXRGb3JDaHVuaygpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHBhcnNlci5wb3NpdGlvbiA9IG9mZnNldDtcbiAgICBicmVhaztcbiAgfVxuXG4gIGxldCB2YWx1ZTtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBidWYgPSBwYXJzZXIuYnVmZmVyO1xuICAgIGxldCBvZmZzZXQgPSBwYXJzZXIucG9zaXRpb247XG5cbiAgICBpZiAoaXNQTFBTdHJlYW0obWV0YWRhdGEpKSB7XG4gICAgICBjb25zdCBjaHVua3MgPSBhd2FpdCByZWFkUExQU3RyZWFtKHBhcnNlcik7XG5cbiAgICAgIGlmIChjaHVua3MgPT09IG51bGwpIHtcbiAgICAgICAgdmFsdWUgPSBjaHVua3M7XG4gICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ05WYXJDaGFyJyB8fCBtZXRhZGF0YS50eXBlLm5hbWUgPT09ICdYbWwnKSB7XG4gICAgICAgIHZhbHVlID0gQnVmZmVyLmNvbmNhdChjaHVua3MpLnRvU3RyaW5nKCd1Y3MyJyk7XG4gICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ1ZhckNoYXInKSB7XG4gICAgICAgIHZhbHVlID0gaWNvbnYuZGVjb2RlKEJ1ZmZlci5jb25jYXQoY2h1bmtzKSwgbWV0YWRhdGEuY29sbGF0aW9uPy5jb2RlcGFnZSA/PyAndXRmOCcpO1xuICAgICAgfSBlbHNlIGlmIChtZXRhZGF0YS50eXBlLm5hbWUgPT09ICdWYXJCaW5hcnknIHx8IG1ldGFkYXRhLnR5cGUubmFtZSA9PT0gJ1VEVCcpIHtcbiAgICAgICAgdmFsdWUgPSBCdWZmZXIuY29uY2F0KGNodW5rcyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgICh7IHZhbHVlLCBvZmZzZXQgfSA9IHJlYWRWYWx1ZShidWYsIG9mZnNldCwgbWV0YWRhdGEsIHBhcnNlci5vcHRpb25zKSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIE5vdEVub3VnaERhdGFFcnJvcikge1xuICAgICAgICAgIGF3YWl0IHBhcnNlci53YWl0Rm9yQ2h1bmsoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cblxuICAgICAgcGFyc2VyLnBvc2l0aW9uID0gb2Zmc2V0O1xuICAgIH1cblxuICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXR1cm5WYWx1ZVRva2VuKHtcbiAgICBwYXJhbU9yZGluYWw6IHBhcmFtT3JkaW5hbCxcbiAgICBwYXJhbU5hbWU6IHBhcmFtTmFtZSxcbiAgICBtZXRhZGF0YTogbWV0YWRhdGEsXG4gICAgdmFsdWU6IHZhbHVlXG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCByZXR1cm5QYXJzZXI7XG5tb2R1bGUuZXhwb3J0cyA9IHJldHVyblBhcnNlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBSUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsZUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsUUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksS0FBQSxHQUFBQyx1QkFBQSxDQUFBTCxPQUFBO0FBQW9DLFNBQUFLLHdCQUFBQyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBSCx1QkFBQSxZQUFBQSxDQUFBQyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQUMsT0FBQSxFQUFBVixDQUFBLGlC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
|
|
86
|
+
exports.ReturnValueTokenReader = ReturnValueTokenReader;
|
|
87
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX21ldGFkYXRhUGFyc2VyIiwiX3ZhbHVlUGFyc2VyIiwiX2hlbHBlcnMiLCJyZWFkSGVhZGVyIiwiYnVmIiwib2Zmc2V0Iiwib3B0aW9ucyIsInBhcmFtT3JkaW5hbCIsInZhbHVlIiwicmVhZFVJbnQxNkxFIiwicGFyYW1OYW1lIiwicmVhZEJWYXJDaGFyIiwiY2hhckF0Iiwic2xpY2UiLCJyZWFkVUludDgiLCJtZXRhZGF0YSIsInJlYWRNZXRhZGF0YSIsIlJlc3VsdCIsIlJldHVyblZhbHVlVG9rZW5SZWFkZXIiLCJjb25zdHJ1Y3RvciIsImhlYWRlciIsInVuZGVmaW5lZCIsInBscFJlYWRlciIsInJlYWQiLCJwYXJzZXIiLCJidWZmZXIiLCJwb3NpdGlvbiIsImlzUExQU3RyZWFtIiwiUExQUmVhZGVyIiwicmVzdWx0IiwicmVhZFZhbHVlIiwiUmV0dXJuVmFsdWVUb2tlbiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9rZW4vcmV0dXJudmFsdWUtdG9rZW4tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHMyLjIuNy4xNlxuXG5pbXBvcnQgUGFyc2VyLCB7IHR5cGUgUGFyc2VyT3B0aW9ucywgdHlwZSBUb2tlblJlYWRlciB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5cbmltcG9ydCB7IFJldHVyblZhbHVlVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuaW1wb3J0IHsgcmVhZE1ldGFkYXRhLCB0eXBlIE1ldGFkYXRhIH0gZnJvbSAnLi4vbWV0YWRhdGEtcGFyc2VyJztcbmltcG9ydCB7IGlzUExQU3RyZWFtLCBQTFBSZWFkZXIsIHJlYWRWYWx1ZSB9IGZyb20gJy4uL3ZhbHVlLXBhcnNlcic7XG5pbXBvcnQgeyByZWFkQlZhckNoYXIsIHJlYWRVSW50MTZMRSwgcmVhZFVJbnQ4LCBSZXN1bHQgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5pbnRlcmZhY2UgUmV0dXJuVmFsdWVIZWFkZXIge1xuICBwYXJhbU9yZGluYWw6IG51bWJlcjtcbiAgcGFyYW1OYW1lOiBzdHJpbmc7XG4gIG1ldGFkYXRhOiBNZXRhZGF0YTtcbn1cblxuZnVuY3Rpb24gcmVhZEhlYWRlcihidWY6IEJ1ZmZlciwgb2Zmc2V0OiBudW1iZXIsIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpOiBSZXN1bHQ8UmV0dXJuVmFsdWVIZWFkZXI+IHtcbiAgbGV0IHBhcmFtT3JkaW5hbDtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogcGFyYW1PcmRpbmFsIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgcGFyYW1OYW1lO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBwYXJhbU5hbWUgfSA9IHJlYWRCVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gIGlmIChwYXJhbU5hbWUuY2hhckF0KDApID09PSAnQCcpIHtcbiAgICBwYXJhbU5hbWUgPSBwYXJhbU5hbWUuc2xpY2UoMSk7XG4gIH1cblxuICAvLyBzdGF0dXNcbiAgKHsgb2Zmc2V0IH0gPSByZWFkVUludDgoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgbWV0YWRhdGE7XG4gICh7IG9mZnNldCwgdmFsdWU6IG1ldGFkYXRhIH0gPSByZWFkTWV0YWRhdGEoYnVmLCBvZmZzZXQsIG9wdGlvbnMpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdCh7IHBhcmFtT3JkaW5hbCwgcGFyYW1OYW1lLCBtZXRhZGF0YSB9LCBvZmZzZXQpO1xufVxuXG4vKipcbiAqIFJlYWRzIGEgYFJFVFVSTlZBTFVFYCB0b2tlbi4gVGhlIHJldHVybmVkIHZhbHVlIGNhbiBiZSBhbiBhcmJpdHJhcmlseSBsYXJnZVxuICogUExQIHZhbHVlLCBzbyB0aGUgcHJvZ3Jlc3MgaXMga2VwdCBhY3Jvc3MgY2h1bmtzLlxuICovXG5leHBvcnQgY2xhc3MgUmV0dXJuVmFsdWVUb2tlblJlYWRlciBpbXBsZW1lbnRzIFRva2VuUmVhZGVyIHtcbiAgZGVjbGFyZSBoZWFkZXI6IFJldHVyblZhbHVlSGVhZGVyIHwgdW5kZWZpbmVkO1xuXG4gIC8vIFRoZSByZWFkZXIgb2YgYSBQTFAgdmFsdWUgdGhhdCBpcyBub3QgY29tcGxldGUgeWV0LlxuICBkZWNsYXJlIHBscFJlYWRlcjogUExQUmVhZGVyIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaGVhZGVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucGxwUmVhZGVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmVhZChwYXJzZXI6IFBhcnNlcik6IFJldHVyblZhbHVlVG9rZW4ge1xuICAgIGlmICh0aGlzLmhlYWRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB7IHZhbHVlLCBvZmZzZXQgfSA9IHJlYWRIZWFkZXIocGFyc2VyLmJ1ZmZlciwgcGFyc2VyLnBvc2l0aW9uLCBwYXJzZXIub3B0aW9ucyk7XG4gICAgICBwYXJzZXIucG9zaXRpb24gPSBvZmZzZXQ7XG4gICAgICB0aGlzLmhlYWRlciA9IHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcGFyYW1PcmRpbmFsLCBwYXJhbU5hbWUsIG1ldGFkYXRhIH0gPSB0aGlzLmhlYWRlcjtcblxuICAgIGxldCB2YWx1ZTtcbiAgICBpZiAoaXNQTFBTdHJlYW0obWV0YWRhdGEpKSB7XG4gICAgICB0aGlzLnBscFJlYWRlciA/Pz0gbmV3IFBMUFJlYWRlcihtZXRhZGF0YSk7XG4gICAgICB2YWx1ZSA9IHRoaXMucGxwUmVhZGVyLnJlYWQocGFyc2VyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVhZFZhbHVlKHBhcnNlci5idWZmZXIsIHBhcnNlci5wb3NpdGlvbiwgbWV0YWRhdGEsIHBhcnNlci5vcHRpb25zKTtcbiAgICAgIHBhcnNlci5wb3NpdGlvbiA9IHJlc3VsdC5vZmZzZXQ7XG4gICAgICB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJldHVyblZhbHVlVG9rZW4oeyBwYXJhbU9yZGluYWwsIHBh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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"returnvalue-token-parser.js","names":["_token","require","_metadataParser","_valueParser","_helpers","
|
|
1
|
+
{"version":3,"file":"returnvalue-token-parser.js","names":["_token","require","_metadataParser","_valueParser","_helpers","readHeader","buf","offset","options","paramOrdinal","value","readUInt16LE","paramName","readBVarChar","charAt","slice","readUInt8","metadata","readMetadata","Result","ReturnValueTokenReader","constructor","header","undefined","plpReader","read","parser","buffer","position","isPLPStream","PLPReader","result","readValue","ReturnValueToken","exports"],"sources":["../../src/token/returnvalue-token-parser.ts"],"sourcesContent":["// s2.2.7.16\n\nimport Parser, { type ParserOptions, type TokenReader } from './stream-parser';\n\nimport { ReturnValueToken } from './token';\n\nimport { readMetadata, type Metadata } from '../metadata-parser';\nimport { isPLPStream, PLPReader, readValue } from '../value-parser';\nimport { readBVarChar, readUInt16LE, readUInt8, Result } from './helpers';\n\ninterface ReturnValueHeader {\n paramOrdinal: number;\n paramName: string;\n metadata: Metadata;\n}\n\nfunction readHeader(buf: Buffer, offset: number, options: ParserOptions): Result<ReturnValueHeader> {\n let paramOrdinal;\n ({ offset, value: paramOrdinal } = readUInt16LE(buf, offset));\n\n let paramName;\n ({ offset, value: paramName } = readBVarChar(buf, offset));\n\n if (paramName.charAt(0) === '@') {\n paramName = paramName.slice(1);\n }\n\n // status\n ({ offset } = readUInt8(buf, offset));\n\n let metadata;\n ({ offset, value: metadata } = readMetadata(buf, offset, options));\n\n return new Result({ paramOrdinal, paramName, metadata }, offset);\n}\n\n/**\n * Reads a `RETURNVALUE` token. The returned value can be an arbitrarily large\n * PLP value, so the progress is kept across chunks.\n */\nexport class ReturnValueTokenReader implements TokenReader {\n declare header: ReturnValueHeader | undefined;\n\n // The reader of a PLP value that is not complete yet.\n declare plpReader: PLPReader | undefined;\n\n constructor() {\n this.header = undefined;\n this.plpReader = undefined;\n }\n\n read(parser: Parser): ReturnValueToken {\n if (this.header === undefined) {\n const { value, offset } = readHeader(parser.buffer, parser.position, parser.options);\n parser.position = offset;\n this.header = value;\n }\n\n const { paramOrdinal, paramName, metadata } = this.header;\n\n let value;\n if (isPLPStream(metadata)) {\n this.plpReader ??= new PLPReader(metadata);\n value = this.plpReader.read(parser);\n } else {\n const result = readValue(parser.buffer, parser.position, metadata, parser.options);\n parser.position = result.offset;\n value = result.value;\n }\n\n return new ReturnValueToken({ paramOrdinal, paramName, metadata, value });\n }\n}\n"],"mappings":";;;;;;AAIA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AARA;;AAgBA,SAASI,UAAUA,CAACC,GAAW,EAAEC,MAAc,EAAEC,OAAsB,EAA6B;EAClG,IAAIC,YAAY;EAChB,CAAC;IAAEF,MAAM;IAAEG,KAAK,EAAED;EAAa,CAAC,GAAG,IAAAE,qBAAY,EAACL,GAAG,EAAEC,MAAM,CAAC;EAE5D,IAAIK,SAAS;EACb,CAAC;IAAEL,MAAM;IAAEG,KAAK,EAAEE;EAAU,CAAC,GAAG,IAAAC,qBAAY,EAACP,GAAG,EAAEC,MAAM,CAAC;EAEzD,IAAIK,SAAS,CAACE,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IAC/BF,SAAS,GAAGA,SAAS,CAACG,KAAK,CAAC,CAAC,CAAC;EAChC;;EAEA;EACA,CAAC;IAAER;EAAO,CAAC,GAAG,IAAAS,kBAAS,EAACV,GAAG,EAAEC,MAAM,CAAC;EAEpC,IAAIU,QAAQ;EACZ,CAAC;IAAEV,MAAM;IAAEG,KAAK,EAAEO;EAAS,CAAC,GAAG,IAAAC,4BAAY,EAACZ,GAAG,EAAEC,MAAM,EAAEC,OAAO,CAAC;EAEjE,OAAO,IAAIW,eAAM,CAAC;IAAEV,YAAY;IAAEG,SAAS;IAAEK;EAAS,CAAC,EAAEV,MAAM,CAAC;AAClE;;AAEA;AACA;AACA;AACA;AACO,MAAMa,sBAAsB,CAAwB;EAGzD;;EAGAC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACC,MAAM,GAAGC,SAAS;IACvB,IAAI,CAACC,SAAS,GAAGD,SAAS;EAC5B;EAEAE,IAAIA,CAACC,MAAc,EAAoB;IACrC,IAAI,IAAI,CAACJ,MAAM,KAAKC,SAAS,EAAE;MAC7B,MAAM;QAAEb,KAAK;QAAEH;MAAO,CAAC,GAAGF,UAAU,CAACqB,MAAM,CAACC,MAAM,EAAED,MAAM,CAACE,QAAQ,EAAEF,MAAM,CAAClB,OAAO,CAAC;MACpFkB,MAAM,CAACE,QAAQ,GAAGrB,MAAM;MACxB,IAAI,CAACe,MAAM,GAAGZ,KAAK;IACrB;IAEA,MAAM;MAAED,YAAY;MAAEG,SAAS;MAAEK;IAAS,CAAC,GAAG,IAAI,CAACK,MAAM;IAEzD,IAAIZ,KAAK;IACT,IAAI,IAAAmB,wBAAW,EAACZ,QAAQ,CAAC,EAAE;MACzB,IAAI,CAACO,SAAS,KAAK,IAAIM,sBAAS,CAACb,QAAQ,CAAC;MAC1CP,KAAK,GAAG,IAAI,CAACc,SAAS,CAACC,IAAI,CAACC,MAAM,CAAC;IACrC,CAAC,MAAM;MACL,MAAMK,MAAM,GAAG,IAAAC,sBAAS,EAACN,MAAM,CAACC,MAAM,EAAED,MAAM,CAACE,QAAQ,EAAEX,QAAQ,EAAES,MAAM,CAAClB,OAAO,CAAC;MAClFkB,MAAM,CAACE,QAAQ,GAAGG,MAAM,CAACxB,MAAM;MAC/BG,KAAK,GAAGqB,MAAM,CAACrB,KAAK;IACtB;IAEA,OAAO,IAAIuB,uBAAgB,CAAC;MAAExB,YAAY;MAAEG,SAAS;MAAEK,QAAQ;MAAEP;IAAM,CAAC,CAAC;EAC3E;AACF;AAACwB,OAAA,CAAAd,sBAAA,GAAAA,sBAAA","ignoreList":[]}
|
|
@@ -1,4 +1,34 @@
|
|
|
1
|
-
import Parser from './stream-parser';
|
|
1
|
+
import Parser, { type TokenReader } from './stream-parser';
|
|
2
|
+
import { type ColumnMetadata } from './colmetadata-token-parser';
|
|
2
3
|
import { RowToken } from './token';
|
|
3
|
-
|
|
4
|
-
export
|
|
4
|
+
import { PLPReader } from '../value-parser';
|
|
5
|
+
export interface Column {
|
|
6
|
+
value: unknown;
|
|
7
|
+
metadata: ColumnMetadata;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Reads the column values of a row one by one. Column values - especially PLP
|
|
11
|
+
* values - can be arbitrarily large, so the progress is kept across chunks.
|
|
12
|
+
*/
|
|
13
|
+
export declare class ColumnValuesReader {
|
|
14
|
+
columns: Column[];
|
|
15
|
+
plpReader: PLPReader | undefined;
|
|
16
|
+
constructor();
|
|
17
|
+
/**
|
|
18
|
+
* Read the remaining column values. Columns flagged in the `nullBitmap`
|
|
19
|
+
* have no data and are `null`.
|
|
20
|
+
*/
|
|
21
|
+
readColumns(parser: Parser, nullBitmap: Buffer | undefined): void;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Reads a `ROW` token.
|
|
25
|
+
*/
|
|
26
|
+
export declare class RowTokenReader extends ColumnValuesReader implements TokenReader {
|
|
27
|
+
read(parser: Parser): RowToken;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Map columns by name. If multiple columns share a name, the first one wins.
|
|
31
|
+
*/
|
|
32
|
+
export declare function toColumnsMap(columns: Column[]): {
|
|
33
|
+
[key: string]: Column;
|
|
34
|
+
};
|