@cubejs-backend/pinot-driver 1.7.1 → 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.
- package/dist/src/PinotDriver.d.ts +33 -14
- package/dist/src/PinotDriver.d.ts.map +1 -1
- package/dist/src/PinotDriver.js +56 -31
- package/dist/src/PinotDriver.js.map +1 -1
- package/dist/src/PinotQuery.d.ts +13 -0
- package/dist/src/PinotQuery.d.ts.map +1 -1
- package/dist/src/PinotQuery.js +98 -12
- package/dist/src/PinotQuery.js.map +1 -1
- package/package.json +6 -6
|
@@ -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
|
-
|
|
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
|
-
|
|
39
|
-
|
|
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
|
|
1
|
+
{"version":3,"file":"PinotDriver.d.ts","sourceRoot":"","sources":["../../src/PinotDriver.ts"],"names":[],"mappings":"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"}
|
package/dist/src/PinotDriver.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"
|
|
1
|
+
{"version":3,"file":"PinotDriver.js","sourceRoot":"","sources":["../../src/PinotDriver.ts"],"names":[],"mappings":"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"}
|
package/dist/src/PinotQuery.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/src/PinotQuery.js
CHANGED
|
@@ -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
|
-
|
|
68
|
-
return `${this.timeStampCast(date)} - fromEpoch${intervalUnit}(${intervalValue})`;
|
|
79
|
+
return this.applyInterval(date, interval, -1);
|
|
69
80
|
}
|
|
70
81
|
addInterval(date, interval) {
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
170
|
+
// Pinot expects LIMIT before OFFSET.
|
|
171
|
+
return `${limitClause}${offsetClause}`;
|
|
110
172
|
}
|
|
111
173
|
newTimeDimension(timeDimension) {
|
|
112
174
|
return new PinotTimeDimension(this, timeDimension);
|
|
@@ -118,16 +180,40 @@ class PinotQuery extends schema_compiler_1.BaseQuery {
|
|
|
118
180
|
// epoch-millis representation produced by the timestamp_literal template
|
|
119
181
|
templates.functions.UTCTIMESTAMP = 'NOW()';
|
|
120
182
|
templates.functions.STRING_AGG = 'LISTAGG({% if distinct %}DISTINCT {% endif %}{{ args_concat }})';
|
|
121
|
-
templates.statements.select = '
|
|
122
|
-
'
|
|
123
|
-
'{%
|
|
124
|
-
'{% if
|
|
125
|
-
'{
|
|
126
|
-
'
|
|
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 %}';
|
|
127
201
|
templates.expressions.extract = 'EXTRACT({{ date_part }} FROM {{ expr }})';
|
|
128
|
-
templates.expressions.timestamp_literal =
|
|
202
|
+
templates.expressions.timestamp_literal = 'fromDateTime(\'{{ value }}\', \'yyyy-MM-dd\'\'T\'\'HH:mm:ss.SSS\'\'Z\'\'\')';
|
|
129
203
|
// NOTE: this template contains a comma; two order expressions are being generated
|
|
130
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';
|
|
131
217
|
templates.quotes.identifiers = '"';
|
|
132
218
|
delete templates.types.time;
|
|
133
219
|
delete templates.types.interval;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PinotQuery.js","sourceRoot":"","sources":["../../src/PinotQuery.ts"],"names":[],"mappings":";;;AAAA,qEAA2F;
|
|
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.
|
|
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.
|
|
31
|
-
"@cubejs-backend/schema-compiler": "1.7.
|
|
32
|
-
"@cubejs-backend/shared": "1.7.
|
|
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.
|
|
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": "
|
|
52
|
+
"gitHead": "cc1f0782e71c3bddf0cf101786b28a589bac9e14"
|
|
53
53
|
}
|