Socket
Socket
Sign inDemoInstall

hdb

Package Overview
Dependencies
Maintainers
4
Versions
62
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hdb - npm Package Compare versions

Comparing version 0.19.8 to 0.19.9

4

lib/protocol/common/Constants.js

@@ -26,3 +26,5 @@ // Copyright 2013 SAP AG.

PART_HEADER_LENGTH: 16,
MAX_PACKET_SIZE: Math.pow(2, 17),
DEFAULT_PACKET_SIZE: Math.pow(2, 17),
MAXIMUM_PACKET_SIZE: Math.pow(2, 30) - 1,
MINIMUM_PACKET_SIZE: Math.pow(2, 16),
MAX_RESULT_SET_SIZE: Math.pow(2, 20),

@@ -29,0 +31,0 @@ EMPTY_BUFFER: new Buffer(0),

@@ -39,8 +39,8 @@ // Copyright 2013 SAP AG.

var EMPTY_BUFFER = common.EMPTY_BUFFER;
var MAX_PACKET_SIZE = common.MAX_PACKET_SIZE;
var DEFAULT_PACKET_SIZE = common.DEFAULT_PACKET_SIZE;
var MINIMUM_PACKET_SIZE = common.MINIMUM_PACKET_SIZE;
var MAXIMUM_PACKET_SIZE = common.MAXIMUM_PACKET_SIZE;
var PACKET_HEADER_LENGTH = common.PACKET_HEADER_LENGTH;
var SEGMENT_HEADER_LENGTH = common.SEGMENT_HEADER_LENGTH;
var PART_HEADER_LENGTH = common.PART_HEADER_LENGTH;
var MAX_AVAILABLE_SIZE = MAX_PACKET_SIZE -
PACKET_HEADER_LENGTH - SEGMENT_HEADER_LENGTH - PART_HEADER_LENGTH;

@@ -165,2 +165,18 @@ module.exports = Connection;

}
},
packetSize: {
get: function getPacketSize() {
let size = this._settings.packetSize || DEFAULT_PACKET_SIZE;
size = Math.min(size, MAXIMUM_PACKET_SIZE);
size = Math.max(size, MINIMUM_PACKET_SIZE);
return size;
}
},
packetSizeLimit: {
get: function getPacketSizeLimit() {
let limit = this._settings.packetSizeLimit || this.packetSize;
limit = Math.min(limit, MAXIMUM_PACKET_SIZE);
limit = Math.max(limit, this.packetSize);
return limit;
}
}

@@ -306,4 +322,7 @@ });

var size = MAX_PACKET_SIZE - PACKET_HEADER_LENGTH;
var size = this.packetSizeLimit - PACKET_HEADER_LENGTH;
var buffer = message.toBuffer(size);
if(buffer.length > size) {
return receive(new Error('Packet size limit exceeded'));
}
var packet = new Buffer(PACKET_HEADER_LENGTH + buffer.length);

@@ -352,4 +371,5 @@ buffer.copy(packet, PACKET_HEADER_LENGTH);

Connection.prototype.getAvailableSize = function getAvailableSize() {
var availableSize = MAX_AVAILABLE_SIZE;
Connection.prototype.getAvailableSize = function getAvailableSize(forLobs = false) {
var totalSize = forLobs ? this.packetSize : this.packetSizeLimit;
var availableSize = totalSize - PACKET_HEADER_LENGTH - SEGMENT_HEADER_LENGTH - PART_HEADER_LENGTH;
if (this._statementContext) {

@@ -356,0 +376,0 @@ availableSize -= this._statementContext.size;

@@ -144,3 +144,3 @@ // Copyright 2013 SAP AG.

ExecuteTask.prototype.getParameters = function getParameters(availableSize, cb) {
ExecuteTask.prototype.getParameters = function getParameters(availableSize, availableSizeForLOBs, cb) {
var self = this;

@@ -180,2 +180,3 @@ var bytesWritten = 0;

var remainingSize = availableSize - bytesWritten;
var remainingSizeForLOBs = availableSizeForLOBs - bytesWritten;
if (self.writer.length > remainingSize) {

@@ -186,5 +187,10 @@ if (self.autoCommit) {

}
return cb(null, args);
if(args.length === 0) {
self.needFinializeTransaction = false;
return cb(new Error('Failed to set parameters, maximum packet size exceeded.'));
} else {
return cb(null, args);
}
}
self.writer.getParameters(remainingSize, handleParameters);
self.writer.getParameters(remainingSizeForLOBs, handleParameters);
}

@@ -197,5 +203,5 @@

var self = this;
var availableSize = self.connection.getAvailableSize();
availableSize -= STATEMENT_ID_PART_LENGTH;
self.getParameters(availableSize, function send(err, parameters) {
var availableSize = self.connection.getAvailableSize(false) - STATEMENT_ID_PART_LENGTH;
var availableSizeForLOBs = self.connection.getAvailableSize(true) - STATEMENT_ID_PART_LENGTH;
self.getParameters(availableSize, availableSizeForLOBs, function send(err, parameters) {
if (err) {

@@ -217,3 +223,3 @@ return cb(err);

var self = this;
var availableSize = self.connection.getAvailableSize();
var availableSize = self.connection.getAvailableSize(true);
self.writer.getWriteLobRequest(availableSize, function send(err, buffer) {

@@ -220,0 +226,0 @@ if (err) {

@@ -23,4 +23,4 @@ // Copyright 2013 SAP AG.

var PartKindName = common.PartKindName;
var MAX_PACKET_SIZE = common.MAX_PACKET_SIZE;
var PACKET_HEADER_LENGTH = common.PACKET_HEADER_LENGTH;
var DEFAULT_SEGMENT_SIZE = common.DEFAULT_PACKET_SIZE - PACKET_HEADER_LENGTH;
var SEGMENT_HEADER_LENGTH = common.SEGMENT_HEADER_LENGTH;

@@ -86,3 +86,3 @@

Segment.prototype.toBuffer = function toBuffer(size) {
size = size || (MAX_PACKET_SIZE - PACKET_HEADER_LENGTH);
size = size || DEFAULT_SEGMENT_SIZE;
var remainingSize = size - SEGMENT_HEADER_LENGTH;

@@ -89,0 +89,0 @@ var length = SEGMENT_HEADER_LENGTH;

@@ -22,4 +22,4 @@ // Copyright 2013 SAP AG.

var SegmentKind = common.SegmentKind;
var MAX_SEGMENT_SIZE = common.MAX_PACKET_SIZE - common.PACKET_HEADER_LENGTH;
var PACKET_HEADER_LENGTH = common.PACKET_HEADER_LENGTH;
var DEFAULT_SEGMENT_SIZE = common.DEFAULT_PACKET_SIZE - PACKET_HEADER_LENGTH;
var SEGMENT_HEADER_LENGTH = common.SEGMENT_HEADER_LENGTH;

@@ -77,3 +77,3 @@

Segment.prototype.toBuffer = function toBuffer(size) {
size = size || MAX_SEGMENT_SIZE;
size = size || DEFAULT_SEGMENT_SIZE;
var remainingSize = size - SEGMENT_HEADER_LENGTH;

@@ -80,0 +80,0 @@ var length = SEGMENT_HEADER_LENGTH;

@@ -190,2 +190,2 @@ // Copyright 2013 SAP AG.

return metadata.ioType === IoType.OUTPUT || metadata.ioType === IoType.IN_OUT;
}
}

@@ -105,3 +105,3 @@ // Copyright 2013 SAP AG.

Writer.prototype.finializeParameters = function finializeParameters(
bytesRemaining, cb) {
bytesRemainingForLOBs, cb) {
var self = this;

@@ -159,3 +159,3 @@ var stream, header;

/* jshint validthis:true */
var chunk = this.read(bytesRemaining);
var chunk = this.read(bytesRemainingForLOBs);
if (chunk === null) {

@@ -167,3 +167,3 @@ chunk = this.read();

}
if (chunk.length > bytesRemaining) {
if (chunk.length > bytesRemainingForLOBs) {
cleanup();

@@ -178,5 +178,5 @@ return cb(createReadStreamError());

self.push(chunk);
bytesRemaining -= chunk.length;
bytesRemainingForLOBs -= chunk.length;
// stop appending if there is no remaining space
if (bytesRemaining === 0) {
if (bytesRemainingForLOBs === 0) {
cleanup();

@@ -195,3 +195,3 @@ // finalize lob if the stream has already ended

function next() {
if (!self._lobs.length || bytesRemaining <= 0) {
if (!self._lobs.length || bytesRemainingForLOBs <= 0) {
return cb(null);

@@ -218,3 +218,3 @@ }

Writer.prototype.getParameters = function getParameters(bytesAvailable, cb) {
Writer.prototype.getParameters = function getParameters(bytesAvailableForLOBs, cb) {
var self = this;

@@ -232,4 +232,4 @@

}
var bytesRemaining = bytesAvailable - this._bytesWritten;
this.finializeParameters(bytesRemaining, done);
var bytesRemainingForLOBs = bytesAvailableForLOBs - this._bytesWritten;
this.finializeParameters(bytesRemainingForLOBs, done);
};

@@ -236,0 +236,0 @@

@@ -9,3 +9,3 @@ {

"description": "SAP HANA Database Client for Node",
"version": "0.19.8",
"version": "0.19.9",
"repository": {

@@ -12,0 +12,0 @@ "type": "git",

@@ -279,2 +279,18 @@ hdb - Pure JavaScript SAP HANA Database Client

### Controlling the Maximum Packet Size
By default, the node-hdb driver restricts the size of outgoing packets to 128KB. Attempting to execute SQL statements larger than this limit will result in an error. Furthermore, large object parameters (LOBs) larger than this limit will be broken up and sent in multiple packets to the server.
This limit is configurable via the `packetSize` and `packetSizeLimit` connect options. Node-hdb will never allocate outgoing packets larger than `packetSizeLimit` and will restrict the packet size further to `packetSize` if possible (via breaking up LOB parameters into multiple packets).
For example, the following configuration will allow packets up to 2^20 bytes (1MB) if necessary, but will still restrict LOB data to 2^17 byte (128KB) packets:
```js
var client = hdb.createClient({
host : 'hostname',
port : 30015,
packetSize : Math.pow(2, 17),
packetSizeLimit : Math.pow(2, 20)
...
});
```
If not set, the value of `packetSize` defaults to 131072 (128KB) and `packetSizeLimit` defaults to `packetSize`. Values for `packetSize` may range from 65536 (64KB) to 1073741823 (1GB-1). Values for `packetSizeLimit` may range from `packetSize` to 1073741823 (1GB-1).
Direct Statement Execution

@@ -281,0 +297,0 @@ --------------------------

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc