@malloydata/malloy 0.0.304 → 0.0.305
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/dialect/dialect.d.ts +1 -1
- package/dist/dialect/duckdb/duckdb.d.ts +1 -1
- package/dist/dialect/duckdb/duckdb.js +2 -6
- package/dist/dialect/mysql/mysql.d.ts +1 -1
- package/dist/dialect/mysql/mysql.js +2 -6
- package/dist/dialect/postgres/postgres.d.ts +1 -1
- package/dist/dialect/postgres/postgres.js +2 -6
- package/dist/dialect/snowflake/snowflake.d.ts +1 -1
- package/dist/dialect/snowflake/snowflake.js +2 -5
- package/dist/dialect/standardsql/standardsql.d.ts +1 -1
- package/dist/dialect/standardsql/standardsql.js +2 -6
- package/dist/dialect/trino/trino.d.ts +1 -1
- package/dist/dialect/trino/trino.js +2 -6
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -3
- package/dist/lang/ast/expressions/expr-aggregate-function.js +12 -2
- package/dist/lang/ast/expressions/expr-count.js +3 -1
- package/dist/lang/ast/expressions/expr-func.js +34 -10
- package/dist/lang/ast/expressions/expr-props.js +1 -1
- package/dist/lang/ast/expressions/expr-ungroup.js +7 -3
- package/dist/lang/ast/expressions/function-ordering.d.ts +19 -5
- package/dist/lang/ast/expressions/function-ordering.js +61 -9
- package/dist/lang/ast/field-space/include-utils.js +1 -1
- package/dist/lang/ast/field-space/index-field-space.js +3 -1
- package/dist/lang/ast/field-space/query-spaces.js +20 -11
- package/dist/lang/ast/query-builders/index-builder.js +1 -1
- package/dist/lang/ast/query-builders/reduce-builder.js +1 -1
- package/dist/lang/ast/query-elements/query-arrow.js +14 -4
- package/dist/lang/ast/query-elements/query-base.d.ts +1 -0
- package/dist/lang/ast/query-elements/query-base.js +14 -4
- package/dist/lang/ast/query-elements/query-refine.js +2 -0
- package/dist/lang/ast/query-properties/drill.js +1 -1
- package/dist/lang/ast/source-properties/join.js +6 -2
- package/dist/lang/ast/statements/define-source.js +1 -1
- package/dist/lang/ast/types/expr-value.js +1 -1
- package/dist/lang/ast/view-elements/reference-view.js +4 -1
- package/dist/lang/ast/view-elements/refine-utils.js +1 -1
- package/dist/{model/composite_source_utils.d.ts → lang/composite-source-utils.d.ts} +4 -17
- package/dist/{model/composite_source_utils.js → lang/composite-source-utils.js} +274 -44
- package/dist/lang/test/parse-expects.d.ts +1 -1
- package/dist/lang/test/parse-expects.js +6 -2
- package/dist/lang/test/test-translator.js +1 -1
- package/dist/malloy.js +1 -1
- package/dist/model/expression_compiler.d.ts +27 -0
- package/dist/model/expression_compiler.js +780 -0
- package/dist/model/field_instance.d.ts +108 -0
- package/dist/model/field_instance.js +520 -0
- package/dist/model/index.d.ts +5 -1
- package/dist/model/index.js +25 -4
- package/dist/model/join_instance.d.ts +18 -0
- package/dist/model/join_instance.js +71 -0
- package/dist/model/malloy_types.d.ts +48 -2
- package/dist/model/malloy_types.js +39 -1
- package/dist/model/query_model.d.ts +2 -0
- package/dist/model/query_model.js +7 -0
- package/dist/model/query_model_contract.d.ts +32 -0
- package/dist/model/query_model_contract.js +7 -0
- package/dist/model/query_model_impl.d.ts +30 -0
- package/dist/model/query_model_impl.js +266 -0
- package/dist/model/query_node.d.ts +132 -0
- package/dist/model/query_node.js +638 -0
- package/dist/model/query_query.d.ts +86 -0
- package/dist/model/query_query.js +1724 -0
- package/dist/model/sql_block.js +2 -2
- package/dist/model/stage_writer.d.ts +25 -0
- package/dist/model/stage_writer.js +120 -0
- package/dist/model/utils.d.ts +18 -1
- package/dist/model/utils.js +66 -1
- package/dist/to_stable.js +3 -4
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -4
- package/dist/model/malloy_query.d.ts +0 -391
- package/dist/model/malloy_query.js +0 -3926
|
@@ -64,7 +64,7 @@ const field_references_1 = require("../query-items/field-references");
|
|
|
64
64
|
const refined_space_1 = require("./refined-space");
|
|
65
65
|
const static_space_1 = require("./static-space");
|
|
66
66
|
const query_input_space_1 = require("./query-input-space");
|
|
67
|
-
const composite_source_utils_1 = require("
|
|
67
|
+
const composite_source_utils_1 = require("../../composite-source-utils");
|
|
68
68
|
const error_factory_1 = require("../error-factory");
|
|
69
69
|
const reference_field_1 = require("./reference-field");
|
|
70
70
|
const refine_from_space_field_1 = require("./refine-from-space-field");
|
|
@@ -245,10 +245,18 @@ class QuerySpace extends QueryOperationSpace {
|
|
|
245
245
|
return fields.map(f => f.queryFieldDef);
|
|
246
246
|
}
|
|
247
247
|
getOutputFieldDef(queryFieldDef, typeDesc) {
|
|
248
|
-
var _a, _b;
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
248
|
+
var _a, _b, _c;
|
|
249
|
+
let location = undefined;
|
|
250
|
+
let name;
|
|
251
|
+
if (queryFieldDef.type === 'fieldref') {
|
|
252
|
+
name = queryFieldDef.path[queryFieldDef.path.length - 1];
|
|
253
|
+
location = queryFieldDef.at;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
name = (_a = queryFieldDef.as) !== null && _a !== void 0 ? _a : queryFieldDef.name;
|
|
257
|
+
location = queryFieldDef.location;
|
|
258
|
+
}
|
|
259
|
+
let ret;
|
|
252
260
|
if (typeDesc.type === 'turtle') {
|
|
253
261
|
const pipeline = typeDesc.pipeline;
|
|
254
262
|
const lastSegment = pipeline[pipeline.length - 1];
|
|
@@ -259,7 +267,7 @@ class QuerySpace extends QueryOperationSpace {
|
|
|
259
267
|
: true
|
|
260
268
|
: true;
|
|
261
269
|
if (isRepeated) {
|
|
262
|
-
|
|
270
|
+
ret = {
|
|
263
271
|
...outputStruct,
|
|
264
272
|
elementTypeDef: { type: 'record_element' },
|
|
265
273
|
name: name,
|
|
@@ -269,7 +277,7 @@ class QuerySpace extends QueryOperationSpace {
|
|
|
269
277
|
};
|
|
270
278
|
}
|
|
271
279
|
else {
|
|
272
|
-
|
|
280
|
+
ret = {
|
|
273
281
|
...outputStruct,
|
|
274
282
|
name: name,
|
|
275
283
|
type: 'record',
|
|
@@ -279,16 +287,17 @@ class QuerySpace extends QueryOperationSpace {
|
|
|
279
287
|
}
|
|
280
288
|
}
|
|
281
289
|
else if (model.TD.isAtomic(typeDesc)) {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
...td,
|
|
290
|
+
ret = {
|
|
291
|
+
...model.mkFieldDef(typeDesc, name),
|
|
285
292
|
expressionType: 'scalar',
|
|
286
|
-
|
|
293
|
+
location,
|
|
287
294
|
};
|
|
288
295
|
}
|
|
289
296
|
else {
|
|
290
297
|
throw new Error('Invalid type for fieldref');
|
|
291
298
|
}
|
|
299
|
+
ret.location = (_c = ret.location) !== null && _c !== void 0 ? _c : this.astEl.location;
|
|
300
|
+
return ret;
|
|
292
301
|
}
|
|
293
302
|
// Gets the primary key field for the output struct of this query;
|
|
294
303
|
// If there is exactly one scalar field, that is the primary key
|
|
@@ -30,7 +30,7 @@ const indexing_1 = require("../query-properties/indexing");
|
|
|
30
30
|
const limit_1 = require("../query-properties/limit");
|
|
31
31
|
const sampling_1 = require("../query-properties/sampling");
|
|
32
32
|
const index_field_space_1 = require("../field-space/index-field-space");
|
|
33
|
-
const composite_source_utils_1 = require("
|
|
33
|
+
const composite_source_utils_1 = require("../../composite-source-utils");
|
|
34
34
|
class IndexBuilder {
|
|
35
35
|
constructor(inputFS, refineThis, isNestIn, astEl) {
|
|
36
36
|
this.filters = [];
|
|
@@ -30,7 +30,7 @@ const limit_1 = require("../query-properties/limit");
|
|
|
30
30
|
const ordering_1 = require("../query-properties/ordering");
|
|
31
31
|
const query_spaces_1 = require("../field-space/query-spaces");
|
|
32
32
|
const definition_list_1 = require("../types/definition-list");
|
|
33
|
-
const composite_source_utils_1 = require("
|
|
33
|
+
const composite_source_utils_1 = require("../../composite-source-utils");
|
|
34
34
|
function queryFieldName(qf) {
|
|
35
35
|
if (qf.type === 'fieldref') {
|
|
36
36
|
return qf.path[qf.path.length - 1];
|
|
@@ -27,7 +27,7 @@ const malloy_types_1 = require("../../../model/malloy_types");
|
|
|
27
27
|
const source_1 = require("../source-elements/source");
|
|
28
28
|
const static_space_1 = require("../field-space/static-space");
|
|
29
29
|
const query_base_1 = require("./query-base");
|
|
30
|
-
const composite_source_utils_1 = require("
|
|
30
|
+
const composite_source_utils_1 = require("../../composite-source-utils");
|
|
31
31
|
/**
|
|
32
32
|
* A query operation that adds segments to a LHS source or query.
|
|
33
33
|
*
|
|
@@ -69,14 +69,14 @@ class QueryArrow extends query_base_1.QueryBase {
|
|
|
69
69
|
inputStruct = lhsQuery.outputStruct;
|
|
70
70
|
fieldSpace = new static_space_1.StaticSourceSpace(lhsQuery.outputStruct, 'public');
|
|
71
71
|
}
|
|
72
|
-
const { pipeline, annotation, outputStruct, name } = this.view.pipelineComp(fieldSpace);
|
|
72
|
+
const { pipeline: rhsPipeline, annotation, outputStruct, name, } = this.view.pipelineComp(fieldSpace);
|
|
73
73
|
const query = {
|
|
74
74
|
...queryBase,
|
|
75
75
|
name,
|
|
76
76
|
annotation,
|
|
77
|
-
pipeline: [...queryBase.pipeline, ...
|
|
77
|
+
pipeline: [...queryBase.pipeline, ...rhsPipeline],
|
|
78
78
|
};
|
|
79
|
-
const compositeResolvedSourceDef = (_a = query.compositeResolvedSourceDef) !== null && _a !== void 0 ? _a : this.resolveCompositeSource(inputStruct,
|
|
79
|
+
const compositeResolvedSourceDef = (_a = query.compositeResolvedSourceDef) !== null && _a !== void 0 ? _a : this.resolveCompositeSource(inputStruct, rhsPipeline);
|
|
80
80
|
const segment = query.pipeline[0];
|
|
81
81
|
if (segment !== undefined) {
|
|
82
82
|
const unsatisfiedGroupBys = (0, composite_source_utils_1.checkRequiredGroupBys)(compositeResolvedSourceDef !== null && compositeResolvedSourceDef !== void 0 ? compositeResolvedSourceDef : inputStruct, segment);
|
|
@@ -86,10 +86,20 @@ class QueryArrow extends query_base_1.QueryBase {
|
|
|
86
86
|
});
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
+
const pipelineWithExpandedFieldUsage = [
|
|
90
|
+
// The base query (if it exists) will already have its `expandedFieldUsage` computed
|
|
91
|
+
...queryBase.pipeline,
|
|
92
|
+
...this.expandFieldUsage(this.source instanceof source_1.Source
|
|
93
|
+
? // If `source ->` then use the composite resolved struct,
|
|
94
|
+
compositeResolvedSourceDef !== null && compositeResolvedSourceDef !== void 0 ? compositeResolvedSourceDef : inputStruct
|
|
95
|
+
: // Otherwise just use the `inputStruct`
|
|
96
|
+
inputStruct, rhsPipeline),
|
|
97
|
+
];
|
|
89
98
|
return {
|
|
90
99
|
query: {
|
|
91
100
|
...query,
|
|
92
101
|
compositeResolvedSourceDef,
|
|
102
|
+
pipeline: pipelineWithExpandedFieldUsage,
|
|
93
103
|
},
|
|
94
104
|
outputStruct,
|
|
95
105
|
inputStruct,
|
|
@@ -3,6 +3,7 @@ import { MalloyElement } from '../types/malloy-element';
|
|
|
3
3
|
import type { QueryComp } from '../types/query-comp';
|
|
4
4
|
export declare abstract class QueryBase extends MalloyElement {
|
|
5
5
|
abstract queryComp(isRefOk: boolean): QueryComp;
|
|
6
|
+
protected expandFieldUsage(inputSource: SourceDef, pipeline: PipeSegment[]): PipeSegment[];
|
|
6
7
|
protected resolveCompositeSource(inputSource: SourceDef, pipeline: PipeSegment[]): SourceDef | undefined;
|
|
7
8
|
query(): Query;
|
|
8
9
|
}
|
|
@@ -23,13 +23,24 @@
|
|
|
23
23
|
*/
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
25
|
exports.QueryBase = void 0;
|
|
26
|
-
const composite_source_utils_1 = require("
|
|
26
|
+
const composite_source_utils_1 = require("../../composite-source-utils");
|
|
27
27
|
const malloy_types_1 = require("../../../model/malloy_types");
|
|
28
|
+
const error_factory_1 = require("../error-factory");
|
|
28
29
|
const query_utils_1 = require("../query-utils");
|
|
29
30
|
const malloy_element_1 = require("../types/malloy-element");
|
|
30
31
|
class QueryBase extends malloy_element_1.MalloyElement {
|
|
32
|
+
expandFieldUsage(inputSource, pipeline) {
|
|
33
|
+
const ret = [];
|
|
34
|
+
let stageInput = inputSource;
|
|
35
|
+
for (const segment of pipeline) {
|
|
36
|
+
const newSegment = (0, composite_source_utils_1.getExpandedSegment)(segment, stageInput);
|
|
37
|
+
ret.push(newSegment);
|
|
38
|
+
// Get the output struct for the next stage
|
|
39
|
+
stageInput = newSegment.outputStruct || error_factory_1.ErrorFactory.structDef;
|
|
40
|
+
}
|
|
41
|
+
return ret;
|
|
42
|
+
}
|
|
31
43
|
resolveCompositeSource(inputSource, pipeline) {
|
|
32
|
-
var _a;
|
|
33
44
|
const stage1 = pipeline[0];
|
|
34
45
|
if (stage1 === undefined)
|
|
35
46
|
return undefined;
|
|
@@ -38,8 +49,7 @@ class QueryBase extends malloy_element_1.MalloyElement {
|
|
|
38
49
|
// which hides the fact that this code doesn't handle sources in `extend:`.
|
|
39
50
|
if (((0, malloy_types_1.isQuerySegment)(stage1) || (0, malloy_types_1.isIndexSegment)(stage1)) &&
|
|
40
51
|
(0, composite_source_utils_1.hasCompositesAnywhere)(inputSource)) {
|
|
41
|
-
const
|
|
42
|
-
const resolved = (0, composite_source_utils_1.resolveCompositeSources)(inputSource, stage1, fieldUsage);
|
|
52
|
+
const resolved = (0, composite_source_utils_1.resolveCompositeSources)(inputSource, stage1);
|
|
43
53
|
if (resolved.error) {
|
|
44
54
|
(0, composite_source_utils_1.logCompositeError)(resolved.error, this);
|
|
45
55
|
}
|
|
@@ -46,10 +46,12 @@ class QueryRefine extends query_base_1.QueryBase {
|
|
|
46
46
|
pipeline,
|
|
47
47
|
};
|
|
48
48
|
const compositeResolvedSourceDef = this.resolveCompositeSource(q.inputStruct, pipeline);
|
|
49
|
+
const pipelineWithExpandedFieldUsage = this.expandFieldUsage(compositeResolvedSourceDef !== null && compositeResolvedSourceDef !== void 0 ? compositeResolvedSourceDef : q.inputStruct, pipeline);
|
|
49
50
|
return {
|
|
50
51
|
query: {
|
|
51
52
|
...query,
|
|
52
53
|
compositeResolvedSourceDef,
|
|
54
|
+
pipeline: pipelineWithExpandedFieldUsage,
|
|
53
55
|
},
|
|
54
56
|
// TODO bleh
|
|
55
57
|
outputStruct: pipeline[pipeline.length - 1].outputStruct,
|
|
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.Drill = exports.DrillField = void 0;
|
|
10
10
|
exports.updateNestedDrillPaths = updateNestedDrillPaths;
|
|
11
11
|
exports.attachDrillPaths = attachDrillPaths;
|
|
12
|
-
const composite_source_utils_1 = require("
|
|
12
|
+
const composite_source_utils_1 = require("../../composite-source-utils");
|
|
13
13
|
const malloy_types_1 = require("../../../model/malloy_types");
|
|
14
14
|
const utils_1 = require("../../utils");
|
|
15
15
|
const expr_compare_1 = require("../expressions/expr-compare");
|
|
@@ -30,6 +30,7 @@ const malloy_element_1 = require("../types/malloy-element");
|
|
|
30
30
|
const noteable_1 = require("../types/noteable");
|
|
31
31
|
const error_factory_1 = require("../error-factory");
|
|
32
32
|
const query_property_interface_1 = require("../types/query-property-interface");
|
|
33
|
+
const composite_source_utils_1 = require("../../composite-source-utils");
|
|
33
34
|
class Join extends malloy_element_1.MalloyElement {
|
|
34
35
|
constructor() {
|
|
35
36
|
super(...arguments);
|
|
@@ -87,19 +88,22 @@ class KeyJoin extends Join {
|
|
|
87
88
|
const pkey = inStruct.fields.find(f => (f.as || f.name) === inStruct.primaryKey);
|
|
88
89
|
if (pkey) {
|
|
89
90
|
if (pkey.type === exprX.type) {
|
|
91
|
+
const keyPath = [this.name.refString, inStruct.primaryKey];
|
|
90
92
|
inStruct.join = 'one';
|
|
91
93
|
inStruct.onExpression = {
|
|
92
94
|
node: '=',
|
|
93
95
|
kids: {
|
|
94
96
|
left: {
|
|
95
97
|
node: 'field',
|
|
96
|
-
path:
|
|
98
|
+
path: keyPath,
|
|
97
99
|
at: this.keyExpr.location,
|
|
98
100
|
},
|
|
99
101
|
right: exprX.value,
|
|
100
102
|
},
|
|
101
103
|
};
|
|
102
|
-
inStruct.fieldUsage = exprX.fieldUsage
|
|
104
|
+
inStruct.fieldUsage = (0, composite_source_utils_1.mergeFieldUsage)(exprX.fieldUsage, [
|
|
105
|
+
{ path: keyPath },
|
|
106
|
+
]);
|
|
103
107
|
return;
|
|
104
108
|
}
|
|
105
109
|
else {
|
|
@@ -26,7 +26,7 @@ exports.DefineSourceList = exports.DefineSource = void 0;
|
|
|
26
26
|
const error_factory_1 = require("../error-factory");
|
|
27
27
|
const malloy_element_1 = require("../types/malloy-element");
|
|
28
28
|
const noteable_1 = require("../types/noteable");
|
|
29
|
-
const composite_source_utils_1 = require("
|
|
29
|
+
const composite_source_utils_1 = require("../../composite-source-utils");
|
|
30
30
|
class DefineSource extends malloy_element_1.MalloyElement {
|
|
31
31
|
constructor(name, sourceExpr, exported, parameters) {
|
|
32
32
|
super();
|
|
@@ -30,7 +30,7 @@ exports.literalTimeResult = literalTimeResult;
|
|
|
30
30
|
exports.mergeGroupedBys = mergeGroupedBys;
|
|
31
31
|
exports.mergeUngroupings = mergeUngroupings;
|
|
32
32
|
const model_1 = require("../../../model");
|
|
33
|
-
const composite_source_utils_1 = require("
|
|
33
|
+
const composite_source_utils_1 = require("../../composite-source-utils");
|
|
34
34
|
function computedExprValue({ value, dataType, from, }) {
|
|
35
35
|
return {
|
|
36
36
|
...dataType,
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
*/
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
25
|
exports.ReferenceView = void 0;
|
|
26
|
+
const composite_source_utils_1 = require("../../composite-source-utils");
|
|
26
27
|
const malloy_types_1 = require("../../../model/malloy_types");
|
|
27
28
|
const error_factory_1 = require("../error-factory");
|
|
28
29
|
const drill_1 = require("../query-properties/drill");
|
|
@@ -82,7 +83,9 @@ class ReferenceView extends view_1.View {
|
|
|
82
83
|
const newSegment = {
|
|
83
84
|
type: 'reduce',
|
|
84
85
|
queryFields: [this.reference.refToField],
|
|
85
|
-
fieldUsage: fieldDef.fieldUsage,
|
|
86
|
+
fieldUsage: (0, composite_source_utils_1.mergeFieldUsage)(fieldDef.fieldUsage, [
|
|
87
|
+
{ path: this.reference.refToField.path, at: this.reference.location },
|
|
88
|
+
]),
|
|
86
89
|
outputStruct,
|
|
87
90
|
// An atomic lens results in a array segment if it is a scalar
|
|
88
91
|
isRepeated: (0, malloy_types_1.expressionIsScalar)(fieldDef.expressionType),
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
25
|
exports.refine = refine;
|
|
26
26
|
const model_1 = require("../../../model");
|
|
27
|
-
const composite_source_utils_1 = require("
|
|
27
|
+
const composite_source_utils_1 = require("../../composite-source-utils");
|
|
28
28
|
const field_utils_1 = require("../../field-utils");
|
|
29
29
|
function refine(logTo, refineTo, refineFrom) {
|
|
30
30
|
var _a, _b;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type { FieldUsage, PipeSegment, SourceDef, Expr, RequiredGroupBy, Annotation, PartitionCompositeDesc, StructDef } from './malloy_types';
|
|
1
|
+
import type { MalloyElement } from './ast';
|
|
2
|
+
import type { FieldUsage, PipeSegment, SourceDef, RequiredGroupBy, Annotation, PartitionCompositeDesc, StructDef } from '../model/malloy_types';
|
|
4
3
|
type CompositeCouldNotFindFieldError = {
|
|
5
4
|
code: 'could_not_find_field';
|
|
6
5
|
data: {
|
|
@@ -51,6 +50,7 @@ interface CompositeFailure {
|
|
|
51
50
|
source: SourceDef;
|
|
52
51
|
issues: CompositeIssue[];
|
|
53
52
|
}
|
|
53
|
+
export declare function getExpandedSegment(segment: PipeSegment, inputSource: SourceDef): PipeSegment;
|
|
54
54
|
export declare function getPartitionCompositeDesc(annotation: Annotation | undefined, structDef: StructDef, logTo: MalloyElement): PartitionCompositeDesc | undefined;
|
|
55
55
|
type SingleNarrowedCompositeFieldResolution = {
|
|
56
56
|
source: SourceDef;
|
|
@@ -63,7 +63,7 @@ export interface NarrowedCompositeFieldResolution {
|
|
|
63
63
|
source: SingleNarrowedCompositeFieldResolution | undefined;
|
|
64
64
|
joined: NarrowedCompositeFieldResolutionByJoinName;
|
|
65
65
|
}
|
|
66
|
-
export declare function resolveCompositeSources(source: SourceDef, segment: PipeSegment
|
|
66
|
+
export declare function resolveCompositeSources(source: SourceDef, segment: PipeSegment): {
|
|
67
67
|
sourceDef: SourceDef | undefined;
|
|
68
68
|
error: undefined;
|
|
69
69
|
} | {
|
|
@@ -87,17 +87,4 @@ export declare function pathEq(a: string[], b: string[]): boolean;
|
|
|
87
87
|
export declare function pathBegins(path: string[], prefix: string[]): boolean;
|
|
88
88
|
export declare function hasCompositesAnywhere(source: SourceDef): boolean;
|
|
89
89
|
export declare function logCompositeError(error: CompositeError, logTo: MalloyElement): void;
|
|
90
|
-
export declare function compileFilterExpression(ft: string, fexpr: Expr): {
|
|
91
|
-
kind: 'date' | 'timestamp';
|
|
92
|
-
parsed: TemporalFilter;
|
|
93
|
-
} | {
|
|
94
|
-
kind: 'string';
|
|
95
|
-
parsed: StringFilter;
|
|
96
|
-
} | {
|
|
97
|
-
kind: 'boolean';
|
|
98
|
-
parsed: BooleanFilter;
|
|
99
|
-
} | {
|
|
100
|
-
kind: 'number';
|
|
101
|
-
parsed: NumberFilter;
|
|
102
|
-
} | undefined;
|
|
103
90
|
export {};
|