@clickhouse/client
Advanced tools
Comparing version 0.2.6 to 0.2.7
@@ -31,2 +31,3 @@ /// <reference types="node" /> | ||
compress_request?: boolean; | ||
parse_summary?: boolean; | ||
} | ||
@@ -48,6 +49,7 @@ export declare abstract class NodeBaseConnection implements Connection<Stream.Readable> { | ||
exec(params: ConnBaseQueryParams): Promise<ConnExecResult<Stream.Readable>>; | ||
drainHttpResponse(stream: Stream.Readable): Promise<void>; | ||
insert(params: ConnInsertParams<Stream.Readable>): Promise<ConnInsertResult>; | ||
close(): Promise<void>; | ||
private logResponse; | ||
private drainHttpResponse; | ||
private parseSummary; | ||
} |
@@ -97,3 +97,8 @@ "use strict"; | ||
if ((0, client_common_1.isSuccessfulResponse)(_response.statusCode)) { | ||
return resolve(decompressionResult.response); | ||
return resolve({ | ||
stream: decompressionResult.response, | ||
summary: params.parse_summary | ||
? this.parseSummary(_response) | ||
: undefined, | ||
}); | ||
} | ||
@@ -233,3 +238,3 @@ else { | ||
try { | ||
const stream = await this.request({ | ||
const { stream } = await this.request({ | ||
method: 'GET', | ||
@@ -261,3 +266,3 @@ url: (0, client_common_1.transformUrl)({ url: this.params.url, pathname: '/ping' }), | ||
}); | ||
const stream = await this.request({ | ||
const { stream } = await this.request({ | ||
method: 'POST', | ||
@@ -283,3 +288,3 @@ url: (0, client_common_1.transformUrl)({ url: this.params.url, searchParams }), | ||
}); | ||
const stream = await this.request({ | ||
const { stream, summary } = await this.request({ | ||
method: 'POST', | ||
@@ -289,2 +294,3 @@ url: (0, client_common_1.transformUrl)({ url: this.params.url, searchParams }), | ||
abort_signal: params.abort_signal, | ||
parse_summary: true, | ||
}); | ||
@@ -294,32 +300,5 @@ return { | ||
query_id, | ||
summary, | ||
}; | ||
} | ||
async drainHttpResponse(stream) { | ||
return new Promise((resolve, reject) => { | ||
function dropData() { | ||
// We don't care about the data | ||
} | ||
function onEnd() { | ||
removeListeners(); | ||
resolve(); | ||
} | ||
function onError(err) { | ||
removeListeners(); | ||
reject(err); | ||
} | ||
function onClose() { | ||
removeListeners(); | ||
} | ||
function removeListeners() { | ||
stream.removeListener('data', dropData); | ||
stream.removeListener('end', onEnd); | ||
stream.removeListener('error', onError); | ||
stream.removeListener('onClose', onClose); | ||
} | ||
stream.on('data', dropData); | ||
stream.on('end', onEnd); | ||
stream.on('error', onError); | ||
stream.on('close', onClose); | ||
}); | ||
} | ||
async insert(params) { | ||
@@ -335,3 +314,3 @@ const query_id = getQueryId(params.query_id); | ||
}); | ||
const stream = await this.request({ | ||
const { stream, summary } = await this.request({ | ||
method: 'POST', | ||
@@ -342,5 +321,6 @@ url: (0, client_common_1.transformUrl)({ url: this.params.url, searchParams }), | ||
compress_request: this.params.compression.compress_request, | ||
parse_summary: true, | ||
}); | ||
await this.drainHttpResponse(stream); | ||
return { query_id }; | ||
return { query_id, summary }; | ||
} | ||
@@ -370,2 +350,45 @@ async close() { | ||
} | ||
async drainHttpResponse(stream) { | ||
return new Promise((resolve, reject) => { | ||
function dropData() { | ||
// We don't care about the data | ||
} | ||
function onEnd() { | ||
removeListeners(); | ||
resolve(); | ||
} | ||
function onError(err) { | ||
removeListeners(); | ||
reject(err); | ||
} | ||
function onClose() { | ||
removeListeners(); | ||
} | ||
function removeListeners() { | ||
stream.removeListener('data', dropData); | ||
stream.removeListener('end', onEnd); | ||
stream.removeListener('error', onError); | ||
stream.removeListener('onClose', onClose); | ||
} | ||
stream.on('data', dropData); | ||
stream.on('end', onEnd); | ||
stream.on('error', onError); | ||
stream.on('close', onClose); | ||
}); | ||
} | ||
parseSummary(response) { | ||
const summaryHeader = response.headers['x-clickhouse-summary']; | ||
if (typeof summaryHeader === 'string') { | ||
try { | ||
return JSON.parse(summaryHeader); | ||
} | ||
catch (err) { | ||
this.logger.error({ | ||
module: 'Connection', | ||
message: `Failed to parse X-ClickHouse-Summary header, got: ${summaryHeader}`, | ||
err: err, | ||
}); | ||
} | ||
} | ||
} | ||
} | ||
@@ -372,0 +395,0 @@ exports.NodeBaseConnection = NodeBaseConnection; |
@@ -1,2 +0,2 @@ | ||
declare const _default: "0.2.6"; | ||
declare const _default: "0.2.7"; | ||
export default _default; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.default = '0.2.6'; | ||
exports.default = '0.2.7'; | ||
//# sourceMappingURL=version.js.map |
@@ -5,3 +5,3 @@ { | ||
"homepage": "https://clickhouse.com", | ||
"version": "0.2.6", | ||
"version": "0.2.7", | ||
"license": "Apache-2.0", | ||
@@ -27,4 +27,4 @@ "keywords": [ | ||
"dependencies": { | ||
"@clickhouse/client-common": "0.2.6" | ||
"@clickhouse/client-common": "0.2.7" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
79740
1045
+ Added@clickhouse/client-common@0.2.7(transitive)
- Removed@clickhouse/client-common@0.2.6(transitive)