tedious
Version:
A TDS driver, for connecting to MS SQLServer databases.
36 lines (34 loc) • 4.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NBCRowTokenReader = void 0;
var _token = require("./token");
var _helpers = require("./helpers");
var _rowTokenParser = require("./row-token-parser");
// s2.2.7.13 (introduced in TDS 7.3.B)
/**
* Reads an `NBCROW` token - a `ROW` token prefixed with a bitmap that flags
* `null` columns, which then have no data.
*/
class NBCRowTokenReader extends _rowTokenParser.ColumnValuesReader {
constructor() {
super();
this.nullBitmap = undefined;
}
read(parser) {
if (this.nullBitmap === undefined) {
const start = parser.position;
const end = start + Math.ceil(parser.colMetadata.length / 8);
if (parser.buffer.length < end) {
throw new _helpers.NotEnoughDataError(end);
}
this.nullBitmap = parser.buffer.subarray(start, end);
parser.position = end;
}
this.readColumns(parser, this.nullBitmap);
return new _token.NBCRowToken(parser.options.useColumnNames ? (0, _rowTokenParser.toColumnsMap)(this.columns) : this.columns);
}
}
exports.NBCRowTokenReader = NBCRowTokenReader;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2hlbHBlcnMiLCJfcm93VG9rZW5QYXJzZXIiLCJOQkNSb3dUb2tlblJlYWRlciIsIkNvbHVtblZhbHVlc1JlYWRlciIsImNvbnN0cnVjdG9yIiwibnVsbEJpdG1hcCIsInVuZGVmaW5lZCIsInJlYWQiLCJwYXJzZXIiLCJzdGFydCIsInBvc2l0aW9uIiwiZW5kIiwiTWF0aCIsImNlaWwiLCJjb2xNZXRhZGF0YSIsImxlbmd0aCIsImJ1ZmZlciIsIk5vdEVub3VnaERhdGFFcnJvciIsInN1YmFycmF5IiwicmVhZENvbHVtbnMiLCJOQkNSb3dUb2tlbiIsIm9wdGlvbnMiLCJ1c2VDb2x1bW5OYW1lcyIsInRvQ29sdW1uc01hcCIsImNvbHVtbnMiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL25iY3Jvdy10b2tlbi1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gczIuMi43LjEzIChpbnRyb2R1Y2VkIGluIFREUyA3LjMuQilcblxuaW1wb3J0IFBhcnNlciwgeyB0eXBlIFRva2VuUmVhZGVyIH0gZnJvbSAnLi9zdHJlYW0tcGFyc2VyJztcblxuaW1wb3J0IHsgTkJDUm93VG9rZW4gfSBmcm9tICcuL3Rva2VuJztcbmltcG9ydCB7IE5vdEVub3VnaERhdGFFcnJvciB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBDb2x1bW5WYWx1ZXNSZWFkZXIsIHRvQ29sdW1uc01hcCB9IGZyb20gJy4vcm93LXRva2VuLXBhcnNlcic7XG5cbi8qKlxuICogUmVhZHMgYW4gYE5CQ1JPV2AgdG9rZW4gLSBhIGBST1dgIHRva2VuIHByZWZpeGVkIHdpdGggYSBiaXRtYXAgdGhhdCBmbGFnc1xuICogYG51bGxgIGNvbHVtbnMsIHdoaWNoIHRoZW4gaGF2ZSBubyBkYXRhLlxuICovXG5leHBvcnQgY2xhc3MgTkJDUm93VG9rZW5SZWFkZXIgZXh0ZW5kcyBDb2x1bW5WYWx1ZXNSZWFkZXIgaW1wbGVtZW50cyBUb2tlblJlYWRlciB7XG4gIGRlY2xhcmUgbnVsbEJpdG1hcDogQnVmZmVyIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5udWxsQml0bWFwID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmVhZChwYXJzZXI6IFBhcnNlcik6IE5CQ1Jvd1Rva2VuIHtcbiAgICBpZiAodGhpcy5udWxsQml0bWFwID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gcGFyc2VyLnBvc2l0aW9uO1xuICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyBNYXRoLmNlaWwocGFyc2VyLmNvbE1ldGFkYXRhLmxlbmd0aCAvIDgpO1xuICAgICAgaWYgKHBhcnNlci5idWZmZXIubGVuZ3RoIDwgZW5kKSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RFbm91Z2hEYXRhRXJyb3IoZW5kKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5udWxsQml0bWFwID0gcGFyc2VyLmJ1ZmZlci5zdWJhcnJheShzdGFydCwgZW5kKTtcbiAgICAgIHBhcnNlci5wb3NpdGlvbiA9IGVuZDtcbiAgICB9XG5cbiAgICB0aGlzLnJlYWRDb2x1bW5zKHBhcnNlciwgdGhpcy5udWxsQml0bWFwKTtcbiAgICByZXR1cm4gbmV3IE5CQ1Jvd1Rva2VuKHBhcnNlci5vcHRpb25zLnVzZUNvbHVtbk5hbWVzID8gdG9Db2x1bW5zTWFwKHRoaXMuY29sdW1ucykgOiB0aGlzLmNvbHVtbnMpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUlBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGVBQUEsR0FBQUYsT0FBQTtBQU5BOztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUcsaUJBQWlCLFNBQVNDLGtDQUFrQixDQUF3QjtFQUcvRUMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLENBQUNDLFVBQVUsR0FBR0MsU0FBUztFQUM3QjtFQUVBQyxJQUFJQSxDQUFDQyxNQUFjLEVBQWU7SUFDaEMsSUFBSSxJQUFJLENBQUNILFVBQVUsS0FBS0MsU0FBUyxFQUFFO01BQ2pDLE1BQU1HLEtBQUssR0FBR0QsTUFBTSxDQUFDRSxRQUFRO01BQzdCLE1BQU1DLEdBQUcsR0FBR0YsS0FBSyxHQUFHRyxJQUFJLENBQUNDLElBQUksQ0FBQ0wsTUFBTSxDQUFDTSxXQUFXLENBQUNDLE1BQU0sR0FBRyxDQUFDLENBQUM7TUFDNUQsSUFBSVAsTUFBTSxDQUFDUSxNQUFNLENBQUNELE1BQU0sR0FBR0osR0FBRyxFQUFFO1FBQzlCLE1BQU0sSUFBSU0sMkJBQWtCLENBQUNOLEdBQUcsQ0FBQztNQUNuQztNQUVBLElBQUksQ0FBQ04sVUFBVSxHQUFHRyxNQUFNLENBQUNRLE1BQU0sQ0FBQ0UsUUFBUSxDQUFDVCxLQUFLLEVBQUVFLEdBQUcsQ0FBQztNQUNwREgsTUFBTSxDQUFDRSxRQUFRLEdBQUdDLEdBQUc7SUFDdkI7SUFFQSxJQUFJLENBQUNRLFdBQVcsQ0FBQ1gsTUFBTSxFQUFFLElBQUksQ0FBQ0gsVUFBVSxDQUFDO0lBQ3pDLE9BQU8sSUFBSWUsa0JBQVcsQ0FBQ1osTUFBTSxDQUFDYSxPQUFPLENBQUNDLGNBQWMsR0FBRyxJQUFBQyw0QkFBWSxFQUFDLElBQUksQ0FBQ0MsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDQSxPQUFPLENBQUM7RUFDbkc7QUFDRjtBQUFDQyxPQUFBLENBQUF2QixpQkFBQSxHQUFBQSxpQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==