@lightdash/warehouses 1.13.0 → 1.15.0
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/dist/.tsbuildinfo +1 -1
- package/dist/utils/coerceTagToString.d.ts +6 -0
- package/dist/utils/coerceTagToString.d.ts.map +1 -0
- package/dist/utils/coerceTagToString.js +15 -0
- package/dist/warehouseClients/BigqueryWarehouseClient.d.ts.map +1 -1
- package/dist/warehouseClients/BigqueryWarehouseClient.js +8 -18
- package/dist/warehouseClients/BigqueryWarehouseClient.test.js +1 -1
- package/dist/warehouseClients/TrinoWarehouseClient.d.ts.map +1 -1
- package/dist/warehouseClients/TrinoWarehouseClient.js +10 -2
- package/dist/warehouseClients/TrinoWarehouseClient.test.js +19 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coerceTagToString.d.ts","sourceRoot":"","sources":["../../src/utils/coerceTagToString.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GACrB,MAAM,GACN,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,CAAC;AAEhB,eAAO,MAAM,iBAAiB,GAC1B,KAAK,eAAe,EACpB,SAAS;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,KAChD,MAQF,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.coerceTagToString = void 0;
|
|
4
|
+
const coerceTagToString = (tag, context) => {
|
|
5
|
+
if (typeof tag === 'string')
|
|
6
|
+
return tag;
|
|
7
|
+
if (tag === null || tag === undefined)
|
|
8
|
+
return '';
|
|
9
|
+
console.warn(`${context.caller}: coerced non-string tag value`, {
|
|
10
|
+
...(context.key === null ? {} : { key: context.key }),
|
|
11
|
+
valueType: typeof tag,
|
|
12
|
+
});
|
|
13
|
+
return String(tag);
|
|
14
|
+
};
|
|
15
|
+
exports.coerceTagToString = coerceTagToString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BigqueryWarehouseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/BigqueryWarehouseClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EAKR,OAAO,EACP,gBAAgB,EAChB,kBAAkB,EAGlB,iBAAiB,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,QAAQ,MAAM,wCAAwC,CAAC;AAC9D,OAAO,EACH,OAAO,EAEP,eAAe,EACf,eAAe,EACf,6BAA6B,EAC7B,yBAAyB,EACzB,aAAa,EAEb,MAAM,EAEN,eAAe,EAKf,mBAAmB,EACnB,gBAAgB,EAEhB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,KAAK,eAAe,EACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACH,gBAAgB,EAChB,0BAA0B,EAC1B,8BAA8B,EAEjC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"BigqueryWarehouseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/BigqueryWarehouseClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ const bigquery_1 = require("@google-cloud/bigquery");
|
|
|
8
8
|
const common_1 = require("@lightdash/common");
|
|
9
9
|
const big_js_1 = __importDefault(require("big.js"));
|
|
10
10
|
const stream_1 = require("stream");
|
|
11
|
+
const coerceTagToString_1 = require("../utils/coerceTagToString");
|
|
11
12
|
const processPromisesInBatches_1 = require("../utils/processPromisesInBatches");
|
|
12
13
|
const sql_1 = require("../utils/sql");
|
|
13
14
|
const WarehouseBaseClient_1 = __importDefault(require("./WarehouseBaseClient"));
|
|
@@ -208,24 +209,13 @@ class BigqueryWarehouseClient extends WarehouseBaseClient_1.default {
|
|
|
208
209
|
];
|
|
209
210
|
return Object.fromEntries(orderedEntries
|
|
210
211
|
.slice(0, BigqueryWarehouseClient.MAX_LABELS)
|
|
211
|
-
.map(([key, value]) =>
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
safeValue = '';
|
|
219
|
-
}
|
|
220
|
-
else {
|
|
221
|
-
console.warn('BigqueryWarehouseClient.sanitizeLabelsWithValues: coerced non-string label value', { key: safeKey, valueType: typeof value });
|
|
222
|
-
safeValue = String(value);
|
|
223
|
-
}
|
|
224
|
-
return [
|
|
225
|
-
(0, common_1.sanitizeQueryTagKey)(safeKey),
|
|
226
|
-
(0, common_1.sanitizeQueryTagValue)(safeValue),
|
|
227
|
-
];
|
|
228
|
-
}));
|
|
212
|
+
.map(([key, value]) => [
|
|
213
|
+
(0, common_1.sanitizeQueryTagKey)(key),
|
|
214
|
+
(0, common_1.sanitizeQueryTagValue)((0, coerceTagToString_1.coerceTagToString)(value, {
|
|
215
|
+
caller: 'BigqueryWarehouseClient.sanitizeLabelsWithValues',
|
|
216
|
+
key,
|
|
217
|
+
})),
|
|
218
|
+
]));
|
|
229
219
|
}
|
|
230
220
|
static getFieldsFromResponse(response) {
|
|
231
221
|
return (response?.schema?.fields || []).reduce((acc, field) => {
|
|
@@ -230,7 +230,7 @@ describe('BigqueryWarehouseClient.sanitizeLabelsWithValues', () => {
|
|
|
230
230
|
job_id: 224187,
|
|
231
231
|
});
|
|
232
232
|
expect(result).toEqual({ job_id: '224187' });
|
|
233
|
-
expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('coerced non-string
|
|
233
|
+
expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('coerced non-string tag value'), { key: 'job_id', valueType: 'number' });
|
|
234
234
|
});
|
|
235
235
|
it('replaces null/undefined with empty_value silently', () => {
|
|
236
236
|
const result = BigqueryWarehouseClient_1.BigqueryWarehouseClient.sanitizeLabelsWithValues({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrinoWarehouseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/TrinoWarehouseClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,sBAAsB,EAEtB,MAAM,EAIN,mBAAmB,EACnB,gBAAgB,EAGhB,gBAAgB,EAChB,cAAc,EACd,KAAK,eAAe,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEH,iBAAiB,EAKpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"TrinoWarehouseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/TrinoWarehouseClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.TrinoWarehouseClient = exports.TrinoSqlBuilder = exports.getTrinoTimestampDomain = exports.TrinoTypes = void 0;
|
|
7
7
|
const common_1 = require("@lightdash/common");
|
|
8
8
|
const trino_client_1 = require("trino-client");
|
|
9
|
+
const coerceTagToString_1 = require("../utils/coerceTagToString");
|
|
9
10
|
const processPromisesInBatches_1 = require("../utils/processPromisesInBatches");
|
|
10
11
|
const sql_1 = require("../utils/sql");
|
|
11
12
|
const WarehouseBaseClient_1 = __importDefault(require("./WarehouseBaseClient"));
|
|
@@ -13,7 +14,12 @@ const WarehouseBaseSqlBuilder_1 = __importDefault(require("./WarehouseBaseSqlBui
|
|
|
13
14
|
const TRINO_CLIENT_TAGS_HEADER = 'X-Trino-Client-Tags';
|
|
14
15
|
// Trino splits the header on commas and Node rejects non-latin1 header values,
|
|
15
16
|
// so tag keys/values are restricted to a safe charset
|
|
16
|
-
const sanitizeClientTag = (tag) =>
|
|
17
|
+
const sanitizeClientTag = (tag) => (0, coerceTagToString_1.coerceTagToString)(tag, {
|
|
18
|
+
caller: 'TrinoWarehouseClient.sanitizeClientTag',
|
|
19
|
+
key: null,
|
|
20
|
+
})
|
|
21
|
+
.replace(/[^a-zA-Z0-9_-]/g, '_')
|
|
22
|
+
.substring(0, 60);
|
|
17
23
|
var TrinoTypes;
|
|
18
24
|
(function (TrinoTypes) {
|
|
19
25
|
TrinoTypes["BOOLEAN"] = "boolean";
|
|
@@ -225,7 +231,9 @@ class TrinoWarehouseClient extends WarehouseBaseClient_1.default {
|
|
|
225
231
|
try {
|
|
226
232
|
let alteredQuery = sql;
|
|
227
233
|
if (options?.tags) {
|
|
228
|
-
|
|
234
|
+
// tags can carry BigInt values at runtime; plain
|
|
235
|
+
// JSON.stringify would throw without the app-level toJSON patch
|
|
236
|
+
alteredQuery = `${alteredQuery}\n-- ${JSON.stringify(options?.tags, (_key, value) => typeof value === 'bigint' ? value.toString() : value)}`;
|
|
229
237
|
}
|
|
230
238
|
if (options?.timezone) {
|
|
231
239
|
console.debug(`Setting Trino timezone to ${options?.timezone}`);
|
|
@@ -129,6 +129,25 @@ describe('TrinoWarehouseClient', () => {
|
|
|
129
129
|
},
|
|
130
130
|
}));
|
|
131
131
|
});
|
|
132
|
+
it('coerces non-string tag values instead of throwing', async () => {
|
|
133
|
+
const warehouse = new TrinoWarehouseClient_1.TrinoWarehouseClient(TrinoWarehouseClient_mock_1.credentials);
|
|
134
|
+
queryResultMock.mockReturnValue({
|
|
135
|
+
next: vi
|
|
136
|
+
.fn()
|
|
137
|
+
.mockResolvedValue({ done: true, value: TrinoWarehouseClient_mock_1.queryResponse }),
|
|
138
|
+
});
|
|
139
|
+
// graphile-worker job ids arrive as BigInt at runtime despite the
|
|
140
|
+
// Record<string, string> type (global pg INT8 parser override)
|
|
141
|
+
await warehouse.runQuery('SELECT 1', {
|
|
142
|
+
job_id: BigInt(4482031),
|
|
143
|
+
query_context: common_1.QueryExecutionContext.SCHEDULED_GSHEETS_DASHBOARD,
|
|
144
|
+
});
|
|
145
|
+
expect(queryResultMock).toHaveBeenCalledWith(expect.objectContaining({
|
|
146
|
+
extraHeaders: {
|
|
147
|
+
'X-Trino-Client-Tags': 'job_id=4482031,query_context=scheduledGsheetsDashboard',
|
|
148
|
+
},
|
|
149
|
+
}));
|
|
150
|
+
});
|
|
132
151
|
it('sends query as plain string (no extraHeaders) when no tags are provided', async () => {
|
|
133
152
|
const warehouse = new TrinoWarehouseClient_1.TrinoWarehouseClient(TrinoWarehouseClient_mock_1.credentials);
|
|
134
153
|
queryResultMock.mockReturnValue({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lightdash/warehouses",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.0",
|
|
4
4
|
"description": "Warehouse connectors for Lightdash",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"snowflake-sdk": "2.3.4",
|
|
30
30
|
"ssh2": "1.14.0",
|
|
31
31
|
"trino-client": "0.2.9",
|
|
32
|
-
"@lightdash/common": "1.
|
|
32
|
+
"@lightdash/common": "1.15.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/big.js": "6.2.2",
|