@cubejs-backend/schema-compiler 1.1.9 → 1.1.11
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/adapter/BaseQuery.d.ts +3 -0
- package/dist/src/adapter/BaseQuery.d.ts.map +1 -1
- package/dist/src/adapter/BaseQuery.js +37 -7
- package/dist/src/adapter/BaseQuery.js.map +1 -1
- package/dist/src/adapter/BigqueryQuery.d.ts.map +1 -1
- package/dist/src/adapter/BigqueryQuery.js +1 -0
- package/dist/src/adapter/BigqueryQuery.js.map +1 -1
- package/dist/src/adapter/ParamAllocator.d.ts +1 -0
- package/dist/src/adapter/ParamAllocator.d.ts.map +1 -1
- package/dist/src/adapter/ParamAllocator.js +3 -0
- package/dist/src/adapter/ParamAllocator.js.map +1 -1
- package/dist/src/adapter/PostgresQuery.d.ts.map +1 -1
- package/dist/src/adapter/PostgresQuery.js +1 -0
- package/dist/src/adapter/PostgresQuery.js.map +1 -1
- package/dist/src/adapter/PreAggregations.d.ts.map +1 -1
- package/dist/src/adapter/PreAggregations.js +4 -0
- package/dist/src/adapter/PreAggregations.js.map +1 -1
- package/dist/src/adapter/SnowflakeQuery.d.ts.map +1 -1
- package/dist/src/adapter/SnowflakeQuery.js +1 -0
- package/dist/src/adapter/SnowflakeQuery.js.map +1 -1
- package/dist/src/compiler/CubeSymbols.js +1 -1
- package/dist/src/scaffolding/formatters/BaseSchemaFormatter.d.ts.map +1 -1
- package/dist/src/scaffolding/formatters/BaseSchemaFormatter.js +4 -1
- package/dist/src/scaffolding/formatters/BaseSchemaFormatter.js.map +1 -1
- package/package.json +5 -5
|
@@ -157,6 +157,9 @@ export class BaseQuery {
|
|
|
157
157
|
*/
|
|
158
158
|
buildSqlAndParams(exportAnnotatedSql?: boolean | undefined): [string, Array<unknown>];
|
|
159
159
|
buildSqlAndParamsRust(exportAnnotatedSql: any): String;
|
|
160
|
+
allCubeMembers(path: any): string[];
|
|
161
|
+
getAllocatedParams(): unknown[];
|
|
162
|
+
generateTimeSeries(granularity: any, dateRange: any): import("@cubejs-backend/shared").QueryDateRange[];
|
|
160
163
|
get shouldReuseParams(): boolean;
|
|
161
164
|
/**
|
|
162
165
|
* Returns a dictionary mapping each preagregation to its corresponding query fragment.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/BaseQuery.js"],"names":[],"mappings":"AAkDA;;;;;;;;;;GAUG;AAEH;;;;;;;;;;;;GAYG;AACH;
|
|
1
|
+
{"version":3,"file":"BaseQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/BaseQuery.js"],"names":[],"mappings":"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"}
|
|
@@ -249,7 +249,10 @@ class BaseQuery {
|
|
|
249
249
|
return dimension;
|
|
250
250
|
}).filter(ramda_1.default.identity).map(this.newTimeDimension.bind(this));
|
|
251
251
|
this.allFilters = this.timeDimensions.concat(this.segments).concat(this.filters);
|
|
252
|
-
|
|
252
|
+
if (!(0, shared_1.getEnv)('nativeSqlPlanner')) {
|
|
253
|
+
// Tesseract doesn't require join to be prebuilt and there's a case where single join can't be built for multi-fact query
|
|
254
|
+
this.join = this.joinGraph.buildJoin(this.allJoinHints);
|
|
255
|
+
}
|
|
253
256
|
this.cubeAliasPrefix = this.options.cubeAliasPrefix;
|
|
254
257
|
this.preAggregationsSchemaOption = this.options.preAggregationsSchema ?? DEFAULT_PREAGGREGATIONS_SCHEMA;
|
|
255
258
|
this.externalQueryClass = this.options.externalQueryClass;
|
|
@@ -320,7 +323,8 @@ class BaseQuery {
|
|
|
320
323
|
initUngrouped() {
|
|
321
324
|
this.ungrouped = this.options.ungrouped;
|
|
322
325
|
if (this.ungrouped) {
|
|
323
|
-
|
|
326
|
+
// this.join is not defined for Tesseract
|
|
327
|
+
if (!this.options.allowUngroupedWithoutPrimaryKey && !(0, shared_1.getEnv)('nativeSqlPlanner')) {
|
|
324
328
|
const cubes = ramda_1.default.uniq([this.join.root].concat(this.join.joins.map(j => j.originalTo)));
|
|
325
329
|
const primaryKeyNames = cubes.flatMap(c => this.primaryKeyNames(c));
|
|
326
330
|
const missingPrimaryKeys = primaryKeyNames.filter(key => !this.dimensions.find(d => d.dimension === key));
|
|
@@ -504,26 +508,38 @@ class BaseQuery {
|
|
|
504
508
|
}
|
|
505
509
|
}
|
|
506
510
|
buildSqlAndParamsRust(exportAnnotatedSql) {
|
|
511
|
+
const order = this.options.order && ramda_1.default.pipe(ramda_1.default.map((hash) => ((!hash || !hash.id) ? null : hash)), ramda_1.default.reject(ramda_1.default.isNil))(this.options.order);
|
|
507
512
|
const queryParams = {
|
|
508
513
|
measures: this.options.measures,
|
|
509
514
|
dimensions: this.options.dimensions,
|
|
510
515
|
timeDimensions: this.options.timeDimensions,
|
|
511
516
|
timezone: this.options.timezone,
|
|
512
|
-
joinRoot: this.join.root,
|
|
513
517
|
joinGraph: this.joinGraph,
|
|
514
518
|
cubeEvaluator: this.cubeEvaluator,
|
|
515
|
-
order
|
|
519
|
+
order,
|
|
516
520
|
filters: this.options.filters,
|
|
517
521
|
limit: this.options.limit ? this.options.limit.toString() : null,
|
|
518
522
|
rowLimit: this.options.rowLimit ? this.options.rowLimit.toString() : null,
|
|
519
523
|
offset: this.options.offset ? this.options.offset.toString() : null,
|
|
520
524
|
baseTools: this,
|
|
525
|
+
ungrouped: this.options.ungrouped
|
|
521
526
|
};
|
|
522
527
|
const res = (0, native_1.buildSqlAndParams)(queryParams);
|
|
523
528
|
// FIXME
|
|
524
529
|
res[1] = [...res[1]];
|
|
525
530
|
return res;
|
|
526
531
|
}
|
|
532
|
+
allCubeMembers(path) {
|
|
533
|
+
const fromPath = this.cubeEvaluator.cubeFromPath(path);
|
|
534
|
+
return Object.keys(fromPath.measures).concat(Object.keys(fromPath.dimensions));
|
|
535
|
+
}
|
|
536
|
+
getAllocatedParams() {
|
|
537
|
+
return this.paramAllocator.getParams();
|
|
538
|
+
}
|
|
539
|
+
// FIXME helper for native generator, maybe should be moved entire to rust
|
|
540
|
+
generateTimeSeries(granularity, dateRange) {
|
|
541
|
+
return (0, shared_1.timeSeries)(granularity, dateRange);
|
|
542
|
+
}
|
|
527
543
|
get shouldReuseParams() {
|
|
528
544
|
return false;
|
|
529
545
|
}
|
|
@@ -2512,7 +2528,16 @@ class BaseQuery {
|
|
|
2512
2528
|
'{% if offset is not none %}\nOFFSET {{ offset }}{% endif %}',
|
|
2513
2529
|
group_by_exprs: '{{ group_by | map(attribute=\'index\') | join(\', \') }}',
|
|
2514
2530
|
join: '{{ join_type }} JOIN {{ source }} ON {{ condition }}',
|
|
2515
|
-
cte: '{{ alias }} AS ({{ query | indent(2, true) }})'
|
|
2531
|
+
cte: '{{ alias }} AS ({{ query | indent(2, true) }})',
|
|
2532
|
+
time_series_select: 'SELECT date_from::timestamp AS "date_from",\n' +
|
|
2533
|
+
'date_to::timestamp AS "date_to" \n' +
|
|
2534
|
+
'FROM(\n' +
|
|
2535
|
+
' VALUES ' +
|
|
2536
|
+
'{% for time_item in seria %}' +
|
|
2537
|
+
'(\'{{ time_item | join(\'\\\', \\\'\') }}\')' +
|
|
2538
|
+
'{% if not loop.last %}, {% endif %}' +
|
|
2539
|
+
'{% endfor %}' +
|
|
2540
|
+
') AS dates (date_from, date_to)'
|
|
2516
2541
|
},
|
|
2517
2542
|
expressions: {
|
|
2518
2543
|
column_reference: '{% if table_name %}{{ table_name }}.{% endif %}{{ name }}',
|
|
@@ -2533,6 +2558,8 @@ class BaseQuery {
|
|
|
2533
2558
|
cube: 'CUBE({{ exprs_concat }})',
|
|
2534
2559
|
negative: '-({{ expr }})',
|
|
2535
2560
|
not: 'NOT ({{ expr }})',
|
|
2561
|
+
add_interval: '{{ date }} + interval \'{{ interval }}\'',
|
|
2562
|
+
sub_interval: '{{ date }} - interval \'{{ interval }}\'',
|
|
2536
2563
|
true: 'TRUE',
|
|
2537
2564
|
false: 'FALSE',
|
|
2538
2565
|
like: '{{ expr }} {% if negated %}NOT {% endif %}LIKE {{ pattern }}',
|
|
@@ -2552,8 +2579,10 @@ class BaseQuery {
|
|
|
2552
2579
|
gte: '{{ column }} >= {{ param }}',
|
|
2553
2580
|
lt: '{{ column }} < {{ param }}',
|
|
2554
2581
|
lte: '{{ column }} <= {{ param }}',
|
|
2555
|
-
|
|
2582
|
+
like_pattern: '{% if start_wild %}\'%\' || {% endif %}{{ value }}{% if end_wild %}|| \'%\'{% endif %}',
|
|
2583
|
+
always_true: '1 = 1'
|
|
2556
2584
|
},
|
|
2585
|
+
operators: {},
|
|
2557
2586
|
quotes: {
|
|
2558
2587
|
identifiers: '"',
|
|
2559
2588
|
escape: '""'
|
|
@@ -2563,7 +2592,8 @@ class BaseQuery {
|
|
|
2563
2592
|
},
|
|
2564
2593
|
join_types: {
|
|
2565
2594
|
inner: 'INNER',
|
|
2566
|
-
left: 'LEFT'
|
|
2595
|
+
left: 'LEFT',
|
|
2596
|
+
full: 'FULL',
|
|
2567
2597
|
},
|
|
2568
2598
|
window_frame_types: {
|
|
2569
2599
|
rows: 'ROWS',
|