@lightdash/warehouses 0.3439.0 → 0.3440.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.
Files changed (42) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/warehouseClients/AthenaWarehouseClient.d.ts +2 -1
  3. package/dist/warehouseClients/AthenaWarehouseClient.d.ts.map +1 -1
  4. package/dist/warehouseClients/AthenaWarehouseClient.js +27 -13
  5. package/dist/warehouseClients/BigqueryWarehouseClient.d.ts +2 -1
  6. package/dist/warehouseClients/BigqueryWarehouseClient.d.ts.map +1 -1
  7. package/dist/warehouseClients/BigqueryWarehouseClient.js +20 -7
  8. package/dist/warehouseClients/BigqueryWarehouseClient.test.js +1 -1
  9. package/dist/warehouseClients/ClickhouseWarehouseClient.d.ts +2 -1
  10. package/dist/warehouseClients/ClickhouseWarehouseClient.d.ts.map +1 -1
  11. package/dist/warehouseClients/ClickhouseWarehouseClient.js +21 -5
  12. package/dist/warehouseClients/DatabricksWarehouseClient.d.ts +2 -1
  13. package/dist/warehouseClients/DatabricksWarehouseClient.d.ts.map +1 -1
  14. package/dist/warehouseClients/DatabricksWarehouseClient.js +23 -8
  15. package/dist/warehouseClients/DuckdbWarehouseClient.d.ts +2 -1
  16. package/dist/warehouseClients/DuckdbWarehouseClient.d.ts.map +1 -1
  17. package/dist/warehouseClients/DuckdbWarehouseClient.js +17 -5
  18. package/dist/warehouseClients/DuckdbWarehouseClient.test.js +5 -0
  19. package/dist/warehouseClients/PostgresWarehouseClient.d.ts +5 -5
  20. package/dist/warehouseClients/PostgresWarehouseClient.d.ts.map +1 -1
  21. package/dist/warehouseClients/PostgresWarehouseClient.js +19 -2
  22. package/dist/warehouseClients/PostgresWarehouseClient.test.js +1 -1
  23. package/dist/warehouseClients/SnowflakeWarehouseClient.d.ts +2 -1
  24. package/dist/warehouseClients/SnowflakeWarehouseClient.d.ts.map +1 -1
  25. package/dist/warehouseClients/SnowflakeWarehouseClient.js +21 -3
  26. package/dist/warehouseClients/SnowflakeWarehouseClient.mock.d.ts +9 -0
  27. package/dist/warehouseClients/SnowflakeWarehouseClient.mock.d.ts.map +1 -1
  28. package/dist/warehouseClients/SnowflakeWarehouseClient.mock.js +6 -0
  29. package/dist/warehouseClients/TrinoWarehouseClient.d.ts +2 -1
  30. package/dist/warehouseClients/TrinoWarehouseClient.d.ts.map +1 -1
  31. package/dist/warehouseClients/TrinoWarehouseClient.js +16 -4
  32. package/dist/warehouseClients/TrinoWarehouseClient.test.js +1 -1
  33. package/dist/warehouseClients/WarehouseBaseClient.d.ts +2 -2
  34. package/dist/warehouseClients/WarehouseBaseClient.d.ts.map +1 -1
  35. package/dist/warehouseClients/WarehouseBaseClient.js +5 -2
  36. package/dist/warehouseClients/WarehouseClient.mock.d.ts +2 -0
  37. package/dist/warehouseClients/WarehouseClient.mock.d.ts.map +1 -1
  38. package/dist/warehouseClients/WarehouseClient.mock.js +8 -1
  39. package/dist/warehouseClients/timestampDomain.test.d.ts +2 -0
  40. package/dist/warehouseClients/timestampDomain.test.d.ts.map +1 -0
  41. package/dist/warehouseClients/timestampDomain.test.js +101 -0
  42. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import { AnyType, CreateSnowflakeCredentials, DimensionType, Metric, SupportedDbtAdapter, WarehouseQueryError, WarehouseResults, WarehouseTypes, type WarehouseExecuteAsyncQuery, type WarehouseExecuteAsyncQueryArgs } from '@lightdash/common';
1
+ import { AnyType, CreateSnowflakeCredentials, DimensionType, Metric, SupportedDbtAdapter, WarehouseQueryError, WarehouseResults, WarehouseTypes, 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';
@@ -33,6 +33,7 @@ export declare enum SnowflakeTypes {
33
33
  ARRAY = "ARRAY",
34
34
  GEOGRAPHY = "GEOGRAPHY"
35
35
  }
36
+ export declare const getSnowflakeTimestampDomain: (type: string) => TimestampDomain | undefined;
36
37
  export type SnowflakeOAuthTokens = {
37
38
  accessToken: string;
38
39
  refreshToken: string;
@@ -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.SnowflakeTypes = void 0;
39
+ exports.SnowflakeWarehouseClient = exports.SnowflakeSqlBuilder = exports.mapFieldType = 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");
@@ -92,6 +92,22 @@ const normaliseSnowflakeType = (type) => {
92
92
  }
93
93
  return match[0];
94
94
  };
95
+ // Classifies on the full raw string: normaliseSnowflakeType truncates at the
96
+ // underscore, collapsing TIMESTAMP_NTZ/TZ/LTZ into TIMESTAMP. Strips parameter
97
+ // suffixes like TIMESTAMP_NTZ(9). Bare TIMESTAMP is left unknown — it aliases
98
+ // per-account via TIMESTAMP_TYPE_MAPPING.
99
+ const getSnowflakeTimestampDomain = (type) => {
100
+ switch (type.toUpperCase().replace(/\s*\(.*\)$/, '')) {
101
+ case SnowflakeTypes.TIMESTAMP_NTZ:
102
+ return 'naive';
103
+ case SnowflakeTypes.TIMESTAMP_TZ:
104
+ case SnowflakeTypes.TIMESTAMP_LTZ:
105
+ return 'aware';
106
+ default:
107
+ return undefined;
108
+ }
109
+ };
110
+ exports.getSnowflakeTimestampDomain = getSnowflakeTimestampDomain;
95
111
  const EXTERNAL_BROWSER_AUTHENTICATOR = 'EXTERNALBROWSER';
96
112
  const OAUTH_AUTHORIZATION_CODE_AUTHENTICATOR = 'OAUTH_AUTHORIZATION_CODE';
97
113
  const SESSION_DISCOVERY_LIMIT = 100;
@@ -1161,7 +1177,9 @@ class SnowflakeWarehouseClient extends WarehouseBaseClient_1.default {
1161
1177
  acc[match.database][match.schema][match.table] =
1162
1178
  acc[match.database][match.schema][match.table] ||
1163
1179
  {};
1164
- acc[match.database][match.schema][match.table][row.column_name] = (0, exports.mapFieldType)(JSON.parse(row.data_type).type);
1180
+ const rawType = JSON.parse(row.data_type).type;
1181
+ acc[match.database][match.schema][match.table][row.column_name] = (0, exports.mapFieldType)(rawType);
1182
+ (0, common_1.setCatalogTimestampDomain)(acc, match.database, match.schema, match.table, row.column_name, (0, exports.getSnowflakeTimestampDomain)(rawType));
1165
1183
  }
1166
1184
  });
1167
1185
  }
@@ -1221,7 +1239,7 @@ class SnowflakeWarehouseClient extends WarehouseBaseClient_1.default {
1221
1239
  values,
1222
1240
  });
1223
1241
  const { rows } = await this.runQuery(query, tags, undefined, values);
1224
- return this.parseWarehouseCatalog(rows, exports.mapFieldType);
1242
+ return this.parseWarehouseCatalog(rows, exports.mapFieldType, exports.getSnowflakeTimestampDomain);
1225
1243
  }
1226
1244
  /*
1227
1245
  * This function is used to format the error message for the user.
@@ -23,6 +23,15 @@ export declare const expectedWarehouseSchema: {
23
23
  };
24
24
  };
25
25
  };
26
+ __lightdashTimestampDomains: {
27
+ myDatabase: {
28
+ mySchema: {
29
+ myTable: {
30
+ MYTIMESTAMPCOLUMN: string;
31
+ };
32
+ };
33
+ };
34
+ };
26
35
  };
27
36
  export declare const expectedFields: Record<string, AnyType>;
28
37
  export declare const expectedRow: Record<string, AnyType>;
@@ -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;gBAElB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAKtC,OAAO;IAIP,OAAO;CAGV;AAED,eAAO,MAAM,gBAAgB,cAQ5B,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;CAcnC,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"}
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;gBAElB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAKtC,OAAO;IAIP,OAAO;CAGV;AAED,eAAO,MAAM,gBAAgB,cAQ5B,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;CAoBnC,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"}
@@ -153,6 +153,12 @@ exports.expectedWarehouseSchema = {
153
153
  },
154
154
  },
155
155
  },
156
+ // TIMESTAMP_NTZ in the catalog carries the naive domain
157
+ __lightdashTimestampDomains: {
158
+ myDatabase: {
159
+ mySchema: { myTable: { MYTIMESTAMPCOLUMN: 'naive' } },
160
+ },
161
+ },
156
162
  };
157
163
  exports.expectedFields = {
158
164
  MYSTRINGCOLUMN: { type: common_1.DimensionType.STRING },
@@ -1,4 +1,4 @@
1
- import { CreateTrinoCredentials, Metric, SupportedDbtAdapter, TimeIntervalUnit, WarehouseResults, WarehouseTypes } from '@lightdash/common';
1
+ import { CreateTrinoCredentials, Metric, SupportedDbtAdapter, TimeIntervalUnit, WarehouseResults, WarehouseTypes, type TimestampDomain } from '@lightdash/common';
2
2
  import { ConnectionOptions } from 'trino-client';
3
3
  import { WarehouseCatalog } from '../types';
4
4
  import WarehouseBaseClient from './WarehouseBaseClient';
@@ -34,6 +34,7 @@ interface TableInfo {
34
34
  schema: string;
35
35
  table: string;
36
36
  }
37
+ export declare const getTrinoTimestampDomain: (type: TrinoTypes | string) => TimestampDomain | undefined;
37
38
  export declare class TrinoSqlBuilder extends WarehouseBaseSqlBuilder {
38
39
  readonly type = WarehouseTypes.TRINO;
39
40
  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,EAGN,mBAAmB,EACnB,gBAAgB,EAGhB,gBAAgB,EAChB,cAAc,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEH,iBAAiB,EAKpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAM5C,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAShE,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;AA2GD,qBAAa,eAAgB,SAAQ,uBAAuB;IACxD,QAAQ,CAAC,IAAI,wBAAwB;IAErC,cAAc,IAAI,mBAAmB;IAKrC,0BAA0B,IAAI,OAAO;IAIrC,wBAAwB,IAAI,MAAM;IAIlC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAajD,eAAe,IAAI,MAAM;IAIzB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAmBnC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,MAAM;IAM7D,uBAAuB,CACnB,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,GACxB,MAAM;IAKT,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CAIzC;AAED,qBAAa,oBAAqB,SAAQ,mBAAmB,CAAC,sBAAsB,CAAC;IACjF,iBAAiB,EAAE,iBAAiB,CAAC;gBAEzB,WAAW,EAAE,sBAAsB;YAWjC,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;IAoGV,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA4BlE,OAAO,CAAC,aAAa;IAQf,SAAS,CACX,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAetB,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;IAyBtB,YAAY;;;;;CAqBrB"}
1
+ {"version":3,"file":"TrinoWarehouseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/TrinoWarehouseClient.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.TrinoWarehouseClient = exports.TrinoSqlBuilder = exports.TrinoTypes = void 0;
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
9
  const processPromisesInBatches_1 = require("../utils/processPromisesInBatches");
@@ -59,8 +59,19 @@ const queryTableSchema = ({ database, schema, table, }) => `SELECT table_catalog
59
59
  AND table_schema = '${schema}'
60
60
  AND table_name = '${table}'
61
61
  ORDER BY 1, 2, 3, ordinal_position`;
62
+ const getTrinoTimestampDomain = (type) => {
63
+ switch (type.replace(/\(\d+\)/, '')) {
64
+ case TrinoTypes.TIMESTAMP:
65
+ return 'naive';
66
+ case TrinoTypes.TIMESTAMP_TZ:
67
+ return 'aware';
68
+ default:
69
+ return undefined;
70
+ }
71
+ };
72
+ exports.getTrinoTimestampDomain = getTrinoTimestampDomain;
62
73
  const convertDataTypeToDimensionType = (type) => {
63
- const typeWithoutTimePrecision = type.replace(/\(\d\)/, '');
74
+ const typeWithoutTimePrecision = type.replace(/\(\d+\)/, '');
64
75
  switch (typeWithoutTimePrecision) {
65
76
  case TrinoTypes.BOOLEAN:
66
77
  return common_1.DimensionType.BOOLEAN;
@@ -100,6 +111,7 @@ const catalogToSchema = (results) => {
100
111
  warehouseCatalog[table_catalog][table_schema][table_name] ||
101
112
  {};
102
113
  warehouseCatalog[table_catalog][table_schema][table_name][column_name] = convertDataTypeToDimensionType(data_type);
114
+ (0, common_1.setCatalogTimestampDomain)(warehouseCatalog, table_catalog, table_schema, table_name, column_name, (0, exports.getTrinoTimestampDomain)(data_type));
103
115
  });
104
116
  });
105
117
  return warehouseCatalog;
@@ -320,7 +332,7 @@ class TrinoWarehouseClient extends WarehouseBaseClient_1.default {
320
332
  ORDER BY 1,2,3
321
333
  `;
322
334
  const { rows } = await this.runQuery(query, tags);
323
- return this.parseWarehouseCatalog(rows, convertDataTypeToDimensionType);
335
+ return this.parseWarehouseCatalog(rows, convertDataTypeToDimensionType, exports.getTrinoTimestampDomain);
324
336
  }
325
337
  async getFields(tableName, schema, database, tags) {
326
338
  const query = `
@@ -339,7 +351,7 @@ class TrinoWarehouseClient extends WarehouseBaseClient_1.default {
339
351
  : ''}
340
352
  `;
341
353
  const { rows } = await this.runQuery(query, tags);
342
- return this.parseWarehouseCatalog(rows, convertDataTypeToDimensionType);
354
+ return this.parseWarehouseCatalog(rows, convertDataTypeToDimensionType, exports.getTrinoTimestampDomain);
343
355
  }
344
356
  async getAllTables() {
345
357
  const databaseName = this.connectionOptions.catalog;
@@ -92,7 +92,7 @@ describe('TrinoWarehouseClient', () => {
92
92
  .fn()
93
93
  .mockResolvedValue({ done: true, value: TrinoWarehouseClient_mock_1.querySchemaResponse }),
94
94
  });
95
- await expect(warehouse.getCatalog(warehouseClient.config)).resolves.toEqual(warehouseClient.expectedWarehouseSchema);
95
+ await expect(warehouse.getCatalog(warehouseClient.config)).resolves.toEqual(warehouseClient.expectedWarehouseSchemaWithNaiveTimestamp);
96
96
  });
97
97
  describe('streamQuery client tag headers', () => {
98
98
  it('sends X-Trino-Client-Tags header as comma-separated key=value pairs when tags are provided', async () => {
@@ -1,4 +1,4 @@
1
- import { AnyType, CreateWarehouseCredentials, DimensionType, Metric, PartitionColumn, SupportedDbtAdapter, TimeIntervalUnit, WarehouseCatalog, WarehouseResults, WarehouseSqlBuilder, WeekDay, type WarehouseExecuteAsyncQuery, type WarehouseExecuteAsyncQueryArgs, type WarehouseQueryPhase } from '@lightdash/common';
1
+ import { AnyType, CreateWarehouseCredentials, DimensionType, Metric, PartitionColumn, SupportedDbtAdapter, TimeIntervalUnit, WarehouseCatalog, WarehouseResults, WarehouseSqlBuilder, WeekDay, type TimestampDomain, type WarehouseExecuteAsyncQuery, type WarehouseExecuteAsyncQueryArgs, type WarehouseQueryPhase } from '@lightdash/common';
2
2
  import { type WarehouseClient } from '../types';
3
3
  export default abstract class WarehouseBaseClient<T extends CreateWarehouseCredentials> implements WarehouseClient {
4
4
  credentials: T;
@@ -44,7 +44,7 @@ export default abstract class WarehouseBaseClient<T extends CreateWarehouseCrede
44
44
  partitionColumn?: PartitionColumn;
45
45
  }[]>;
46
46
  abstract getFields(tableName: string, schema?: string, database?: string, tags?: Record<string, string>): Promise<WarehouseCatalog>;
47
- parseWarehouseCatalog(rows: Record<string, AnyType>[], mapFieldType: (type: string) => DimensionType): WarehouseCatalog;
47
+ parseWarehouseCatalog(rows: Record<string, AnyType>[], mapFieldType: (type: string) => DimensionType, mapTimestampDomain?: (type: string) => TimestampDomain | undefined): WarehouseCatalog;
48
48
  parseError(error: Error): Error;
49
49
  escapeString(value: string): string;
50
50
  castToTimestamp(date: Date): string;
@@ -1 +1 @@
1
- {"version":3,"file":"WarehouseBaseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/WarehouseBaseClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WarehouseBaseClient.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/WarehouseBaseClient.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const common_1 = require("@lightdash/common");
3
4
  class WarehouseBaseClient {
4
5
  constructor(credentials, sqlBuilder) {
5
6
  this.credentials = credentials;
@@ -87,16 +88,18 @@ class WarehouseBaseClient {
87
88
  concatString(...args) {
88
89
  return this.sqlBuilder.concatString(...args);
89
90
  }
90
- parseWarehouseCatalog(rows, mapFieldType) {
91
+ parseWarehouseCatalog(rows, mapFieldType, mapTimestampDomain) {
91
92
  return rows.reduce((acc, { table_catalog, table_schema, table_name, column_name, data_type, }) => {
92
93
  acc[table_catalog] = acc[table_catalog] || {};
93
94
  acc[table_catalog][table_schema] =
94
95
  acc[table_catalog][table_schema] || {};
95
96
  acc[table_catalog][table_schema][table_name] =
96
97
  acc[table_catalog][table_schema][table_name] || {};
97
- if (column_name && data_type)
98
+ if (column_name && data_type) {
98
99
  acc[table_catalog][table_schema][table_name][column_name] =
99
100
  mapFieldType(data_type);
101
+ (0, common_1.setCatalogTimestampDomain)(acc, table_catalog, table_schema, table_name, column_name, mapTimestampDomain?.(data_type));
102
+ }
100
103
  return acc;
101
104
  }, {});
102
105
  }
@@ -6,6 +6,8 @@ export declare const config: {
6
6
  table: string;
7
7
  }[];
8
8
  export declare const expectedWarehouseSchema: WarehouseCatalog;
9
+ export declare const expectedWarehouseSchemaWithNaiveTimestamp: WarehouseCatalog;
10
+ export declare const expectedWarehouseSchemaWithAwareTimestamp: WarehouseCatalog;
9
11
  export declare const expectedFields: Record<string, AnyType>;
10
12
  export declare const expectedRow: Record<string, AnyType>;
11
13
  //# sourceMappingURL=WarehouseClient.mock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WarehouseClient.mock.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/WarehouseClient.mock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,eAAO,MAAM,MAAM,EAAE;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB,EAMA,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,gBAcrC,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"}
1
+ {"version":3,"file":"WarehouseClient.mock.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/WarehouseClient.mock.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,OAAO,EAIV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,eAAO,MAAM,MAAM,EAAE;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB,EAMA,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,gBAcrC,CAAC;AAiBF,eAAO,MAAM,yCAAyC,kBAChB,CAAC;AAEvC,eAAO,MAAM,yCAAyC,kBAChB,CAAC;AAEvC,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAQlD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAQ/C,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.expectedRow = exports.expectedFields = exports.expectedWarehouseSchema = exports.config = void 0;
3
+ exports.expectedRow = exports.expectedFields = exports.expectedWarehouseSchemaWithAwareTimestamp = exports.expectedWarehouseSchemaWithNaiveTimestamp = exports.expectedWarehouseSchema = exports.config = void 0;
4
4
  const common_1 = require("@lightdash/common");
5
5
  exports.config = [
6
6
  {
@@ -24,6 +24,13 @@ exports.expectedWarehouseSchema = {
24
24
  },
25
25
  },
26
26
  };
27
+ const schemaWithTimestampDomain = (timestampDomain) => {
28
+ const catalog = structuredClone(exports.expectedWarehouseSchema);
29
+ (0, common_1.setCatalogTimestampDomain)(catalog, 'myDatabase', 'mySchema', 'myTable', 'myTimestampColumn', timestampDomain);
30
+ return catalog;
31
+ };
32
+ exports.expectedWarehouseSchemaWithNaiveTimestamp = schemaWithTimestampDomain('naive');
33
+ exports.expectedWarehouseSchemaWithAwareTimestamp = schemaWithTimestampDomain('aware');
27
34
  exports.expectedFields = {
28
35
  myStringColumn: { type: common_1.DimensionType.STRING },
29
36
  myNumberColumn: { type: common_1.DimensionType.NUMBER },
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=timestampDomain.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timestampDomain.test.d.ts","sourceRoot":"","sources":["../../src/warehouseClients/timestampDomain.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const AthenaWarehouseClient_1 = require("./AthenaWarehouseClient");
4
+ const BigqueryWarehouseClient_1 = require("./BigqueryWarehouseClient");
5
+ const ClickhouseWarehouseClient_1 = require("./ClickhouseWarehouseClient");
6
+ const DatabricksWarehouseClient_1 = require("./DatabricksWarehouseClient");
7
+ const DuckdbWarehouseClient_1 = require("./DuckdbWarehouseClient");
8
+ const PostgresWarehouseClient_1 = require("./PostgresWarehouseClient");
9
+ const SnowflakeWarehouseClient_1 = require("./SnowflakeWarehouseClient");
10
+ const TrinoWarehouseClient_1 = require("./TrinoWarehouseClient");
11
+ describe('postgres timestamp domain', () => {
12
+ it('classifies naive types', () => {
13
+ expect((0, PostgresWarehouseClient_1.getPostgresTimestampDomain)('timestamp')).toEqual('naive');
14
+ expect((0, PostgresWarehouseClient_1.getPostgresTimestampDomain)('timestamp without time zone')).toEqual('naive');
15
+ });
16
+ it('classifies aware types', () => {
17
+ expect((0, PostgresWarehouseClient_1.getPostgresTimestampDomain)('timestamptz')).toEqual('aware');
18
+ expect((0, PostgresWarehouseClient_1.getPostgresTimestampDomain)('timestamp with time zone')).toEqual('aware');
19
+ });
20
+ it('leaves non-timestamp types unclassified', () => {
21
+ expect((0, PostgresWarehouseClient_1.getPostgresTimestampDomain)('integer')).toBeUndefined();
22
+ expect((0, PostgresWarehouseClient_1.getPostgresTimestampDomain)('date')).toBeUndefined();
23
+ expect((0, PostgresWarehouseClient_1.getPostgresTimestampDomain)('time')).toBeUndefined();
24
+ });
25
+ });
26
+ describe('bigquery timestamp domain', () => {
27
+ it('classifies DATETIME as naive and TIMESTAMP as aware', () => {
28
+ expect((0, BigqueryWarehouseClient_1.getBigqueryTimestampDomain)('DATETIME')).toEqual('naive');
29
+ expect((0, BigqueryWarehouseClient_1.getBigqueryTimestampDomain)('TIMESTAMP')).toEqual('aware');
30
+ });
31
+ it('leaves TIME and non-timestamp types unclassified', () => {
32
+ expect((0, BigqueryWarehouseClient_1.getBigqueryTimestampDomain)('TIME')).toBeUndefined();
33
+ expect((0, BigqueryWarehouseClient_1.getBigqueryTimestampDomain)('STRING')).toBeUndefined();
34
+ });
35
+ });
36
+ describe('snowflake timestamp domain', () => {
37
+ it('classifies NTZ as naive, including parameterised types', () => {
38
+ expect((0, SnowflakeWarehouseClient_1.getSnowflakeTimestampDomain)('TIMESTAMP_NTZ')).toEqual('naive');
39
+ expect((0, SnowflakeWarehouseClient_1.getSnowflakeTimestampDomain)('TIMESTAMP_NTZ(9)')).toEqual('naive');
40
+ });
41
+ it('classifies TZ and LTZ as aware', () => {
42
+ expect((0, SnowflakeWarehouseClient_1.getSnowflakeTimestampDomain)('TIMESTAMP_TZ')).toEqual('aware');
43
+ expect((0, SnowflakeWarehouseClient_1.getSnowflakeTimestampDomain)('TIMESTAMP_LTZ(9)')).toEqual('aware');
44
+ });
45
+ it('leaves bare TIMESTAMP unclassified (account-level alias)', () => {
46
+ expect((0, SnowflakeWarehouseClient_1.getSnowflakeTimestampDomain)('TIMESTAMP')).toBeUndefined();
47
+ });
48
+ });
49
+ describe('databricks timestamp domain', () => {
50
+ it('classifies TIMESTAMP_NTZ as naive despite type normalization truncating it', () => {
51
+ expect((0, DatabricksWarehouseClient_1.getDatabricksTimestampDomain)('TIMESTAMP_NTZ')).toEqual('naive');
52
+ });
53
+ it('classifies bare TIMESTAMP as aware (stores an instant)', () => {
54
+ expect((0, DatabricksWarehouseClient_1.getDatabricksTimestampDomain)('TIMESTAMP')).toEqual('aware');
55
+ });
56
+ it('leaves non-timestamp types unclassified', () => {
57
+ expect((0, DatabricksWarehouseClient_1.getDatabricksTimestampDomain)('DECIMAL(10,2)')).toBeUndefined();
58
+ });
59
+ });
60
+ describe('trino timestamp domain', () => {
61
+ it('classifies bare timestamp as naive, stripping any precision', () => {
62
+ expect((0, TrinoWarehouseClient_1.getTrinoTimestampDomain)('timestamp')).toEqual('naive');
63
+ expect((0, TrinoWarehouseClient_1.getTrinoTimestampDomain)('timestamp(3)')).toEqual('naive');
64
+ expect((0, TrinoWarehouseClient_1.getTrinoTimestampDomain)('timestamp(6)')).toEqual('naive');
65
+ });
66
+ it('classifies timestamp with time zone as aware', () => {
67
+ expect((0, TrinoWarehouseClient_1.getTrinoTimestampDomain)('timestamp with time zone')).toEqual('aware');
68
+ expect((0, TrinoWarehouseClient_1.getTrinoTimestampDomain)('timestamp(3) with time zone')).toEqual('aware');
69
+ });
70
+ it('leaves non-timestamp types unclassified', () => {
71
+ expect((0, TrinoWarehouseClient_1.getTrinoTimestampDomain)('varchar')).toBeUndefined();
72
+ });
73
+ });
74
+ describe('clickhouse timestamp domain', () => {
75
+ it('classifies DateTime types as always aware', () => {
76
+ expect((0, ClickhouseWarehouseClient_1.getClickhouseTimestampDomain)('DateTime')).toEqual('aware');
77
+ expect((0, ClickhouseWarehouseClient_1.getClickhouseTimestampDomain)("DateTime64(3, 'UTC')")).toEqual('aware');
78
+ expect((0, ClickhouseWarehouseClient_1.getClickhouseTimestampDomain)('Nullable(DateTime)')).toEqual('aware');
79
+ });
80
+ it('leaves non-timestamp types unclassified', () => {
81
+ expect((0, ClickhouseWarehouseClient_1.getClickhouseTimestampDomain)('Date')).toBeUndefined();
82
+ });
83
+ });
84
+ describe('athena timestamp domain', () => {
85
+ it('classifies bare timestamp as naive and with time zone as aware', () => {
86
+ expect((0, AthenaWarehouseClient_1.getAthenaTimestampDomain)('timestamp')).toEqual('naive');
87
+ expect((0, AthenaWarehouseClient_1.getAthenaTimestampDomain)('timestamp(3)')).toEqual('naive');
88
+ expect((0, AthenaWarehouseClient_1.getAthenaTimestampDomain)('timestamp with time zone')).toEqual('aware');
89
+ });
90
+ it('leaves non-timestamp types unclassified', () => {
91
+ expect((0, AthenaWarehouseClient_1.getAthenaTimestampDomain)('varchar')).toBeUndefined();
92
+ });
93
+ });
94
+ describe('duckdb timestamp domain', () => {
95
+ it('classifies type name strings', () => {
96
+ expect((0, DuckdbWarehouseClient_1.getDuckdbTimestampDomainFromString)('TIMESTAMP')).toEqual('naive');
97
+ expect((0, DuckdbWarehouseClient_1.getDuckdbTimestampDomainFromString)('TIMESTAMP WITH TIME ZONE')).toEqual('aware');
98
+ expect((0, DuckdbWarehouseClient_1.getDuckdbTimestampDomainFromString)('TIMESTAMPTZ')).toEqual('aware');
99
+ expect((0, DuckdbWarehouseClient_1.getDuckdbTimestampDomainFromString)('BOOLEAN')).toBeUndefined();
100
+ });
101
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lightdash/warehouses",
3
- "version": "0.3439.0",
3
+ "version": "0.3440.0",
4
4
  "description": "Warehouse connectors for Lightdash",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -30,7 +30,7 @@
30
30
  "snowflake-sdk": "2.3.4",
31
31
  "ssh2": "1.14.0",
32
32
  "trino-client": "0.2.9",
33
- "@lightdash/common": "0.3439.0"
33
+ "@lightdash/common": "0.3440.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/big.js": "6.2.2",