@malloydata/malloy 0.0.2 → 0.0.3
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/README.md +12 -11
- package/dist/dialect/duckdb.d.ts +1 -1
- package/dist/dialect/duckdb.js +35 -37
- package/dist/dialect/postgres.d.ts +1 -1
- package/dist/dialect/postgres.js +15 -8
- package/dist/dialect/standardsql.js +1 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +2 -2
- package/dist/lang/ast/apply-expr.js +2 -2
- package/dist/lang/ast/ast-expr.js +2 -12
- package/dist/lang/ast/ast-main.d.ts +2 -2
- package/dist/lang/ast/ast-main.js +2 -1
- package/dist/lang/field-space.d.ts +9 -7
- package/dist/lang/field-space.js +10 -8
- package/dist/lang/lib/Malloy/MalloyLexer.d.ts +108 -106
- package/dist/lang/lib/Malloy/MalloyLexer.js +1019 -1006
- package/dist/lang/lib/Malloy/MalloyParser.d.ts +581 -590
- package/dist/lang/lib/Malloy/MalloyParser.js +1141 -1202
- package/dist/lang/lib/Malloy/MalloyParserListener.d.ts +2015 -0
- package/dist/lang/lib/Malloy/MalloyParserListener.js +4 -0
- package/dist/lang/lib/Malloy/MalloyParserVisitor.d.ts +1269 -0
- package/dist/lang/lib/Malloy/MalloyParserVisitor.js +4 -0
- package/dist/lang/parse-to-ast.d.ts +3 -4
- package/dist/lang/parse-to-ast.js +1 -1
- package/dist/lang/parse-tree-walkers/document-completion-walker.js +2 -0
- package/dist/lang/parse-tree-walkers/explore-query-walker.d.ts +2 -2
- package/dist/lang/test/field-symbols.spec.js +2 -2
- package/dist/lang/test/parse.spec.js +15 -0
- package/dist/lang/test/test-translator.js +1 -1
- package/dist/malloy.d.ts +1 -1
- package/dist/malloy.js +11 -5
- package/dist/md5.d.ts +1 -0
- package/dist/md5.js +30 -0
- package/dist/model/malloy_query.js +4 -6
- package/dist/model/malloy_types.d.ts +3 -1
- package/package.json +9 -14
- package/dist/dialect/dialect-map.d.ts +0 -3
- package/dist/dialect/dialect-map.js +0 -33
- package/dist/model/malloy-query.d.ts +0 -313
- package/dist/model/malloy-query.js +0 -2603
- package/dist/model/malloy-types.d.ts +0 -404
- package/dist/model/malloy-types.js +0 -242
- package/dist/model/sql-block.d.ts +0 -11
- package/dist/model/sql-block.js +0 -38
- package/dist/runtime-types.d.ts +0 -116
- package/dist/runtime-types.js +0 -40
|
@@ -1,313 +0,0 @@
|
|
|
1
|
-
import { Dialect, DialectFieldList } from "../dialect";
|
|
2
|
-
import { FieldDef, FieldRef, FilterExpression, ModelDef, Query, QueryFieldDef, StructDef, StructRef, OrderBy, ResultMetadataDef, Expr, FieldFragment, AggregateFragment, CompiledQuery, FilterFragment, PipeSegment, TurtleDef, QuerySegment, Filtered, ParameterFragment, Parameter, JoinRelationship } from "./malloy-types";
|
|
3
|
-
import { AndChain } from "./utils";
|
|
4
|
-
import { ResultStructMetadataDef } from ".";
|
|
5
|
-
interface TurtleDefPlus extends TurtleDef, Filtered {
|
|
6
|
-
}
|
|
7
|
-
declare class StageWriter {
|
|
8
|
-
withs: string[];
|
|
9
|
-
udfs: string[];
|
|
10
|
-
pdts: string[];
|
|
11
|
-
stagePrefix: string;
|
|
12
|
-
parent: StageWriter | undefined;
|
|
13
|
-
constructor(parent: StageWriter | undefined);
|
|
14
|
-
getName(id: number): string;
|
|
15
|
-
root(): StageWriter;
|
|
16
|
-
addStage(sql: string): string;
|
|
17
|
-
addUDF(stageWriter: StageWriter, dialect: Dialect): string;
|
|
18
|
-
addPDT(baseName: string, dialect: Dialect): string;
|
|
19
|
-
combineStages(includeLastStage: boolean): {
|
|
20
|
-
sql: string;
|
|
21
|
-
lastStageName: string | undefined;
|
|
22
|
-
};
|
|
23
|
-
/** emit the SQL for all the stages. */
|
|
24
|
-
generateSQLStages(): string;
|
|
25
|
-
}
|
|
26
|
-
declare type QuerySomething = QueryField | QueryStruct | QueryTurtle;
|
|
27
|
-
declare class GenerateState {
|
|
28
|
-
whereSQL?: string;
|
|
29
|
-
applyValue?: string;
|
|
30
|
-
withWhere(s?: string): GenerateState;
|
|
31
|
-
withApply(s: string): GenerateState;
|
|
32
|
-
}
|
|
33
|
-
declare abstract class QueryNode {
|
|
34
|
-
fieldDef: FieldDef;
|
|
35
|
-
constructor(fieldDef: FieldDef);
|
|
36
|
-
getIdentifier(): string;
|
|
37
|
-
getChildByName(_name: string): QuerySomething | undefined;
|
|
38
|
-
}
|
|
39
|
-
declare class QueryField extends QueryNode {
|
|
40
|
-
fieldDef: FieldDef;
|
|
41
|
-
parent: QueryStruct;
|
|
42
|
-
constructor(fieldDef: FieldDef, parent: QueryStruct);
|
|
43
|
-
mayNeedUniqueKey(): boolean;
|
|
44
|
-
getJoinableParent(): QueryStruct;
|
|
45
|
-
caseGroup(groupSets: number[], s: string): string;
|
|
46
|
-
getFullOutputName(): string;
|
|
47
|
-
generateFieldFragment(resultSet: FieldInstanceResult, context: QueryStruct, expr: FieldFragment, state: GenerateState): string;
|
|
48
|
-
generateParameterFragment(resultSet: FieldInstanceResult, context: QueryStruct, expr: ParameterFragment, state: GenerateState): string;
|
|
49
|
-
generateFilterFragment(resultSet: FieldInstanceResult, context: QueryStruct, expr: FilterFragment, state: GenerateState): string;
|
|
50
|
-
generateDimFragment(resultSet: FieldInstanceResult, context: QueryStruct, expr: AggregateFragment, state: GenerateState): string;
|
|
51
|
-
generateDistinctKeyIfNecessary(resultSet: FieldInstanceResult, context: QueryStruct, structPath: string | undefined): string | undefined;
|
|
52
|
-
generateSumFragment(resultSet: FieldInstanceResult, context: QueryStruct, expr: AggregateFragment, state: GenerateState): string;
|
|
53
|
-
generateSymmetricFragment(resultSet: FieldInstanceResult, context: QueryStruct, expr: AggregateFragment, state: GenerateState): string;
|
|
54
|
-
generateAvgFragment(resultSet: FieldInstanceResult, context: QueryStruct, expr: AggregateFragment, state: GenerateState): string;
|
|
55
|
-
generateCountFragment(resultSet: FieldInstanceResult, context: QueryStruct, expr: AggregateFragment, state: GenerateState): string;
|
|
56
|
-
generateExpressionFromExpr(resultSet: FieldInstanceResult, context: QueryStruct, e: Expr, state?: GenerateState): string;
|
|
57
|
-
generateExpression(resultSet: FieldInstanceResult): string;
|
|
58
|
-
}
|
|
59
|
-
declare class QueryAtomicField extends QueryField {
|
|
60
|
-
includeInWildcard(): boolean;
|
|
61
|
-
isAggregate(): boolean;
|
|
62
|
-
getFilterList(): FilterExpression[];
|
|
63
|
-
}
|
|
64
|
-
declare class QueryFieldBoolean extends QueryAtomicField {
|
|
65
|
-
}
|
|
66
|
-
declare class QueryFieldStruct extends QueryAtomicField {
|
|
67
|
-
primaryKey: string;
|
|
68
|
-
constructor(fieldDef: FieldDef, parent: QueryStruct, primaryKey: string);
|
|
69
|
-
getName(): string;
|
|
70
|
-
getAsJoinedStructDef(foreignKeyName: string): StructDef;
|
|
71
|
-
}
|
|
72
|
-
declare type FieldUsage = {
|
|
73
|
-
type: "result";
|
|
74
|
-
resultIndex: number;
|
|
75
|
-
} | {
|
|
76
|
-
type: "where";
|
|
77
|
-
} | {
|
|
78
|
-
type: "dependant";
|
|
79
|
-
};
|
|
80
|
-
declare type FieldInstanceType = "field" | "query";
|
|
81
|
-
interface FieldInstance {
|
|
82
|
-
type: FieldInstanceType;
|
|
83
|
-
groupSet: number;
|
|
84
|
-
root(): FieldInstanceResultRoot;
|
|
85
|
-
}
|
|
86
|
-
declare class FieldInstanceField implements FieldInstance {
|
|
87
|
-
type: FieldInstanceType;
|
|
88
|
-
f: QueryField;
|
|
89
|
-
fieldUsage: FieldUsage;
|
|
90
|
-
groupSet: number;
|
|
91
|
-
parent: FieldInstanceResult;
|
|
92
|
-
constructor(f: QueryField, fieldUsage: FieldUsage, parent: FieldInstanceResult);
|
|
93
|
-
root(): FieldInstanceResultRoot;
|
|
94
|
-
}
|
|
95
|
-
declare type RepeatedResultType = "nested" | "inline_all_numbers" | "inline";
|
|
96
|
-
declare class FieldInstanceResult implements FieldInstance {
|
|
97
|
-
type: FieldInstanceType;
|
|
98
|
-
allFields: Map<string, FieldInstance>;
|
|
99
|
-
groupSet: number;
|
|
100
|
-
depth: number;
|
|
101
|
-
parent: FieldInstanceResult | undefined;
|
|
102
|
-
childGroups: number[];
|
|
103
|
-
turtleDef: TurtleDef;
|
|
104
|
-
firstSegment: PipeSegment;
|
|
105
|
-
hasHaving: boolean;
|
|
106
|
-
constructor(turtleDef: TurtleDef, parent: FieldInstanceResult | undefined);
|
|
107
|
-
addField(as: string, field: QueryField, usage: FieldUsage): void;
|
|
108
|
-
add(name: string, f: FieldInstance): void;
|
|
109
|
-
hasField(name: string): boolean;
|
|
110
|
-
getField(name: string): FieldInstanceField;
|
|
111
|
-
getFieldByNumber(index: number): {
|
|
112
|
-
name: string;
|
|
113
|
-
fif: FieldInstanceField;
|
|
114
|
-
};
|
|
115
|
-
computeGroups(nextGroupSetNumber: number, depth: number): {
|
|
116
|
-
nextGroupSetNumber: number;
|
|
117
|
-
maxDepth: number;
|
|
118
|
-
children: number[];
|
|
119
|
-
isComplex: boolean;
|
|
120
|
-
};
|
|
121
|
-
fields(fn?: undefined | ((field: FieldInstanceField) => boolean)): FieldInstanceField[];
|
|
122
|
-
fieldNames(fn: undefined | ((field: FieldInstanceField) => boolean)): string[];
|
|
123
|
-
getRepeatedResultType(): RepeatedResultType;
|
|
124
|
-
structs(): FieldInstanceResult[];
|
|
125
|
-
selectStructs(result: FieldInstanceResult[], fn: (result: FieldInstanceResult) => boolean): FieldInstanceResult[];
|
|
126
|
-
calculateDefaultOrderBy(): OrderBy[];
|
|
127
|
-
addStructToJoin(qs: QueryStruct, query: QueryQuery, mayNeedUniqueKey: boolean, joinStack: string[]): void;
|
|
128
|
-
findJoins(query: QueryQuery): void;
|
|
129
|
-
root(): FieldInstanceResultRoot;
|
|
130
|
-
}
|
|
131
|
-
declare class FieldInstanceResultRoot extends FieldInstanceResult {
|
|
132
|
-
joins: Map<string, JoinInstance>;
|
|
133
|
-
havings: AndChain;
|
|
134
|
-
constructor(turtleDef: TurtleDef);
|
|
135
|
-
root(): FieldInstanceResultRoot;
|
|
136
|
-
calculateSymmetricAggregates(): void;
|
|
137
|
-
}
|
|
138
|
-
declare class JoinInstance {
|
|
139
|
-
mayNeedUniqueKey: boolean;
|
|
140
|
-
makeUniqueKey: boolean;
|
|
141
|
-
leafiest: boolean;
|
|
142
|
-
parent: JoinInstance | undefined;
|
|
143
|
-
queryStruct: QueryStruct;
|
|
144
|
-
joinFilterConditions?: QueryFieldBoolean[];
|
|
145
|
-
alias: string;
|
|
146
|
-
children: JoinInstance[];
|
|
147
|
-
constructor(queryStruct: QueryStruct, alias: string, parent: JoinInstance | undefined);
|
|
148
|
-
parentRelationship(): "root" | JoinRelationship;
|
|
149
|
-
getDialectFieldList(): DialectFieldList;
|
|
150
|
-
}
|
|
151
|
-
/** nested query */
|
|
152
|
-
declare class QueryTurtle extends QueryField {
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Used by the translator to get the output StructDef of a pipe segment
|
|
156
|
-
*
|
|
157
|
-
* half translated to the new world of types ..
|
|
158
|
-
*/
|
|
159
|
-
export declare class Segment {
|
|
160
|
-
static nextStructDef(structDef: StructDef, segment: PipeSegment): StructDef;
|
|
161
|
-
}
|
|
162
|
-
declare type StageGroupMaping = {
|
|
163
|
-
fromGroup: number;
|
|
164
|
-
toGroup: number;
|
|
165
|
-
};
|
|
166
|
-
declare type StageOutputContext = {
|
|
167
|
-
sql: string[];
|
|
168
|
-
dimensionIndexes: number[];
|
|
169
|
-
fieldIndex: number;
|
|
170
|
-
groupsAggregated: StageGroupMaping[];
|
|
171
|
-
};
|
|
172
|
-
/** Query builder object. */
|
|
173
|
-
declare class QueryQuery extends QueryField {
|
|
174
|
-
fieldDef: TurtleDef;
|
|
175
|
-
firstSegment: PipeSegment;
|
|
176
|
-
prepared: boolean;
|
|
177
|
-
maxDepth: number;
|
|
178
|
-
maxGroupSet: number;
|
|
179
|
-
rootResult: FieldInstanceResultRoot;
|
|
180
|
-
resultStage: string | undefined;
|
|
181
|
-
stageWriter: StageWriter | undefined;
|
|
182
|
-
constructor(fieldDef: TurtleDef, parent: QueryStruct, stageWriter: StageWriter | undefined);
|
|
183
|
-
static makeQuery(fieldDef: TurtleDef, parentStruct: QueryStruct, stageWriter?: StageWriter | undefined): QueryQuery;
|
|
184
|
-
getFieldList(): QueryFieldDef[];
|
|
185
|
-
expandField(f: QueryFieldDef): {
|
|
186
|
-
as: string;
|
|
187
|
-
field: QuerySomething;
|
|
188
|
-
};
|
|
189
|
-
expandDependantField(resultStruct: FieldInstanceResult, fieldRef: FieldRef): void;
|
|
190
|
-
expandWildCardStruct(struct: QueryStruct, expandChildren: boolean, filter?: ((qf: QueryNode) => boolean) | undefined): string[];
|
|
191
|
-
expandWildCards(fields: QueryFieldDef[], filter?: ((qf: QueryNode) => boolean) | undefined): QueryFieldDef[];
|
|
192
|
-
addDependantPath(resultStruct: FieldInstanceResult, context: QueryStruct, path: string, mayNeedUniqueKey: boolean, joinStack: string[]): void;
|
|
193
|
-
addDependantExpr(resultStruct: FieldInstanceResult, context: QueryStruct, e: Expr, joinStack: string[]): void;
|
|
194
|
-
addDependancies(resultStruct: FieldInstanceResult, field: QueryField): void;
|
|
195
|
-
expandFields(resultStruct: FieldInstanceResult): void;
|
|
196
|
-
expandFilters(resultStruct: FieldInstanceResult): void;
|
|
197
|
-
generateSQLFilters(resultStruct: FieldInstanceResult, which: "where" | "having", filterList?: FilterExpression[] | undefined): AndChain;
|
|
198
|
-
prepare(_stageWriter: StageWriter | undefined): void;
|
|
199
|
-
getResultMetadata(fi: FieldInstance): ResultStructMetadataDef | ResultMetadataDef | undefined;
|
|
200
|
-
/** returns a fields and primary key of a struct for this query */
|
|
201
|
-
getResultStructDef(resultStruct?: FieldInstanceResult, isRoot?: boolean): StructDef;
|
|
202
|
-
generateSQLJoinBlock(stageWriter: StageWriter, ji: JoinInstance): string;
|
|
203
|
-
generateSQLJoins(stageWriter: StageWriter): string;
|
|
204
|
-
genereateSQLOrderBy(queryDef: QuerySegment, resultStruct: FieldInstanceResult): string;
|
|
205
|
-
generateSimpleSQL(stageWriter: StageWriter): string;
|
|
206
|
-
generateStage0Fields(resultSet: FieldInstanceResult, output: StageOutputContext, stageWriter: StageWriter): void;
|
|
207
|
-
generateSQLWhereChildren(resultStruct: FieldInstanceResult): AndChain;
|
|
208
|
-
generateSQLWhereTurtled(): string;
|
|
209
|
-
generateSQLHavingLimit(stageWriter: StageWriter, lastStageName: string): string;
|
|
210
|
-
generateSQLStage0(stageWriter: StageWriter): string;
|
|
211
|
-
generateDepthNFields(depth: number, resultSet: FieldInstanceResult, output: StageOutputContext, stageWriter: StageWriter): void;
|
|
212
|
-
generateSQLDepthN(depth: number, stageWriter: StageWriter, stageName: string): string;
|
|
213
|
-
genereateSQLCombineTurtles(stageWriter: StageWriter, stage0Name: string): string;
|
|
214
|
-
generateTurtleSQL(resultStruct: FieldInstanceResult, stageWriter: StageWriter): string;
|
|
215
|
-
generateTurtlePipelineSQL(fi: FieldInstanceResult, stageWriter: StageWriter): {
|
|
216
|
-
structDef: StructDef;
|
|
217
|
-
hasPipeline: boolean;
|
|
218
|
-
};
|
|
219
|
-
generateComplexSQL(stageWriter: StageWriter): string;
|
|
220
|
-
generateSQL(stageWriter: StageWriter): string;
|
|
221
|
-
toMalloy(): string;
|
|
222
|
-
generateSQLFromPipeline(stageWriter: StageWriter): {
|
|
223
|
-
lastStageName: string;
|
|
224
|
-
outputStruct: StructDef;
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
/** Structure object as it is used to build a query */
|
|
228
|
-
declare class QueryStruct extends QueryNode {
|
|
229
|
-
fieldDef: StructDef;
|
|
230
|
-
parent: QueryStruct | undefined;
|
|
231
|
-
model: QueryModel;
|
|
232
|
-
nameMap: Map<string, QuerySomething>;
|
|
233
|
-
pathAliasMap: Map<string, string>;
|
|
234
|
-
dialect: Dialect;
|
|
235
|
-
connectionName: string;
|
|
236
|
-
constructor(fieldDef: StructDef, parent: {
|
|
237
|
-
struct: QueryStruct;
|
|
238
|
-
} | {
|
|
239
|
-
model: QueryModel;
|
|
240
|
-
});
|
|
241
|
-
parameters(): Record<string, Parameter>;
|
|
242
|
-
addFieldsFromFieldList(fields: FieldDef[]): void;
|
|
243
|
-
getAliasIdentifier(): string;
|
|
244
|
-
getAsQueryField(): QueryFieldStruct;
|
|
245
|
-
getIdentifier(): string;
|
|
246
|
-
getFullOutputName(): string;
|
|
247
|
-
needsSymetricCalculation(resultSet: FieldInstanceResult): boolean;
|
|
248
|
-
getJoinableParent(): QueryStruct;
|
|
249
|
-
addFieldToNameMap(as: string, n: QuerySomething): void;
|
|
250
|
-
/** the the primary key or throw an error. */
|
|
251
|
-
getPrimaryKeyField(fieldDef: FieldDef): QueryAtomicField;
|
|
252
|
-
/**
|
|
253
|
-
* called after all structure has been loaded. Examine this structure to see
|
|
254
|
-
* if if it is based on a query and if it is, add the output fields (unless
|
|
255
|
-
* they exist) to the structure.
|
|
256
|
-
*/
|
|
257
|
-
resolveQueryFields(): void;
|
|
258
|
-
getModel(): QueryModel;
|
|
259
|
-
setParent(parent: {
|
|
260
|
-
struct: QueryStruct;
|
|
261
|
-
} | {
|
|
262
|
-
model: QueryModel;
|
|
263
|
-
}): void;
|
|
264
|
-
/** makes a new queryable field object from a fieldDef */
|
|
265
|
-
makeQueryField(field: FieldDef): QueryField;
|
|
266
|
-
/**
|
|
267
|
-
* return a field if it exists, make one if we are passed a field definition.
|
|
268
|
-
*/
|
|
269
|
-
getOrMakeField(fieldRef: FieldRef): QuerySomething;
|
|
270
|
-
/** returns a dimension for the given name or make one. */
|
|
271
|
-
getOrMakeDimension(fieldRef: FieldRef): QueryAtomicField;
|
|
272
|
-
structSourceSQL(stageWriter: StageWriter): string;
|
|
273
|
-
root(): QueryStruct;
|
|
274
|
-
primaryKey(): QueryAtomicField | undefined;
|
|
275
|
-
/** get the componennts of a field path */
|
|
276
|
-
static resolvePath(name: string): string[];
|
|
277
|
-
getChildByName(name: string): QuerySomething | undefined;
|
|
278
|
-
/** convert a name into a field reference */
|
|
279
|
-
getFieldByName(name: string): QuerySomething;
|
|
280
|
-
getQueryFieldByName(name: string): QuerySomething;
|
|
281
|
-
getDimensionOrMeasureByName(name: string): QueryAtomicField;
|
|
282
|
-
/** returns a query object for the given name */
|
|
283
|
-
getDimensionByName(name: string): QueryAtomicField;
|
|
284
|
-
/** returns a query object for the given name */
|
|
285
|
-
getStructByName(name: string): QueryStruct;
|
|
286
|
-
getDistinctKey(): QueryAtomicField;
|
|
287
|
-
flattenTurtleDef(turtleDef: TurtleDef | TurtleDefPlus): TurtleDef;
|
|
288
|
-
}
|
|
289
|
-
/** the resulting SQL and the shape of the data at each stage of the pipeline */
|
|
290
|
-
interface QueryResults {
|
|
291
|
-
lastStageName: string;
|
|
292
|
-
stageWriter: StageWriter;
|
|
293
|
-
structs: StructDef[];
|
|
294
|
-
malloy: string;
|
|
295
|
-
connectionName: string;
|
|
296
|
-
}
|
|
297
|
-
/** start here */
|
|
298
|
-
export declare class QueryModel {
|
|
299
|
-
dialect: Dialect;
|
|
300
|
-
modelDef: ModelDef | undefined;
|
|
301
|
-
structs: Map<string, QueryStruct>;
|
|
302
|
-
constructor(modelDef: ModelDef | undefined);
|
|
303
|
-
loadModelFromDef(modelDef: ModelDef): void;
|
|
304
|
-
parseQueryPath(name: string): {
|
|
305
|
-
struct: QueryStruct;
|
|
306
|
-
queryName: string;
|
|
307
|
-
};
|
|
308
|
-
getStructByName(name: string): QueryStruct;
|
|
309
|
-
getStructFromRef(structRef: StructRef): QueryStruct;
|
|
310
|
-
loadQuery(query: Query, stageWriter: StageWriter | undefined, emitFinalStage?: boolean): QueryResults;
|
|
311
|
-
compileQuery(query: Query): CompiledQuery;
|
|
312
|
-
}
|
|
313
|
-
export {};
|