@cubejs-backend/pinot-driver 1.7.0 → 1.7.2

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.
@@ -1,10 +1,6 @@
1
- /**
2
- * @copyright Cube Dev, Inc.
3
- * @license Apache-2.0
4
- * @fileoverview The `PinotDriver` and related types declaration.
5
- */
6
1
  /// <reference types="node" />
7
- import { DriverInterface, StreamTableData, BaseDriver } from '@cubejs-backend/base-driver';
2
+ import { DriverInterface, StreamTableData, DownloadQueryResultsOptions, DownloadQueryResultsResult, BaseDriver } from '@cubejs-backend/base-driver';
3
+ import { Required } from '@cubejs-backend/shared';
8
4
  import type { ConnectionOptions as TLSConnectionOptions } from 'tls';
9
5
  import { PinotQuery } from './PinotQuery';
10
6
  export type PinotDriverConfiguration = {
@@ -27,26 +23,49 @@ type AuthorizationHeaders = {
27
23
  Authorization: string;
28
24
  database?: string;
29
25
  };
30
- /**
31
- * Presto driver class.
32
- */
26
+ type PinotResponse = {
27
+ exceptions: any[];
28
+ minConsumingFreshnessTimeMs: number;
29
+ numConsumingSegmentsQueried: number;
30
+ numDocsScanned: number;
31
+ numEntriesScannedInFilter: number;
32
+ numEntriesScannedPostFilter: number;
33
+ numGroupsLimitReached: boolean;
34
+ numSegmentsMatched: number;
35
+ numSegmentsProcessed: number;
36
+ numSegmentsQueried: number;
37
+ numServersQueried: number;
38
+ numServersResponded: number;
39
+ resultTable: {
40
+ dataSchema: {
41
+ columnDataTypes: string[];
42
+ columnNames: string[];
43
+ };
44
+ rows: any[][];
45
+ };
46
+ segmentStatistics: any[];
47
+ timeUsedMs: number;
48
+ totalDocs: number;
49
+ traceInfo: any;
50
+ };
33
51
  export declare class PinotDriver extends BaseDriver implements DriverInterface {
34
- /**
35
- * Returns default concurrency value.
36
- */
37
52
  static getDefaultConcurrency(): number;
38
- private config;
39
- private url;
53
+ protected readonly config: Required<PinotDriverConfiguration, 'queryTimeout'>;
54
+ protected readonly url: string;
40
55
  static dialectClass(): typeof PinotQuery;
41
56
  /**
42
57
  * Class constructor.
43
58
  */
44
59
  constructor(config?: PinotDriverConfiguration);
60
+ readOnly(): boolean;
45
61
  testConnection(): Promise<void>;
46
62
  query(query: string, values: unknown[]): Promise<any[]>;
47
63
  prepareQueryWithParams(query: string, values: unknown[]): string;
48
64
  authorizationHeaders(): AuthorizationHeaders | {};
65
+ protected request(query: string): Promise<PinotResponse>;
49
66
  queryPromised(query: string): Promise<any[] | StreamTableData>;
67
+ downloadQueryResults(query: string, values: unknown[], _options: DownloadQueryResultsOptions): Promise<DownloadQueryResultsResult>;
68
+ protected toGenericType(columnType: string): string;
50
69
  protected quoteIdentifier(identifier: string): string;
51
70
  normalizeResultOverColumns(data: any[], columns: string[]): {
52
71
  [x: string]: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"PinotDriver.d.ts","sourceRoot":"","sources":["../../src/PinotDriver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EACL,eAAe,EACf,eAAe,EACf,UAAU,EACX,MAAM,6BAA6B,CAAC;AAMrC,OAAO,KAAK,EAAE,iBAAiB,IAAI,oBAAoB,EAAE,MAAM,KAAK,CAAC;AAOrE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AA4BF;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAW,YAAW,eAAe;IACpE;;OAEG;WACW,qBAAqB;IAInC,OAAO,CAAC,MAAM,CAA2B;IAEzC,OAAO,CAAC,GAAG,CAAS;WAEN,YAAY;IAI1B;;OAEG;gBACgB,MAAM,GAAE,wBAA6B;IA6BjD,cAAc;IAWd,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAIvD,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAMvD,oBAAoB,IAAI,oBAAoB,GAAG,EAAE;IAoBjD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC;cAqClD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAIvD,0BAA0B,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;;;CAIjE"}
1
+ {"version":3,"file":"PinotDriver.d.ts","sourceRoot":"","sources":["../../src/PinotDriver.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,4 @@
1
1
  "use strict";
2
- /**
3
- * @copyright Cube Dev, Inc.
4
- * @license Apache-2.0
5
- * @fileoverview The `PinotDriver` and related types declaration.
6
- */
7
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
3
  if (k2 === undefined) k2 = k;
9
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -38,13 +33,19 @@ const ramda_1 = require("ramda");
38
33
  const sqlstring_1 = __importDefault(require("sqlstring"));
39
34
  const node_fetch_1 = __importStar(require("node-fetch"));
40
35
  const PinotQuery_1 = require("./PinotQuery");
41
- /**
42
- * Presto driver class.
43
- */
36
+ const PinotTypeToGenericType = {
37
+ string: 'text',
38
+ int: 'int',
39
+ long: 'bigint',
40
+ float: 'double',
41
+ double: 'double',
42
+ big_decimal: 'decimal',
43
+ boolean: 'boolean',
44
+ timestamp: 'timestamp',
45
+ json: 'text',
46
+ bytes: 'text',
47
+ };
44
48
  class PinotDriver extends base_driver_1.BaseDriver {
45
- /**
46
- * Returns default concurrency value.
47
- */
48
49
  static getDefaultConcurrency() {
49
50
  return 10;
50
51
  }
@@ -78,7 +79,15 @@ class PinotDriver extends base_driver_1.BaseDriver {
78
79
  queryTimeout: (0, shared_1.getEnv)('dbQueryTimeout', { dataSource, preAggregations }),
79
80
  ...config
80
81
  };
81
- this.url = `${this.config.host}:${this.config.port}/query/sql`;
82
+ const useSsl = (0, shared_1.getEnv)('dbSsl', { dataSource, preAggregations });
83
+ const rawHost = this.config.host || '';
84
+ const host = /^https?:\/\//i.test(rawHost)
85
+ ? rawHost
86
+ : `${useSsl ? 'https' : 'http'}://${rawHost}`;
87
+ this.url = `${host}:${this.config.port}/query/sql`;
88
+ }
89
+ readOnly() {
90
+ return true;
82
91
  }
83
92
  testConnection() {
84
93
  const query = sqlstring_1.default.format('select 1');
@@ -111,7 +120,7 @@ class PinotDriver extends base_driver_1.BaseDriver {
111
120
  const encodedCredentials = Buffer.from(`${this.config.basicAuth.user}:${this.config.basicAuth.password}`).toString('base64');
112
121
  return { Authorization: `Basic ${encodedCredentials}` };
113
122
  }
114
- queryPromised(query) {
123
+ async request(query) {
115
124
  const toError = (error) => new Error(error.error ? `${error.message}\n${error.error}` : error.message);
116
125
  const request = new node_fetch_1.Request(this.url, {
117
126
  method: 'POST',
@@ -121,26 +130,42 @@ class PinotDriver extends base_driver_1.BaseDriver {
121
130
  }),
122
131
  body: JSON.stringify({
123
132
  sql: query,
124
- queryOptions: `useMultistageEngine=true;enableNullHandling=${this.config.nullHandling};timeoutMs=${this.config.queryTimeout}`
125
- })
126
- });
127
- return new Promise((resolve, reject) => {
128
- (0, node_fetch_1.default)(request)
129
- .then(async (response) => {
130
- if (!response.ok) {
131
- if (response.status === 401) {
132
- return reject(toError({ message: 'Unauthorized request' }));
133
- }
134
- return reject(toError({ message: 'Unexpected error' }));
135
- }
136
- const pinotResponse = await response.json();
137
- if (pinotResponse?.exceptions?.length) {
138
- return reject(toError(pinotResponse.exceptions[0]));
139
- }
140
- return resolve(this.normalizeResultOverColumns(pinotResponse.resultTable.rows, pinotResponse.resultTable.dataSchema.columnNames));
133
+ queryOptions: `useMultistageEngine=true;enableNullHandling=${this.config.nullHandling};timeoutMs=${this.config.queryTimeout * 1000}`
141
134
  })
142
- .catch((error) => reject(toError(error)));
143
135
  });
136
+ let response;
137
+ try {
138
+ response = await (0, node_fetch_1.default)(request);
139
+ }
140
+ catch (error) {
141
+ throw toError(error);
142
+ }
143
+ if (!response.ok) {
144
+ throw toError({ message: response.status === 401 ? 'Unauthorized request' : 'Unexpected error' });
145
+ }
146
+ const result = await response.json();
147
+ if (result?.exceptions?.length) {
148
+ throw toError(result.exceptions[0]);
149
+ }
150
+ return result;
151
+ }
152
+ async queryPromised(query) {
153
+ const { resultTable } = await this.request(query);
154
+ return this.normalizeResultOverColumns(resultTable.rows, resultTable.dataSchema.columnNames);
155
+ }
156
+ async downloadQueryResults(query, values, _options) {
157
+ const { resultTable } = await this.request(this.prepareQueryWithParams(query, values));
158
+ const { rows, dataSchema } = resultTable;
159
+ return {
160
+ rows: this.normalizeResultOverColumns(rows, dataSchema.columnNames),
161
+ types: dataSchema.columnNames.map((name, index) => ({
162
+ name,
163
+ type: this.toGenericType(dataSchema.columnDataTypes[index]),
164
+ })),
165
+ };
166
+ }
167
+ toGenericType(columnType) {
168
+ return PinotTypeToGenericType[columnType.toLowerCase()] || super.toGenericType(columnType);
144
169
  }
145
170
  quoteIdentifier(identifier) {
146
171
  return identifier;
@@ -1 +1 @@
1
- {"version":3,"file":"PinotDriver.js","sourceRoot":"","sources":["../../src/PinotDriver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PinotDriver.js","sourceRoot":"","sources":["../../src/PinotDriver.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,19 @@ export declare class PinotQuery extends BaseQuery {
23
23
  timeGroupedColumn(granularity: GRANULARITY_ID, dimension: string): string;
24
24
  subtractInterval(date: string, interval: string): string;
25
25
  addInterval(date: string, interval: string): string;
26
+ /**
27
+ * Renders Pinot-valid interval arithmetic on top of a timestamp expression.
28
+ * The interval string (e.g. "7 day", "1 year", "1 year 2 month") is parsed into
29
+ * its unit parts; fixed-length units are applied as epoch-millis offsets via
30
+ * fromEpoch<Unit>(), calendar units via TIMESTAMPADD(). `sign` is +1 for addition
31
+ * and -1 for subtraction.
32
+ */
33
+ private applyInterval;
34
+ /**
35
+ * Floors `source` to the timestamp aligned with `interval`-sized bins relative
36
+ * to `origin`, used for custom (non-natural-aligned) granularities.
37
+ */
38
+ dateBin(interval: string, source: string, origin: string): string;
26
39
  seriesSql(timeDimension: BaseTimeDimension): string;
27
40
  applyMeasureFilters(evaluateSql: '*' | string, symbol: any, cubeName: string): string;
28
41
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"PinotQuery.d.ts","sourceRoot":"","sources":["../../src/PinotQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAE3F,aAAK,uBAAuB;IAC1B,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,IAAI,SAAS;CACd;AAED,KAAK,cAAc,GAAG,MAAM,OAAO,uBAAuB,CAAC;AAoB3D,cAAM,WAAY,SAAQ,UAAU;IAC3B,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM;IAM9D,aAAa;CAUrB;AAED,qBAAa,UAAW,SAAQ,SAAS;IAChC,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG,WAAW;IAInC,cAAc;IAId,aAAa,CAAC,KAAK,EAAE,MAAM;IAI3B,YAAY,CAAC,KAAK,EAAE,MAAM;IAI1B,SAAS,CAAC,KAAK,EAAE,MAAM;IAIvB,iBAAiB,CAAC,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM;IAIhE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAK/C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAK1C,SAAS,CAAC,aAAa,EAAE,iBAAiB;IAQ1C,mBAAmB,CAAC,WAAW,EAAE,GAAG,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM;IAUnF;;OAEG;IACI,eAAe;IAIf,gBAAgB;IAIhB,iCAAiC;IAIjC,sBAAsB;;;IAMtB,mBAAmB,CAAC,GAAG,EAAE,MAAM;IAItC,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAMpE,gBAAgB,CAAC,aAAa,EAAE,GAAG,GAAG,iBAAiB;IAIvD,YAAY;CAoBpB"}
1
+ {"version":3,"file":"PinotQuery.d.ts","sourceRoot":"","sources":["../../src/PinotQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAG3F,aAAK,uBAAuB;IAC1B,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,IAAI,SAAS;CACd;AAED,KAAK,cAAc,GAAG,MAAM,OAAO,uBAAuB,CAAC;AAgC3D,cAAM,WAAY,SAAQ,UAAU;IAC3B,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM;IAM9D,aAAa;CAUrB;AAED,qBAAa,UAAW,SAAQ,SAAS;IAChC,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG,WAAW;IAInC,cAAc;IAId,aAAa,CAAC,KAAK,EAAE,MAAM;IAI3B,YAAY,CAAC,KAAK,EAAE,MAAM;IAI1B,SAAS,CAAC,KAAK,EAAE,MAAM;IAIvB,iBAAiB,CAAC,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM;IAIhE,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAI/C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAIjD;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAmCrB;;;OAGG;IACI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAajE,SAAS,CAAC,aAAa,EAAE,iBAAiB;IAQ1C,mBAAmB,CAAC,WAAW,EAAE,GAAG,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM;IAUnF;;OAEG;IACI,eAAe;IAIf,gBAAgB;IAIhB,iCAAiC;IAIjC,sBAAsB;;;IAMtB,mBAAmB,CAAC,GAAG,EAAE,MAAM;IAItC,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAOpE,gBAAgB,CAAC,aAAa,EAAE,GAAG,GAAG,iBAAiB;IAIvD,YAAY;CA+CpB"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PinotQuery = void 0;
4
4
  const schema_compiler_1 = require("@cubejs-backend/schema-compiler");
5
+ const shared_1 = require("@cubejs-backend/shared");
5
6
  var GRANULARITY_TO_INTERVAL;
6
7
  (function (GRANULARITY_TO_INTERVAL) {
7
8
  GRANULARITY_TO_INTERVAL["day"] = "day";
@@ -14,6 +15,17 @@ var GRANULARITY_TO_INTERVAL;
14
15
  GRANULARITY_TO_INTERVAL["year"] = "year";
15
16
  })(GRANULARITY_TO_INTERVAL || (GRANULARITY_TO_INTERVAL = {}));
16
17
  const DATE_TIME_FORMAT = '\'yyyy-MM-dd HH:mm:ss.SSS\'';
18
+ // Pinot has no `date + INTERVAL '...'` syntax. Fixed-length units are added to a
19
+ // timestamp as epoch-millis offsets produced by these `fromEpoch<Unit>()` functions
20
+ // (note: pluralized and case-sensitive). Calendar units (month/quarter/year), whose
21
+ // length varies, must instead go through TIMESTAMPADD().
22
+ const PINOT_EPOCH_FN = {
23
+ second: 'fromEpochSeconds',
24
+ minute: 'fromEpochMinutes',
25
+ hour: 'fromEpochHours',
26
+ day: 'fromEpochDays',
27
+ week: 'fromEpochDays',
28
+ };
17
29
  class PinotTimeDimension extends schema_compiler_1.BaseTimeDimension {
18
30
  formatFromDate(date) {
19
31
  return super.formatFromDate(date).replace('T', ' ');
@@ -64,12 +76,61 @@ class PinotQuery extends schema_compiler_1.BaseQuery {
64
76
  return this.timeStampCast(`dateTrunc('${GRANULARITY_TO_INTERVAL[granularity]}', ${dimension})`);
65
77
  }
66
78
  subtractInterval(date, interval) {
67
- const [intervalValue, intervalUnit] = interval.split(' ');
68
- return `${this.timeStampCast(date)} - fromEpoch${intervalUnit}(${intervalValue})`;
79
+ return this.applyInterval(date, interval, -1);
69
80
  }
70
81
  addInterval(date, interval) {
71
- const [intervalValue, intervalUnit] = interval.split(' ');
72
- return `${this.timeStampCast(date)} + fromEpoch${intervalUnit}(${intervalValue})`;
82
+ return this.applyInterval(date, interval, 1);
83
+ }
84
+ /**
85
+ * Renders Pinot-valid interval arithmetic on top of a timestamp expression.
86
+ * The interval string (e.g. "7 day", "1 year", "1 year 2 month") is parsed into
87
+ * its unit parts; fixed-length units are applied as epoch-millis offsets via
88
+ * fromEpoch<Unit>(), calendar units via TIMESTAMPADD(). `sign` is +1 for addition
89
+ * and -1 for subtraction.
90
+ */
91
+ applyInterval(date, interval, sign) {
92
+ const parsed = (0, shared_1.parseSqlInterval)(interval);
93
+ let expr = this.timeStampCast(date);
94
+ for (const [unit, rawValue] of Object.entries(parsed)) {
95
+ const value = rawValue * sign;
96
+ switch (unit) {
97
+ case 'second':
98
+ case 'minute':
99
+ case 'hour':
100
+ case 'day':
101
+ case 'week': {
102
+ const amount = unit === 'week' ? value * 7 : value;
103
+ const op = amount < 0 ? '-' : '+';
104
+ expr = `${expr} ${op} ${PINOT_EPOCH_FN[unit]}(${Math.abs(amount)})`;
105
+ break;
106
+ }
107
+ case 'month':
108
+ expr = `TIMESTAMPADD(MONTH, ${value}, ${expr})`;
109
+ break;
110
+ case 'quarter':
111
+ expr = `TIMESTAMPADD(MONTH, ${value * 3}, ${expr})`;
112
+ break;
113
+ case 'year':
114
+ expr = `TIMESTAMPADD(YEAR, ${value}, ${expr})`;
115
+ break;
116
+ default:
117
+ throw new Error(`Unsupported interval unit "${unit}" for the Pinot dialect`);
118
+ }
119
+ }
120
+ return expr;
121
+ }
122
+ /**
123
+ * Floors `source` to the timestamp aligned with `interval`-sized bins relative
124
+ * to `origin`, used for custom (non-natural-aligned) granularities.
125
+ */
126
+ dateBin(interval, source, origin) {
127
+ const originAligned = this.timeStampCast(`'${origin.replace('T', ' ')}'`);
128
+ const beginOfTime = this.timeStampCast('\'1970-01-01 00:00:00.000\'');
129
+ const timeUnit = this.diffTimeUnitForInterval(interval).toUpperCase();
130
+ const intervalSize = `TIMESTAMPDIFF(${timeUnit}, ${beginOfTime}, ${this.addInterval(beginOfTime, interval)})`;
131
+ return this.timeStampCast(`TIMESTAMPADD(${timeUnit}, ` +
132
+ `CAST(FLOOR(CAST(TIMESTAMPDIFF(${timeUnit}, ${originAligned}, ${source}) AS DOUBLE) / ${intervalSize}) AS INTEGER) * ${intervalSize}, ` +
133
+ `${originAligned})`);
73
134
  }
74
135
  seriesSql(timeDimension) {
75
136
  const values = timeDimension.timeSeries().map(([from, to]) => `select '${from}' f, '${to}' t`).join(' UNION ALL ');
@@ -106,7 +167,8 @@ class PinotQuery extends schema_compiler_1.BaseQuery {
106
167
  limitOffsetClause(limit, offset) {
107
168
  const limitClause = limit != null ? ` LIMIT ${limit}` : '';
108
169
  const offsetClause = offset != null ? ` OFFSET ${offset}` : '';
109
- return `${offsetClause}${limitClause}`;
170
+ // Pinot expects LIMIT before OFFSET.
171
+ return `${limitClause}${offsetClause}`;
110
172
  }
111
173
  newTimeDimension(timeDimension) {
112
174
  return new PinotTimeDimension(this, timeDimension);
@@ -114,17 +176,44 @@ class PinotQuery extends schema_compiler_1.BaseQuery {
114
176
  sqlTemplates() {
115
177
  const templates = super.sqlTemplates();
116
178
  templates.functions.DATETRUNC = 'DATE_TRUNC({{ args_concat }})';
179
+ // NOW() returns the current epoch millis (inherently UTC), matching the
180
+ // epoch-millis representation produced by the timestamp_literal template
181
+ templates.functions.UTCTIMESTAMP = 'NOW()';
117
182
  templates.functions.STRING_AGG = 'LISTAGG({% if distinct %}DISTINCT {% endif %}{{ args_concat }})';
118
- templates.statements.select = 'SELECT {{ select_concat | map(attribute=\'aliased\') | join(\', \') }} \n' +
119
- 'FROM (\n {{ from }}\n) AS {{ from_alias }} \n' +
120
- '{% if group_by %} GROUP BY {{ group_by }}{% endif %}' +
121
- '{% if order_by %} ORDER BY {{ order_by | map(attribute=\'expr\') | join(\', \') }}{% endif %}' +
122
- '{% if offset %}\nOFFSET {{ offset }}{% endif %}' +
123
- '{% if limit %}\nLIMIT {{ limit }}{% endif %}';
183
+ templates.statements.select = '{% if ctes %} WITH \n' +
184
+ '{{ ctes | join(\',\n\') }}\n' +
185
+ '{% endif %}' +
186
+ 'SELECT {% if distinct %}DISTINCT {% endif %}' +
187
+ '{{ select_concat | map(attribute=\'aliased\') | join(\', \') }} {% if from %}\n' +
188
+ 'FROM (\n' +
189
+ '{{ from | indent(2, true) }}\n' +
190
+ ') AS {{ from_alias }}{% elif from_prepared %}\n' +
191
+ 'FROM {{ from_prepared }}' +
192
+ '{% endif %}' +
193
+ '{% for join in joins %}\n{{ join }}{% endfor %}' +
194
+ '{% if filter %}\nWHERE {{ filter }}{% endif %}' +
195
+ '{% if group_by %}\nGROUP BY {{ group_by }}{% endif %}' +
196
+ '{% if having %}\nHAVING {{ having }}{% endif %}' +
197
+ '{% if order_by %}\nORDER BY {{ order_by | map(attribute=\'expr\') | join(\', \') }}{% endif %}' +
198
+ // Pinot (multi-stage engine) expects LIMIT before OFFSET; the reverse order is rejected.
199
+ '{% if limit is not none %}\nLIMIT {{ limit }}{% endif %}' +
200
+ '{% if offset is not none %}\nOFFSET {{ offset }}{% endif %}';
124
201
  templates.expressions.extract = 'EXTRACT({{ date_part }} FROM {{ expr }})';
125
- templates.expressions.timestamp_literal = `fromDateTime('{{ value }}', ${DATE_TIME_FORMAT})`;
202
+ templates.expressions.timestamp_literal = 'fromDateTime(\'{{ value }}\', \'yyyy-MM-dd\'\'T\'\'HH:mm:ss.SSS\'\'Z\'\'\')';
126
203
  // NOTE: this template contains a comma; two order expressions are being generated
127
204
  templates.expressions.sort = '{{ expr }} IS NULL {% if nulls_first %}DESC{% else %}ASC{% endif %}, {{ expr }} {% if asc %}ASC{% else %}DESC{% endif %}';
205
+ templates.expressions.ilike = 'LOWER({{ expr }}) {% if negated %}NOT {% endif %}LIKE LOWER({{ pattern }})';
206
+ templates.filters.like_pattern = 'CONCAT({% if start_wild %}\'%\'{% else %}\'\'{% endif %}, LOWER({{ value }}), {% if end_wild %}\'%\'{% else %}\'\'{% endif %})';
207
+ templates.tesseract.ilike = 'LOWER({{ expr }}) {% if negated %}NOT {% endif %} LIKE {{ pattern }}';
208
+ templates.tesseract.series_bounds_cast = 'CAST({{ expr }} AS TIMESTAMP)';
209
+ templates.expressions.rolling_window_expr_timestamp_cast = 'CAST({{ value }} AS TIMESTAMP)';
210
+ templates.statements.time_series_select = 'SELECT CAST(f AS TIMESTAMP) date_from, CAST(t AS TIMESTAMP) date_to \n' +
211
+ 'FROM (\n' +
212
+ '{% for time_item in seria %}' +
213
+ ' select \'{{ time_item[0] }}\' f, \'{{ time_item[1] }}\' t \n' +
214
+ '{% if not loop.last %} UNION ALL\n{% endif %}' +
215
+ '{% endfor %}' +
216
+ ') AS dates';
128
217
  templates.quotes.identifiers = '"';
129
218
  delete templates.types.time;
130
219
  delete templates.types.interval;
@@ -1 +1 @@
1
- {"version":3,"file":"PinotQuery.js","sourceRoot":"","sources":["../../src/PinotQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PinotQuery.js","sourceRoot":"","sources":["../../src/PinotQuery.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@cubejs-backend/pinot-driver",
3
3
  "description": "Cube.js Pinot database driver",
4
4
  "author": "Julian Ronsse, InTheMemory, Cube Dev, Inc.",
5
- "version": "1.7.0",
5
+ "version": "1.7.2",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/cube-js/cube.git",
@@ -27,9 +27,9 @@
27
27
  "lint:fix": "eslint --fix src/* --ext .ts"
28
28
  },
29
29
  "dependencies": {
30
- "@cubejs-backend/base-driver": "1.7.0",
31
- "@cubejs-backend/schema-compiler": "1.7.0",
32
- "@cubejs-backend/shared": "1.7.0",
30
+ "@cubejs-backend/base-driver": "1.7.2",
31
+ "@cubejs-backend/schema-compiler": "1.7.2",
32
+ "@cubejs-backend/shared": "1.7.2",
33
33
  "node-fetch": "^2.6.1",
34
34
  "ramda": "^0.27.2",
35
35
  "sqlstring": "^2.3.3"
@@ -39,7 +39,7 @@
39
39
  "access": "public"
40
40
  },
41
41
  "devDependencies": {
42
- "@cubejs-backend/linter": "1.7.0",
42
+ "@cubejs-backend/linter": "1.7.2",
43
43
  "@types/jest": "^29",
44
44
  "jest": "^29",
45
45
  "should": "^13.2.3",
@@ -49,5 +49,5 @@
49
49
  "eslintConfig": {
50
50
  "extends": "../cubejs-linter"
51
51
  },
52
- "gitHead": "1635ffd9dc3bf1de886bd6de6a1ab86068918942"
52
+ "gitHead": "cc1f0782e71c3bddf0cf101786b28a589bac9e14"
53
53
  }