From 16cdbc46fac1a0e86029b4572ee39b4bea5cf13d Mon Sep 17 00:00:00 2001 From: Ben Timby Date: Sat, 12 Dec 2020 03:51:10 -0500 Subject: [PATCH 1/3] Add FORMAT to watch queries. --- src/clickhouse.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/clickhouse.js b/src/clickhouse.js index b5fc28e..1d86d6b 100644 --- a/src/clickhouse.js +++ b/src/clickhouse.js @@ -284,7 +284,7 @@ ClickHouse.prototype.query = function (chQuery, options, cb) { var formatEnding = ''; // format should be added for data queries - if (chQuery.match (/^(?:SELECT|WITH|SHOW|DESC|DESCRIBE|EXISTS\s+TABLE)/i)) { + if (chQuery.match (/^(?:SELECT|WITH|SHOW|WATCH|DESC|DESCRIBE|EXISTS\s+TABLE)/i)) { if (!options.format) options.format = options.dataObjects ? 'JSON' : 'JSONCompact'; } else if (chQuery.match (/^INSERT/i)) { From 9198322f445122382cb053728f0e4a130d1c3c9c Mon Sep 17 00:00:00 2001 From: Ben Timby Date: Sat, 12 Dec 2020 04:31:10 -0500 Subject: [PATCH 2/3] Remove trailing ; --- src/clickhouse.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/clickhouse.js b/src/clickhouse.js index 1d86d6b..e4c3f74 100644 --- a/src/clickhouse.js +++ b/src/clickhouse.js @@ -248,6 +248,11 @@ ClickHouse.prototype.query = function (chQuery, options, cb) { chQuery = chQuery.trim (); + // query will be invalid if we append FORMAT after ; + if (chQuery.endsWith(';')) { + chQuery = chQuery.slice(0, -1); + } + if (cb === undefined && options && options.constructor === Function) { cb = options; options = undefined; From 8a8e6d8a405147a187ddc0bd9a5da4b58350898e Mon Sep 17 00:00:00 2001 From: Ben Timby Date: Sat, 12 Dec 2020 04:32:10 -0500 Subject: [PATCH 3/3] Only modify query if we plan to add FORMAT. --- src/clickhouse.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/clickhouse.js b/src/clickhouse.js index e4c3f74..f28efd3 100644 --- a/src/clickhouse.js +++ b/src/clickhouse.js @@ -248,11 +248,6 @@ ClickHouse.prototype.query = function (chQuery, options, cb) { chQuery = chQuery.trim (); - // query will be invalid if we append FORMAT after ; - if (chQuery.endsWith(';')) { - chQuery = chQuery.slice(0, -1); - } - if (cb === undefined && options && options.constructor === Function) { cb = options; options = undefined; @@ -328,6 +323,11 @@ ClickHouse.prototype.query = function (chQuery, options, cb) { options.omitFormat = true; } + // query will be invalid if we append FORMAT after ; + if (!options.omitFormat && chQuery.endsWith(';')) { + chQuery = chQuery.slice(0, -1); + } + reqData.format = options.format; // use query string to submit ClickHouse query — useful to mock CH server