@lightdash/warehouses 2.162.2 → 2.162.3
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/warehouseClients/AthenaWarehouseClient.d.ts +2 -1
- package/dist/warehouseClients/AthenaWarehouseClient.d.ts.map +1 -1
- package/dist/warehouseClients/AthenaWarehouseClient.js +23 -1
- package/dist/warehouseClients/BigqueryWarehouseClient.d.ts +6 -1
- package/dist/warehouseClients/BigqueryWarehouseClient.d.ts.map +1 -1
- package/dist/warehouseClients/BigqueryWarehouseClient.js +31 -2
- package/dist/warehouseClients/BigqueryWarehouseClient.test.js +5 -0
- package/dist/warehouseClients/ClickhouseWarehouseClient.d.ts +2 -1
- package/dist/warehouseClients/ClickhouseWarehouseClient.d.ts.map +1 -1
- package/dist/warehouseClients/ClickhouseWarehouseClient.js +35 -2
- package/dist/warehouseClients/DatabricksWarehouseClient.d.ts +10 -1
- package/dist/warehouseClients/DatabricksWarehouseClient.d.ts.map +1 -1
- package/dist/warehouseClients/DatabricksWarehouseClient.js +34 -8
- package/dist/warehouseClients/DatabricksWarehouseClient.test.js +7 -1
- package/dist/warehouseClients/SnowflakeWarehouseClient.d.ts +3 -1
- package/dist/warehouseClients/SnowflakeWarehouseClient.d.ts.map +1 -1
- package/dist/warehouseClients/SnowflakeWarehouseClient.js +38 -7
- package/dist/warehouseClients/SnowflakeWarehouseClient.mock.d.ts +3 -1
- package/dist/warehouseClients/SnowflakeWarehouseClient.mock.d.ts.map +1 -1
- package/dist/warehouseClients/SnowflakeWarehouseClient.mock.js +5 -1
- package/dist/warehouseClients/SnowflakeWarehouseClient.test.js +8 -1
- package/dist/warehouseClients/TrinoWarehouseClient.d.ts +2 -1
- package/dist/warehouseClients/TrinoWarehouseClient.d.ts.map +1 -1
- package/dist/warehouseClients/TrinoWarehouseClient.js +35 -7
- package/dist/warehouseClients/TrinoWarehouseClient.test.js +5 -0
- package/dist/warehouseClients/numericKinds.test.d.ts +2 -0
- package/dist/warehouseClients/numericKinds.test.d.ts.map +1 -0
- package/dist/warehouseClients/numericKinds.test.js +168 -0
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AthenaClient } from '@aws-sdk/client-athena';
|
|
2
|
-
import { CreateAthenaCredentials, DimensionType, Metric, SupportedDbtAdapter, TimeIntervalUnit, WarehouseResults, WarehouseTypes, type TimestampDomain } from '@lightdash/common';
|
|
2
|
+
import { CreateAthenaCredentials, DimensionType, Metric, SupportedDbtAdapter, TimeIntervalUnit, WarehouseResults, WarehouseTypes, type ResultNumericKind, type TimestampDomain } from '@lightdash/common';
|
|
3
3
|
import { WarehouseCatalog } from '../types';
|
|
4
4
|
import WarehouseBaseClient from './WarehouseBaseClient';
|
|
5
5
|
import WarehouseBaseSqlBuilder from './WarehouseBaseSqlBuilder';
|
|
@@ -29,6 +29,7 @@ export declare enum AthenaTypes {
|
|
|
29
29
|
UUID = "uuid"
|
|
30
30
|
}
|
|
31
31
|
export declare const getAthenaTimestampDomain: (type: AthenaTypes | string) => TimestampDomain | undefined;
|
|
32
|
+
export declare const getAthenaNumericKind: (type: AthenaTypes | string, scale: number | undefined) => ResultNumericKind | null;
|
|
32
33
|
export declare const convertDataTypeToDimensionType: (type: AthenaTypes | string) => DimensionType;
|
|
33
34
|
export declare class AthenaSqlBuilder extends WarehouseBaseSqlBuilder {
|
|
34
35
|
readonly type = WarehouseTypes.ATHENA;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AthenaWarehouseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/AthenaWarehouseClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EAOf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAGH,uBAAuB,EACvB,aAAa,EAEb,MAAM,EAGN,mBAAmB,EACnB,gBAAgB,EAGhB,gBAAgB,EAChB,cAAc,EACd,KAAK,eAAe,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAM5C,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAEhE,oBAAY,WAAW;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,OAAO,wBAAwB;IAC/B,SAAS,cAAc;IACvB,YAAY,6BAA6B;IACzC,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,SAAS,cAAc;IACvB,IAAI,SAAS;CAChB;AAGD,eAAO,MAAM,wBAAwB,SAC3B,WAAW,GAAG,MAAM,KAC3B,eAAe,GAAG,SASpB,CAAC;AAEF,eAAO,MAAM,8BAA8B,SACjC,WAAW,GAAG,MAAM,KAC3B,aAwBF,CAAC;AAiGF,qBAAa,gBAAiB,SAAQ,uBAAuB;IACzD,QAAQ,CAAC,IAAI,yBAAyB;IAEtC,cAAc,IAAI,mBAAmB,CAEpC;IAGD,0BAA0B,IAAI,OAAO,CAEpC;IAED,wBAAwB,IAAI,MAAM,CAEjC;IAED,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAWhD;IAED,eAAe,IAAI,MAAM,CAExB;IAED,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiBlC;IAED,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAI5D;IAED,uBAAuB,CACnB,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,GACxB,MAAM,CAGR;IAED,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGrC;CACJ;AAKD,qBAAa,qBAAsB,SAAQ,mBAAmB,CAAC,uBAAuB,CAAC;IACnF,MAAM,EAAE,YAAY,CAAC;IAErB,YAAY,WAAW,EAAE,uBAAuB,EAuD/C;YAEa,sBAAsB;IAiDpC,OAAO,CAAC,UAAU;IA+BZ,WAAW,CACb,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAChE,OAAO,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,GACF,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"AthenaWarehouseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/AthenaWarehouseClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.AthenaWarehouseClient = exports.AthenaSqlBuilder = exports.convertDataTypeToDimensionType = exports.getAthenaTimestampDomain = exports.AthenaTypes = void 0;
|
|
6
|
+
exports.AthenaWarehouseClient = exports.AthenaSqlBuilder = exports.convertDataTypeToDimensionType = exports.getAthenaNumericKind = exports.getAthenaTimestampDomain = exports.AthenaTypes = void 0;
|
|
7
7
|
const client_athena_1 = require("@aws-sdk/client-athena");
|
|
8
8
|
const credential_providers_1 = require("@aws-sdk/credential-providers");
|
|
9
9
|
const common_1 = require("@lightdash/common");
|
|
@@ -49,6 +49,26 @@ const getAthenaTimestampDomain = (type) => {
|
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
51
|
exports.getAthenaTimestampDomain = getAthenaTimestampDomain;
|
|
52
|
+
// Athena reports a decimal's scale beside its type in ColumnInfo
|
|
53
|
+
const getAthenaNumericKind = (type, scale) => {
|
|
54
|
+
const normalizedType = type.toLowerCase().replace(/\(\d+(,\s*\d+)?\)/, '');
|
|
55
|
+
switch (normalizedType) {
|
|
56
|
+
case AthenaTypes.TINYINT:
|
|
57
|
+
case AthenaTypes.SMALLINT:
|
|
58
|
+
case AthenaTypes.INTEGER:
|
|
59
|
+
case AthenaTypes.BIGINT:
|
|
60
|
+
return { kind: 'integer' };
|
|
61
|
+
case AthenaTypes.REAL:
|
|
62
|
+
case AthenaTypes.FLOAT:
|
|
63
|
+
case AthenaTypes.DOUBLE:
|
|
64
|
+
return { kind: 'float' };
|
|
65
|
+
case AthenaTypes.DECIMAL:
|
|
66
|
+
return scale === undefined ? null : { kind: 'decimal', scale };
|
|
67
|
+
default:
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
exports.getAthenaNumericKind = getAthenaNumericKind;
|
|
52
72
|
const convertDataTypeToDimensionType = (type) => {
|
|
53
73
|
const normalizedType = type.toLowerCase().replace(/\(\d+(,\s*\d+)?\)/, '');
|
|
54
74
|
switch (normalizedType) {
|
|
@@ -351,8 +371,10 @@ class AthenaWarehouseClient extends WarehouseBaseClient_1.default {
|
|
|
351
371
|
if (isFirstBatch && columnInfo) {
|
|
352
372
|
fields = columnInfo.reduce((acc, col) => {
|
|
353
373
|
if (col.Name) {
|
|
374
|
+
const numericKind = (0, exports.getAthenaNumericKind)(col.Type || 'varchar', col.Scale ?? undefined);
|
|
354
375
|
acc[normalizeColumnName(col.Name)] = {
|
|
355
376
|
type: (0, exports.convertDataTypeToDimensionType)(col.Type || 'varchar'),
|
|
377
|
+
...(numericKind ? { numericKind } : {}),
|
|
356
378
|
};
|
|
357
379
|
}
|
|
358
380
|
return acc;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BigQuery, Dataset, DatasetsResponse, GetDatasetsOptions, QueryRowsResponse } from '@google-cloud/bigquery';
|
|
2
2
|
import bigquery from '@google-cloud/bigquery/build/src/types';
|
|
3
|
-
import { AnyType, BigqueryDataset, BigqueryProject, BigqueryProjectRecommendation, CreateBigqueryCredentials, Metric, PartitionColumn, SupportedDbtAdapter, TimeIntervalUnit, WarehouseQueryError, WarehouseResults, WarehouseTypes, type TimestampDomain } from '@lightdash/common';
|
|
3
|
+
import { AnyType, BigqueryDataset, BigqueryProject, BigqueryProjectRecommendation, CreateBigqueryCredentials, Metric, PartitionColumn, SupportedDbtAdapter, TimeIntervalUnit, WarehouseQueryError, WarehouseResults, WarehouseTypes, type ResultNumericKind, type TimestampDomain } from '@lightdash/common';
|
|
4
4
|
import { WarehouseCatalog, WarehouseExecuteAsyncQuery, WarehouseExecuteAsyncQueryArgs } from '../types';
|
|
5
5
|
import WarehouseBaseClient from './WarehouseBaseClient';
|
|
6
6
|
import WarehouseBaseSqlBuilder from './WarehouseBaseSqlBuilder';
|
|
@@ -25,6 +25,11 @@ export declare enum BigqueryFieldType {
|
|
|
25
25
|
ARRAY = "ARRAY"
|
|
26
26
|
}
|
|
27
27
|
export declare const getBigqueryTimestampDomain: (type: string | undefined) => TimestampDomain | undefined;
|
|
28
|
+
export declare const getBigqueryNumericKind: (field: {
|
|
29
|
+
type?: string;
|
|
30
|
+
precision?: string;
|
|
31
|
+
scale?: string;
|
|
32
|
+
}) => ResultNumericKind | null;
|
|
28
33
|
type TableSchema = {
|
|
29
34
|
fields: SchemaFields[];
|
|
30
35
|
};
|
|
@@ -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,EAGP,eAAe,EACf,eAAe,EACf,6BAA6B,EAE7B,yBAAyB,EAGzB,MAAM,EAEN,eAAe,EAMf,mBAAmB,EACnB,gBAAgB,EAEhB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,KAAK,eAAe,EAEvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACH,gBAAgB,EAChB,0BAA0B,EAC1B,8BAA8B,EAEjC,MAAM,UAAU,CAAC;AAOlB,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAKhE,oBAAY,iBAAiB;IACzB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,KAAK,UAAU;CAClB;AAqFD,eAAO,MAAM,0BAA0B,SAC7B,MAAM,GAAG,SAAS,KACzB,eAAe,GAAG,SASpB,CAAC;
|
|
1
|
+
{"version":3,"file":"BigqueryWarehouseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/BigqueryWarehouseClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.BigqueryWarehouseClient = exports.BigquerySqlBuilder = exports.getBigqueryTimestampDomain = exports.BigqueryFieldType = void 0;
|
|
6
|
+
exports.BigqueryWarehouseClient = exports.BigquerySqlBuilder = exports.getBigqueryNumericKind = exports.getBigqueryTimestampDomain = exports.BigqueryFieldType = void 0;
|
|
7
7
|
const bigquery_1 = require("@google-cloud/bigquery");
|
|
8
8
|
const common_1 = require("@lightdash/common");
|
|
9
9
|
const stream_1 = require("stream");
|
|
@@ -127,6 +127,31 @@ const mapFieldType = (type) => {
|
|
|
127
127
|
return common_1.DimensionType.STRING;
|
|
128
128
|
}
|
|
129
129
|
};
|
|
130
|
+
// NUMERIC is (38, 9) unless declared; BIGNUMERIC fits a DuckDB decimal only when its declared precision does
|
|
131
|
+
const getBigqueryNumericKind = (field) => {
|
|
132
|
+
const declared = (value) => value !== undefined && value !== '' ? Number(value) : null;
|
|
133
|
+
const declaredScale = declared(field.scale);
|
|
134
|
+
const declaredPrecision = declared(field.precision);
|
|
135
|
+
switch (field.type) {
|
|
136
|
+
case BigqueryFieldType.INTEGER:
|
|
137
|
+
case BigqueryFieldType.INT64:
|
|
138
|
+
return { kind: 'integer' };
|
|
139
|
+
case BigqueryFieldType.FLOAT:
|
|
140
|
+
case BigqueryFieldType.FLOAT64:
|
|
141
|
+
return { kind: 'float' };
|
|
142
|
+
case BigqueryFieldType.NUMERIC:
|
|
143
|
+
return { kind: 'decimal', scale: declaredScale ?? 9 };
|
|
144
|
+
case BigqueryFieldType.BIGNUMERIC:
|
|
145
|
+
return declaredScale !== null &&
|
|
146
|
+
declaredPrecision !== null &&
|
|
147
|
+
declaredPrecision <= 38
|
|
148
|
+
? { kind: 'decimal', scale: declaredScale }
|
|
149
|
+
: null;
|
|
150
|
+
default:
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
exports.getBigqueryNumericKind = getBigqueryNumericKind;
|
|
130
155
|
const isSchemaFields = (rawSchemaFields) => rawSchemaFields.every((field) => field.type && field.name);
|
|
131
156
|
const isTableSchema = (schema) => !!schema && !!schema.fields && isSchemaFields(schema.fields);
|
|
132
157
|
const BIGQUERY_REPEATED_MODE = 'REPEATED';
|
|
@@ -338,9 +363,13 @@ class BigqueryWarehouseClient extends WarehouseBaseClient_1.default {
|
|
|
338
363
|
static getFieldsFromResponse(response) {
|
|
339
364
|
return (response?.schema?.fields || []).reduce((acc, field) => {
|
|
340
365
|
if (field.name) {
|
|
366
|
+
const numericKind = (0, exports.getBigqueryNumericKind)(field);
|
|
341
367
|
return {
|
|
342
368
|
...acc,
|
|
343
|
-
[field.name]: {
|
|
369
|
+
[field.name]: {
|
|
370
|
+
type: mapFieldType(field.type),
|
|
371
|
+
...(numericKind ? { numericKind } : {}),
|
|
372
|
+
},
|
|
344
373
|
};
|
|
345
374
|
}
|
|
346
375
|
return acc;
|
|
@@ -12,6 +12,11 @@ describe('BigqueryWarehouseClient', () => {
|
|
|
12
12
|
const results = await warehouse.runQuery('fake sql');
|
|
13
13
|
expect(results.fields).toEqual({
|
|
14
14
|
...WarehouseClient_mock_1.expectedFields,
|
|
15
|
+
// NUMERIC is (38, 9) unless declared; BIGNUMERIC reports no kind
|
|
16
|
+
myNumberColumn: {
|
|
17
|
+
type: 'number',
|
|
18
|
+
numericKind: { kind: 'decimal', scale: 9 },
|
|
19
|
+
},
|
|
15
20
|
myBigNumberColumn: { type: 'number' },
|
|
16
21
|
myRepeatedColumn: { type: 'string' },
|
|
17
22
|
myRecordColumn: { type: 'string' },
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ClickHouseClient } from '@clickhouse/client';
|
|
2
|
-
import { AnyType, CreateClickhouseCredentials, DimensionType, Metric, SupportedDbtAdapter, TimeIntervalUnit, WarehouseResults, WarehouseTypes, type TimestampDomain } from '@lightdash/common';
|
|
2
|
+
import { AnyType, CreateClickhouseCredentials, DimensionType, Metric, SupportedDbtAdapter, TimeIntervalUnit, WarehouseResults, WarehouseTypes, type ResultNumericKind, type TimestampDomain } from '@lightdash/common';
|
|
3
3
|
import { WarehouseCatalog } from '../types';
|
|
4
4
|
import WarehouseBaseClient from './WarehouseBaseClient';
|
|
5
5
|
import WarehouseBaseSqlBuilder from './WarehouseBaseSqlBuilder';
|
|
@@ -43,6 +43,7 @@ interface TableInfo {
|
|
|
43
43
|
table: string;
|
|
44
44
|
}
|
|
45
45
|
export declare const getClickhouseTimestampDomain: (type: ClickhouseTypes | string) => TimestampDomain | undefined;
|
|
46
|
+
export declare const getClickhouseNumericKind: (type: ClickhouseTypes | string) => ResultNumericKind | null;
|
|
46
47
|
export declare const convertDataTypeToDimensionType: (type: ClickhouseTypes | string) => DimensionType;
|
|
47
48
|
export declare class ClickhouseSqlBuilder extends WarehouseBaseSqlBuilder {
|
|
48
49
|
readonly type = WarehouseTypes.CLICKHOUSE;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClickhouseWarehouseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/ClickhouseWarehouseClient.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ClickhouseWarehouseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/ClickhouseWarehouseClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ClickhouseWarehouseClient = exports.getMaxOpenConnections = exports.ClickhouseSqlBuilder = exports.convertDataTypeToDimensionType = exports.getClickhouseTimestampDomain = exports.ClickhouseTypes = void 0;
|
|
6
|
+
exports.ClickhouseWarehouseClient = exports.getMaxOpenConnections = exports.ClickhouseSqlBuilder = exports.convertDataTypeToDimensionType = exports.getClickhouseNumericKind = exports.getClickhouseTimestampDomain = exports.ClickhouseTypes = void 0;
|
|
7
7
|
const client_1 = require("@clickhouse/client");
|
|
8
8
|
const common_1 = require("@lightdash/common");
|
|
9
9
|
const processPromisesInBatches_1 = require("../utils/processPromisesInBatches");
|
|
@@ -71,6 +71,36 @@ const getClickhouseTimestampDomain = (type) => {
|
|
|
71
71
|
}
|
|
72
72
|
};
|
|
73
73
|
exports.getClickhouseTimestampDomain = getClickhouseTimestampDomain;
|
|
74
|
+
// The server names every decimal Decimal(P, S); one wider than 38 digits exceeds a DuckDB decimal
|
|
75
|
+
const getClickhouseNumericKind = (type) => {
|
|
76
|
+
const cleanType = cleanClickhouseType(type);
|
|
77
|
+
switch (cleanType) {
|
|
78
|
+
case ClickhouseTypes.UINT8:
|
|
79
|
+
case ClickhouseTypes.UINT16:
|
|
80
|
+
case ClickhouseTypes.UINT32:
|
|
81
|
+
case ClickhouseTypes.UINT64:
|
|
82
|
+
case ClickhouseTypes.INT8:
|
|
83
|
+
case ClickhouseTypes.INT16:
|
|
84
|
+
case ClickhouseTypes.INT32:
|
|
85
|
+
case ClickhouseTypes.INT64:
|
|
86
|
+
return { kind: 'integer' };
|
|
87
|
+
case ClickhouseTypes.FLOAT32:
|
|
88
|
+
case ClickhouseTypes.FLOAT64:
|
|
89
|
+
return { kind: 'float' };
|
|
90
|
+
case ClickhouseTypes.DECIMAL: {
|
|
91
|
+
const params = type.match(/Decimal\(\s*(\d+)\s*,\s*(\d+)\s*\)/);
|
|
92
|
+
if (!params)
|
|
93
|
+
return null;
|
|
94
|
+
const [, precision, scale] = params;
|
|
95
|
+
return Number(precision) <= 38
|
|
96
|
+
? { kind: 'decimal', scale: Number(scale) }
|
|
97
|
+
: null;
|
|
98
|
+
}
|
|
99
|
+
default:
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
exports.getClickhouseNumericKind = getClickhouseNumericKind;
|
|
74
104
|
const convertDataTypeToDimensionType = (type) => {
|
|
75
105
|
const cleanType = cleanClickhouseType(type);
|
|
76
106
|
switch (cleanType) {
|
|
@@ -249,8 +279,11 @@ class ClickhouseWarehouseClient extends WarehouseBaseClient_1.default {
|
|
|
249
279
|
else if (Object.keys(fields).length === 0) {
|
|
250
280
|
// handle second row with column types
|
|
251
281
|
columnNames.forEach((c, index) => {
|
|
282
|
+
const rawType = String(row[index]);
|
|
283
|
+
const numericKind = (0, exports.getClickhouseNumericKind)(rawType);
|
|
252
284
|
fields[c] = {
|
|
253
|
-
type: (0, exports.convertDataTypeToDimensionType)(
|
|
285
|
+
type: (0, exports.convertDataTypeToDimensionType)(rawType),
|
|
286
|
+
...(numericKind ? { numericKind } : {}),
|
|
254
287
|
};
|
|
255
288
|
});
|
|
256
289
|
// eslint-disable-next-line no-await-in-loop
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ConnectionOptions } from '@databricks/sql/dist/contracts/IDBSQLClient';
|
|
2
|
-
import {
|
|
2
|
+
import { TTypeId as DatabricksDataTypes } from '@databricks/sql/thrift/TCLIService_types';
|
|
3
|
+
import { AnyType, CreateDatabricksCredentials, Metric, SupportedDbtAdapter, TimeIntervalUnit, WarehouseResults, WarehouseTypes, type ResultNumericKind, type TimestampDomain } from '@lightdash/common';
|
|
3
4
|
import { WarehouseCatalog } from '../types';
|
|
4
5
|
import WarehouseBaseClient from './WarehouseBaseClient';
|
|
5
6
|
import WarehouseBaseSqlBuilder from './WarehouseBaseSqlBuilder';
|
|
@@ -12,6 +13,14 @@ import WarehouseBaseSqlBuilder from './WarehouseBaseSqlBuilder';
|
|
|
12
13
|
*/
|
|
13
14
|
export declare const DATABRICKS_DEFAULT_OAUTH_CLIENT_ID = "databricks-cli";
|
|
14
15
|
export declare const isDatabricksCliOAuthClientId: (clientId: string | undefined) => boolean;
|
|
16
|
+
export declare const getDatabricksNumericKind: (entry: {
|
|
17
|
+
type: DatabricksDataTypes;
|
|
18
|
+
typeQualifiers?: {
|
|
19
|
+
qualifiers: Record<string, {
|
|
20
|
+
i32Value?: number;
|
|
21
|
+
}>;
|
|
22
|
+
};
|
|
23
|
+
}) => ResultNumericKind | null;
|
|
15
24
|
export declare const getDatabricksTimestampDomain: (type: string) => TimestampDomain | undefined;
|
|
16
25
|
export declare class DatabricksSqlBuilder extends WarehouseBaseSqlBuilder {
|
|
17
26
|
readonly type = WarehouseTypes.DATABRICKS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabricksWarehouseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/DatabricksWarehouseClient.ts"],"names":[],"mappings":"AACA,OAAqB,EACjB,iBAAiB,EACpB,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"DatabricksWarehouseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/DatabricksWarehouseClient.ts"],"names":[],"mappings":"AACA,OAAqB,EACjB,iBAAiB,EACpB,MAAM,6CAA6C,CAAC;AAIrD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EACH,OAAO,EACP,2BAA2B,EAI3B,MAAM,EAIN,mBAAmB,EACnB,gBAAgB,EAIhB,gBAAgB,EAChB,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAO5C,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAEhE;;;;;;GAMG;AACH,eAAO,MAAM,kCAAkC,mBAAmB,CAAC;AAQnE,eAAO,MAAM,4BAA4B,aAC3B,MAAM,GAAG,SAAS,KAC7B,OAAsE,CAAC;AA8B1E,eAAO,MAAM,wBAAwB,UAAW;IAC5C,IAAI,EAAE,mBAAmB,CAAC;IAC1B,cAAc,CAAC,EAAE;QACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACrD,CAAC;CACL,KAAG,iBAAiB,GAAG,IAiBvB,CAAC;AAyHF,eAAO,MAAM,4BAA4B,SAC/B,MAAM,KACb,eAAe,GAAG,SASpB,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,uBAAuB;IAC7D,QAAQ,CAAC,IAAI,6BAA6B;IAE1C,cAAc,IAAI,mBAAmB,CAEpC;IAED,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAShD;IAED,iBAAiB,IAAI,MAAM,CAE1B;IAED,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiBlC;IAED,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAI5D;IAED,uBAAuB,CACnB,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,GACxB,MAAM,CAGR;IAED,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGrC;IAED,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAGrC;IAED,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAO1D;CACJ;AA2BD,qBAAa,yBAA0B,SAAQ,mBAAmB,CAAC,2BAA2B,CAAC;IAC3F,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,iBAAiB,EAAE,iBAAiB,CAAC;IAErC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IAEzC,YAAY,WAAW,EAAE,2BAA2B,EA+CnD;YAEa,WAAW;YA6CX,oBAAoB;IA0E5B,WAAW,CACb,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAChE,OAAO,EAAE;QACL,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,GACF,OAAO,CAAC,IAAI,CAAC,CAkCf;mBAEoB,eAAe;IAuB9B,UAAU,CACZ,QAAQ,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACjB,EAAE,6BAkFN;IAEK,YAAY;;;;SAajB;IAEK,SAAS,CACX,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAoB3B;IAEK,SAAS,CACX,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAyB3B;CACJ;AAED;;GAEG;AACH,eAAO,MAAM,kCAAkC,SACrC,MAAM,YACF,MAAM,gBACF,MAAM,KACrB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CA+BxD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,SAC9B,MAAM,YACF,MAAM,gBACF,MAAM,iBACL,MAAM,KACtB,OAAO,CAAC;IACP,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACrB,CAqCA,CAAC"}
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.refreshDatabricksOAuthToken = exports.exchangeDatabricksOAuthCredentials = exports.DatabricksWarehouseClient = exports.DatabricksSqlBuilder = exports.getDatabricksTimestampDomain = exports.isDatabricksCliOAuthClientId = exports.DATABRICKS_DEFAULT_OAUTH_CLIENT_ID = void 0;
|
|
6
|
+
exports.refreshDatabricksOAuthToken = exports.exchangeDatabricksOAuthCredentials = exports.DatabricksWarehouseClient = exports.DatabricksSqlBuilder = exports.getDatabricksTimestampDomain = exports.getDatabricksNumericKind = exports.isDatabricksCliOAuthClientId = exports.DATABRICKS_DEFAULT_OAUTH_CLIENT_ID = void 0;
|
|
7
7
|
const sql_1 = require("@databricks/sql");
|
|
8
8
|
const StatusError_1 = __importDefault(require("@databricks/sql/dist/errors/StatusError"));
|
|
9
9
|
const TCLIService_types_1 = require("@databricks/sql/thrift/TCLIService_types");
|
|
@@ -29,6 +29,26 @@ const DATABRICKS_CLI_OAUTH_CLIENT_IDS = new Set([
|
|
|
29
29
|
]);
|
|
30
30
|
const isDatabricksCliOAuthClientId = (clientId) => !!clientId && DATABRICKS_CLI_OAUTH_CLIENT_IDS.has(clientId);
|
|
31
31
|
exports.isDatabricksCliOAuthClientId = isDatabricksCliOAuthClientId;
|
|
32
|
+
// A decimal's scale travels as a type qualifier beside the primitive type
|
|
33
|
+
const getDatabricksNumericKind = (entry) => {
|
|
34
|
+
switch (entry.type) {
|
|
35
|
+
case TCLIService_types_1.TTypeId.TINYINT_TYPE:
|
|
36
|
+
case TCLIService_types_1.TTypeId.SMALLINT_TYPE:
|
|
37
|
+
case TCLIService_types_1.TTypeId.INT_TYPE:
|
|
38
|
+
case TCLIService_types_1.TTypeId.BIGINT_TYPE:
|
|
39
|
+
return { kind: 'integer' };
|
|
40
|
+
case TCLIService_types_1.TTypeId.FLOAT_TYPE:
|
|
41
|
+
case TCLIService_types_1.TTypeId.DOUBLE_TYPE:
|
|
42
|
+
return { kind: 'float' };
|
|
43
|
+
case TCLIService_types_1.TTypeId.DECIMAL_TYPE: {
|
|
44
|
+
const scale = entry.typeQualifiers?.qualifiers.scale?.i32Value;
|
|
45
|
+
return scale === undefined ? null : { kind: 'decimal', scale };
|
|
46
|
+
}
|
|
47
|
+
default:
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
exports.getDatabricksNumericKind = getDatabricksNumericKind;
|
|
32
52
|
const convertDataTypeToDimensionType = (type) => {
|
|
33
53
|
switch (type) {
|
|
34
54
|
case TCLIService_types_1.TTypeId.BOOLEAN_TYPE:
|
|
@@ -333,13 +353,19 @@ class DatabricksWarehouseClient extends WarehouseBaseClient_1.default {
|
|
|
333
353
|
ordinalParameters: options.values,
|
|
334
354
|
});
|
|
335
355
|
const querySchema = await query.getSchema();
|
|
336
|
-
const fields = (querySchema?.columns ?? []).reduce((acc, column) =>
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
356
|
+
const fields = (querySchema?.columns ?? []).reduce((acc, column) => {
|
|
357
|
+
const entry = column.typeDesc.types[0]?.primitiveEntry;
|
|
358
|
+
const numericKind = entry
|
|
359
|
+
? (0, exports.getDatabricksNumericKind)(entry)
|
|
360
|
+
: null;
|
|
361
|
+
return {
|
|
362
|
+
...acc,
|
|
363
|
+
[column.columnName]: {
|
|
364
|
+
type: convertDataTypeToDimensionType(entry?.type ?? TCLIService_types_1.TTypeId.STRING_TYPE),
|
|
365
|
+
...(numericKind ? { numericKind } : {}),
|
|
366
|
+
},
|
|
367
|
+
};
|
|
368
|
+
}, {});
|
|
343
369
|
do {
|
|
344
370
|
// eslint-disable-next-line no-await-in-loop
|
|
345
371
|
const chunk = await query.fetchChunk({
|
|
@@ -88,7 +88,13 @@ describe('DatabricksWarehouseClient', () => {
|
|
|
88
88
|
it('expect query fields and rows', async () => {
|
|
89
89
|
const warehouse = new DatabricksWarehouseClient_1.DatabricksWarehouseClient(DatabricksWarehouseClient_mock_1.credentials);
|
|
90
90
|
const results = await warehouse.runQuery('fake sql');
|
|
91
|
-
expect(results.fields).toEqual(
|
|
91
|
+
expect(results.fields).toEqual({
|
|
92
|
+
...WarehouseClient_mock_1.expectedFields,
|
|
93
|
+
myNumberColumn: {
|
|
94
|
+
...WarehouseClient_mock_1.expectedFields.myNumberColumn,
|
|
95
|
+
numericKind: { kind: 'integer' },
|
|
96
|
+
},
|
|
97
|
+
});
|
|
92
98
|
expect(results.rows[0]).toEqual(DatabricksWarehouseClient_mock_1.rows[0]);
|
|
93
99
|
});
|
|
94
100
|
it('caps fetchChunk size to avoid materializing whole results', async () => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnyType, CreateSnowflakeCredentials, DimensionType, Metric, SupportedDbtAdapter, WarehouseQueryError, WarehouseResults, WarehouseTypes, type TimestampDomain, type WarehouseExecuteAsyncQuery, type WarehouseExecuteAsyncQueryArgs } from '@lightdash/common';
|
|
1
|
+
import { AnyType, CreateSnowflakeCredentials, DimensionType, Metric, SupportedDbtAdapter, WarehouseQueryError, WarehouseResults, WarehouseTypes, type ResultNumericKind, type TimestampDomain, type WarehouseExecuteAsyncQuery, type WarehouseExecuteAsyncQueryArgs } from '@lightdash/common';
|
|
2
2
|
import { Connection, ConnectionOptions, SnowflakeError } from 'snowflake-sdk';
|
|
3
3
|
import { WarehouseCatalog } from '../types';
|
|
4
4
|
import WarehouseBaseClient from './WarehouseBaseClient';
|
|
@@ -94,6 +94,8 @@ export type SnowflakePublicKeySlots = {
|
|
|
94
94
|
RSA_PUBLIC_KEY: string | null;
|
|
95
95
|
RSA_PUBLIC_KEY_2: string | null;
|
|
96
96
|
};
|
|
97
|
+
/** NUMBER is FIXED with a scale at the source; scale 0 is an integer. */
|
|
98
|
+
export declare const getSnowflakeNumericKind: (type: string, scale: number | undefined) => ResultNumericKind | null;
|
|
97
99
|
export declare const mapFieldType: (type: string) => DimensionType;
|
|
98
100
|
export declare class SnowflakeSqlBuilder extends WarehouseBaseSqlBuilder {
|
|
99
101
|
readonly type = WarehouseTypes.SNOWFLAKE;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SnowflakeWarehouseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/SnowflakeWarehouseClient.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SnowflakeWarehouseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/SnowflakeWarehouseClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.SnowflakeWarehouseClient = exports.SnowflakeSqlBuilder = exports.mapFieldType = exports.SnowflakeDiagnosticError = exports.mapSnowflakeDiagnosticError = exports.snowflakeIdentifier = exports.getSnowflakeTimestampDomain = exports.SnowflakeTypes = void 0;
|
|
39
|
+
exports.SnowflakeWarehouseClient = exports.SnowflakeSqlBuilder = exports.mapFieldType = exports.getSnowflakeNumericKind = exports.SnowflakeDiagnosticError = exports.mapSnowflakeDiagnosticError = exports.snowflakeIdentifier = exports.getSnowflakeTimestampDomain = exports.SnowflakeTypes = void 0;
|
|
40
40
|
const common_1 = require("@lightdash/common");
|
|
41
41
|
const crypto = __importStar(require("crypto"));
|
|
42
42
|
const snowflake_sdk_1 = require("snowflake-sdk");
|
|
@@ -369,6 +369,32 @@ class SnowflakeDiagnosticError extends Error {
|
|
|
369
369
|
}
|
|
370
370
|
}
|
|
371
371
|
exports.SnowflakeDiagnosticError = SnowflakeDiagnosticError;
|
|
372
|
+
/** NUMBER is FIXED with a scale at the source; scale 0 is an integer. */
|
|
373
|
+
const getSnowflakeNumericKind = (type, scale) => {
|
|
374
|
+
switch (type.toUpperCase()) {
|
|
375
|
+
case SnowflakeTypes.NUMBER:
|
|
376
|
+
case SnowflakeTypes.FIXED:
|
|
377
|
+
case SnowflakeTypes.DECIMAL:
|
|
378
|
+
case SnowflakeTypes.NUMERIC:
|
|
379
|
+
case SnowflakeTypes.INT:
|
|
380
|
+
case SnowflakeTypes.INTEGER:
|
|
381
|
+
case SnowflakeTypes.BIGINT:
|
|
382
|
+
case SnowflakeTypes.SMALLINT:
|
|
383
|
+
if (scale === undefined)
|
|
384
|
+
return null;
|
|
385
|
+
return scale > 0 ? { kind: 'decimal', scale } : { kind: 'integer' };
|
|
386
|
+
case SnowflakeTypes.FLOAT:
|
|
387
|
+
case SnowflakeTypes.FLOAT4:
|
|
388
|
+
case SnowflakeTypes.FLOAT8:
|
|
389
|
+
case SnowflakeTypes.DOUBLE:
|
|
390
|
+
case SnowflakeTypes.DOUBLE_PRECISION:
|
|
391
|
+
case SnowflakeTypes.REAL:
|
|
392
|
+
return { kind: 'float' };
|
|
393
|
+
default:
|
|
394
|
+
return null;
|
|
395
|
+
}
|
|
396
|
+
};
|
|
397
|
+
exports.getSnowflakeNumericKind = getSnowflakeNumericKind;
|
|
372
398
|
const mapFieldType = (type) => {
|
|
373
399
|
switch (normaliseSnowflakeType(type)) {
|
|
374
400
|
case SnowflakeTypes.NUMBER:
|
|
@@ -905,12 +931,17 @@ class SnowflakeWarehouseClient extends WarehouseBaseClient_1.default {
|
|
|
905
931
|
// There is a bug/mistype in snowflake-sdk since this method can return undefined
|
|
906
932
|
const columns = stmt.getColumns();
|
|
907
933
|
return columns
|
|
908
|
-
? columns.reduce((acc, column) =>
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
934
|
+
? columns.reduce((acc, column) => {
|
|
935
|
+
const type = column.getType().toUpperCase();
|
|
936
|
+
const numericKind = (0, exports.getSnowflakeNumericKind)(type, column.getScale?.());
|
|
937
|
+
return {
|
|
938
|
+
...acc,
|
|
939
|
+
[column.getName()]: {
|
|
940
|
+
type: (0, exports.mapFieldType)(type),
|
|
941
|
+
...(numericKind ? { numericKind } : {}),
|
|
942
|
+
},
|
|
943
|
+
};
|
|
944
|
+
}, {})
|
|
914
945
|
: {};
|
|
915
946
|
}
|
|
916
947
|
async destroyConnection(connection, authenticator) {
|
|
@@ -4,9 +4,11 @@ export declare const columns: Record<string, AnyType>[];
|
|
|
4
4
|
declare class ColumnMock {
|
|
5
5
|
private readonly name;
|
|
6
6
|
private readonly type;
|
|
7
|
-
|
|
7
|
+
private readonly scale;
|
|
8
|
+
constructor(name: string, type: string, scale?: number);
|
|
8
9
|
getName(): string;
|
|
9
10
|
getType(): string;
|
|
11
|
+
getScale(): number;
|
|
10
12
|
}
|
|
11
13
|
export declare const queryColumnsMock: ColumnMock[];
|
|
12
14
|
export declare const expectedWarehouseSchema: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SnowflakeWarehouseClient.mock.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/SnowflakeWarehouseClient.mock.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,OAAO,EACP,0BAA0B,EAC1B,aAAa,EAEhB,MAAM,mBAAmB,CAAC;AAI3B,eAAO,MAAM,WAAW,EAAE,0BASzB,CAAC;AASF,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAiG5C,CAAC;AAEF,cAAM,UAAU;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAE9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAE9B,YAAY,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"SnowflakeWarehouseClient.mock.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/SnowflakeWarehouseClient.mock.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,OAAO,EACP,0BAA0B,EAC1B,aAAa,EAEhB,MAAM,mBAAmB,CAAC;AAI3B,eAAO,MAAM,WAAW,EAAE,0BASzB,CAAC;AASF,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAiG5C,CAAC;AAEF,cAAM,UAAU;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAE9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAE9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAE/B,YAAY,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,EAIxD;IAED,OAAO,WAEN;IAED,OAAO,WAEN;IAED,QAAQ,WAEP;CACJ;AAED,eAAO,MAAM,gBAAgB,cAQ5B,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;QAgB5B,UAAU;YACN,QAAQ;gBAAI,OAAO;oBAAI,iBAAiB;;;;;CAGnD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAQlD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAQ/C,CAAC"}
|
|
@@ -119,9 +119,10 @@ exports.columns = [
|
|
|
119
119
|
},
|
|
120
120
|
];
|
|
121
121
|
class ColumnMock {
|
|
122
|
-
constructor(name, type) {
|
|
122
|
+
constructor(name, type, scale = 0) {
|
|
123
123
|
this.name = name;
|
|
124
124
|
this.type = type;
|
|
125
|
+
this.scale = scale;
|
|
125
126
|
}
|
|
126
127
|
getName() {
|
|
127
128
|
return this.name;
|
|
@@ -129,6 +130,9 @@ class ColumnMock {
|
|
|
129
130
|
getType() {
|
|
130
131
|
return this.type;
|
|
131
132
|
}
|
|
133
|
+
getScale() {
|
|
134
|
+
return this.scale;
|
|
135
|
+
}
|
|
132
136
|
}
|
|
133
137
|
exports.queryColumnsMock = [
|
|
134
138
|
new ColumnMock('MYSTRINGCOLUMN', 'string'),
|
|
@@ -452,7 +452,14 @@ describe('SnowflakeWarehouseClient', () => {
|
|
|
452
452
|
it('expect query rows', async () => {
|
|
453
453
|
const warehouse = new SnowflakeWarehouseClient_1.SnowflakeWarehouseClient(SnowflakeWarehouseClient_mock_1.credentials);
|
|
454
454
|
const results = await warehouse.runQuery('fake sql');
|
|
455
|
-
expect(results.fields).toEqual(
|
|
455
|
+
expect(results.fields).toEqual({
|
|
456
|
+
...SnowflakeWarehouseClient_mock_1.expectedFields,
|
|
457
|
+
// NUMBER with scale 0 at the source is an integer
|
|
458
|
+
MYNUMBERCOLUMN: {
|
|
459
|
+
...SnowflakeWarehouseClient_mock_1.expectedFields.MYNUMBERCOLUMN,
|
|
460
|
+
numericKind: { kind: 'integer' },
|
|
461
|
+
},
|
|
462
|
+
});
|
|
456
463
|
expect(results.rows[0]).toEqual(SnowflakeWarehouseClient_mock_1.expectedRow);
|
|
457
464
|
});
|
|
458
465
|
it('escapes single quotes in query tags for session SQL', () => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CreateTrinoCredentials, Metric, SupportedDbtAdapter, TimeIntervalUnit, WarehouseResults, WarehouseTypes, type TimestampDomain } from '@lightdash/common';
|
|
1
|
+
import { CreateTrinoCredentials, Metric, SupportedDbtAdapter, TimeIntervalUnit, WarehouseResults, WarehouseTypes, type ResultNumericKind, type TimestampDomain } from '@lightdash/common';
|
|
2
2
|
import { ConnectionOptions } from 'trino-client';
|
|
3
3
|
import { WarehouseCatalog } from '../types';
|
|
4
4
|
import WarehouseBaseClient from './WarehouseBaseClient';
|
|
@@ -35,6 +35,7 @@ interface TableInfo {
|
|
|
35
35
|
table: string;
|
|
36
36
|
}
|
|
37
37
|
export declare const getTrinoTimestampDomain: (type: TrinoTypes | string) => TimestampDomain | undefined;
|
|
38
|
+
export declare const getTrinoNumericKind: (type: TrinoTypes | string) => ResultNumericKind | null;
|
|
38
39
|
export declare class TrinoSqlBuilder extends WarehouseBaseSqlBuilder {
|
|
39
40
|
readonly type = WarehouseTypes.TRINO;
|
|
40
41
|
getAdapterType(): SupportedDbtAdapter;
|
|
@@ -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;AAO5C,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAiBhE,oBAAY,UAAU;IAClB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,OAAO,wBAAwB;IAC/B,SAAS,cAAc;IACvB,YAAY,6BAA6B;IACzC,mBAAmB,2BAA2B;IAC9C,iBAAiB,2BAA2B;IAC5C,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,SAAS,cAAc;IACvB,IAAI,SAAS;CAChB;AAED,UAAU,SAAS;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB;AAyBD,eAAO,MAAM,uBAAuB,SAC1B,UAAU,GAAG,MAAM,KAC1B,eAAe,GAAG,SASpB,CAAC;AA4FF,qBAAa,eAAgB,SAAQ,uBAAuB;IACxD,QAAQ,CAAC,IAAI,wBAAwB;IAErC,cAAc,IAAI,mBAAmB,CAEpC;IAGD,0BAA0B,IAAI,OAAO,CAEpC;IAED,wBAAwB,IAAI,MAAM,CAEjC;IAED,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAWhD;IAED,eAAe,IAAI,MAAM,CAExB;IAED,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiBlC;IAED,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAGlC;IAED,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE7B;IAED,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAI5D;IAED,uBAAuB,CACnB,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,GACxB,MAAM,CAGR;IAED,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGrC;CACJ;AAED,qBAAa,oBAAqB,SAAQ,mBAAmB,CAAC,sBAAsB,CAAC;IACjF,iBAAiB,EAAE,iBAAiB,CAAC;IAErC,YAAY,WAAW,EAAE,sBAAsB,EAS9C;YAEa,UAAU;IAkBlB,WAAW,CACb,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAChE,OAAO,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,GACF,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"TrinoWarehouseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/TrinoWarehouseClient.ts"],"names":[],"mappings":"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"}
|