@powersync/service-sync-rules 0.31.1 → 0.32.0
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/SqlSyncRules.d.ts +0 -7
- package/dist/SqlSyncRules.js +0 -1
- package/dist/SqlSyncRules.js.map +1 -1
- package/dist/SyncConfig.d.ts +5 -2
- package/dist/SyncConfig.js +6 -9
- package/dist/SyncConfig.js.map +1 -1
- package/dist/compatibility.d.ts +2 -1
- package/dist/compatibility.js +1 -0
- package/dist/compatibility.js.map +1 -1
- package/dist/compiler/compiler.d.ts +4 -1
- package/dist/compiler/compiler.js +15 -2
- package/dist/compiler/compiler.js.map +1 -1
- package/dist/compiler/detect_dangerous_parameters.d.ts +10 -0
- package/dist/compiler/detect_dangerous_parameters.js +84 -0
- package/dist/compiler/detect_dangerous_parameters.js.map +1 -0
- package/dist/compiler/expression.d.ts +15 -3
- package/dist/compiler/expression.js +3 -2
- package/dist/compiler/expression.js.map +1 -1
- package/dist/compiler/filter.js +4 -2
- package/dist/compiler/filter.js.map +1 -1
- package/dist/compiler/filter_simplifier.js +5 -2
- package/dist/compiler/filter_simplifier.js.map +1 -1
- package/dist/compiler/ir_to_sync_plan.d.ts +4 -2
- package/dist/compiler/ir_to_sync_plan.js +16 -9
- package/dist/compiler/ir_to_sync_plan.js.map +1 -1
- package/dist/compiler/parser.js +3 -2
- package/dist/compiler/parser.js.map +1 -1
- package/dist/compiler/querier_graph.d.ts +2 -1
- package/dist/compiler/querier_graph.js +23 -9
- package/dist/compiler/querier_graph.js.map +1 -1
- package/dist/compiler/rows.d.ts +1 -2
- package/dist/compiler/rows.js +2 -7
- package/dist/compiler/rows.js.map +1 -1
- package/dist/compiler/sqlite.d.ts +2 -0
- package/dist/compiler/sqlite.js +60 -39
- package/dist/compiler/sqlite.js.map +1 -1
- package/dist/compiler/table.d.ts +15 -0
- package/dist/compiler/table.js +50 -9
- package/dist/compiler/table.js.map +1 -1
- package/dist/from_yaml.d.ts +0 -4
- package/dist/from_yaml.js +18 -10
- package/dist/from_yaml.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/json_schema.js +1 -4
- package/dist/json_schema.js.map +1 -1
- package/dist/schema-generators/DartSchemaGenerator.d.ts +0 -9
- package/dist/schema-generators/DartSchemaGenerator.js +0 -55
- package/dist/schema-generators/DartSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/DotNetSchemaGenerator.js +21 -28
- package/dist/schema-generators/DotNetSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/generators.d.ts +1 -2
- package/dist/schema-generators/generators.js +1 -2
- package/dist/schema-generators/generators.js.map +1 -1
- package/dist/sync_plan/engine/javascript.js +13 -2
- package/dist/sync_plan/engine/javascript.js.map +1 -1
- package/dist/sync_plan/engine/sqlite.js +2 -1
- package/dist/sync_plan/engine/sqlite.js.map +1 -1
- package/dist/sync_plan/evaluator/index.d.ts +3 -1
- package/dist/sync_plan/evaluator/index.js +3 -1
- package/dist/sync_plan/evaluator/index.js.map +1 -1
- package/dist/sync_plan/evaluator/table_processor_to_sql.js +0 -9
- package/dist/sync_plan/evaluator/table_processor_to_sql.js.map +1 -1
- package/dist/sync_plan/plan.d.ts +16 -6
- package/dist/sync_plan/serialize.d.ts +14 -9
- package/dist/sync_plan/serialize.js +30 -11
- package/dist/sync_plan/serialize.js.map +1 -1
- package/package.json +2 -1
- package/schema/sync_rules.json +1 -4
package/dist/SqlSyncRules.d.ts
CHANGED
|
@@ -11,13 +11,6 @@ export interface SyncRulesOptions {
|
|
|
11
11
|
*/
|
|
12
12
|
defaultSchema: string;
|
|
13
13
|
throwOnError?: boolean;
|
|
14
|
-
/**
|
|
15
|
-
* Whether to allow the option of using the new sync compiler.
|
|
16
|
-
*
|
|
17
|
-
* This is currently disabled outside of tests because the format of sync plans is still unstable and we can't support
|
|
18
|
-
* deployments based on it yet. Once we have a stable sync plan, this option can be removed.
|
|
19
|
-
*/
|
|
20
|
-
allowNewSyncCompiler?: boolean;
|
|
21
14
|
}
|
|
22
15
|
export interface RequestedStream {
|
|
23
16
|
/**
|
package/dist/SqlSyncRules.js
CHANGED
|
@@ -22,7 +22,6 @@ export class SqlSyncRules extends SyncConfig {
|
|
|
22
22
|
static fromYaml(yaml, options) {
|
|
23
23
|
const parser = new SyncConfigFromYaml({
|
|
24
24
|
throwOnError: options.throwOnError ?? true,
|
|
25
|
-
allowNewSyncCompiler: options.allowNewSyncCompiler ?? false,
|
|
26
25
|
schema: options.schema,
|
|
27
26
|
defaultSchema: options.defaultSchema
|
|
28
27
|
}, yaml);
|
package/dist/SqlSyncRules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlSyncRules.js","sourceRoot":"","sources":["../src/SqlSyncRules.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"SqlSyncRules.js","sourceRoot":"","sources":["../src/SqlSyncRules.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAqDpD,MAAM,OAAO,YAAa,SAAQ,UAAU;IAC1C,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,OAAyB;QACrD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3C,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,eAAe,EAAE,CAAC;gBACjC,OAAO,CAAC,CAAC,MAAM,CAAC;YAClB,CAAC;iBAAM,IAAI,CAAC,YAAY,SAAS,EAAE,CAAC;gBAClC,OAAO,CAAC,CAAC,CAAC,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,OAAyB;QACrD,MAAM,MAAM,GAAG,IAAI,kBAAkB,CACnC;YACE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI;YAC1C,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,EACD,IAAI,CACL,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;CACF"}
|
package/dist/SyncConfig.d.ts
CHANGED
|
@@ -24,9 +24,12 @@ export declare abstract class SyncConfig {
|
|
|
24
24
|
/**
|
|
25
25
|
* Hydrate the sync rule definitions with persisted state into runnable sync rules.
|
|
26
26
|
*
|
|
27
|
-
*
|
|
27
|
+
* Note: versionedBucketIds is not checked here: It is set at a higher level based
|
|
28
|
+
* on the storage version of the persisted sync rules, and used in hydrationState.
|
|
29
|
+
*
|
|
30
|
+
* @param params.hydrationState Transforms bucket ids based on persisted state.
|
|
28
31
|
*/
|
|
29
|
-
hydrate(params
|
|
32
|
+
hydrate(params: CreateSourceParams): HydratedSyncRules;
|
|
30
33
|
applyRowContext<MaybeToast extends undefined = never>(source: SqliteRow<SqliteInputValue | MaybeToast>): SqliteRow<SqliteValue | MaybeToast>;
|
|
31
34
|
protected writeSourceTables(sourceTables: Map<String, TablePattern>): void;
|
|
32
35
|
getSourceTables(): TablePattern[];
|
package/dist/SyncConfig.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { CompatibilityContext
|
|
1
|
+
import { CompatibilityContext } from './compatibility.js';
|
|
2
2
|
import { HydratedSyncRules } from './HydratedSyncRules.js';
|
|
3
|
-
import { DEFAULT_HYDRATION_STATE } from './HydrationState.js';
|
|
4
3
|
import { applyRowContext } from './utils.js';
|
|
5
4
|
/**
|
|
6
5
|
* A class describing how the sync process has been configured (i.e. which buckets and parameters to create and how to
|
|
@@ -22,17 +21,15 @@ export class SyncConfig {
|
|
|
22
21
|
/**
|
|
23
22
|
* Hydrate the sync rule definitions with persisted state into runnable sync rules.
|
|
24
23
|
*
|
|
25
|
-
*
|
|
24
|
+
* Note: versionedBucketIds is not checked here: It is set at a higher level based
|
|
25
|
+
* on the storage version of the persisted sync rules, and used in hydrationState.
|
|
26
|
+
*
|
|
27
|
+
* @param params.hydrationState Transforms bucket ids based on persisted state.
|
|
26
28
|
*/
|
|
27
29
|
hydrate(params) {
|
|
28
|
-
let hydrationState = params?.hydrationState;
|
|
29
|
-
if (hydrationState == null || !this.compatibility.isEnabled(CompatibilityOption.versionedBucketIds)) {
|
|
30
|
-
hydrationState = DEFAULT_HYDRATION_STATE;
|
|
31
|
-
}
|
|
32
|
-
const resolvedParams = { hydrationState };
|
|
33
30
|
return new HydratedSyncRules({
|
|
34
31
|
definition: this,
|
|
35
|
-
createParams:
|
|
32
|
+
createParams: params,
|
|
36
33
|
bucketDataSources: this.bucketDataSources,
|
|
37
34
|
bucketParameterIndexLookupCreators: this.bucketParameterLookupSources,
|
|
38
35
|
eventDescriptors: this.eventDescriptors,
|
package/dist/SyncConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncConfig.js","sourceRoot":"","sources":["../src/SyncConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"SyncConfig.js","sourceRoot":"","sources":["../src/SyncConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/compatibility.d.ts
CHANGED
package/dist/compatibility.js
CHANGED
|
@@ -2,6 +2,7 @@ export var CompatibilityEdition;
|
|
|
2
2
|
(function (CompatibilityEdition) {
|
|
3
3
|
CompatibilityEdition[CompatibilityEdition["LEGACY"] = 1] = "LEGACY";
|
|
4
4
|
CompatibilityEdition[CompatibilityEdition["SYNC_STREAMS"] = 2] = "SYNC_STREAMS";
|
|
5
|
+
CompatibilityEdition[CompatibilityEdition["COMPILED_STREAMS"] = 3] = "COMPILED_STREAMS";
|
|
5
6
|
})(CompatibilityEdition || (CompatibilityEdition = {}));
|
|
6
7
|
export class TimeValuePrecision {
|
|
7
8
|
name;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../src/compatibility.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../src/compatibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,9 @@ export interface SyncStreamsCompilerOptions {
|
|
|
20
20
|
*/
|
|
21
21
|
schema?: SourceSchema;
|
|
22
22
|
}
|
|
23
|
+
export interface ParseStreamOptions extends StreamOptions {
|
|
24
|
+
warnOnDangerousParameter: boolean;
|
|
25
|
+
}
|
|
23
26
|
/**
|
|
24
27
|
* State for compiling sync streams.
|
|
25
28
|
*
|
|
@@ -54,7 +57,7 @@ export declare class SyncStreamsCompiler {
|
|
|
54
57
|
*
|
|
55
58
|
* @param options Name, priority and `auto_subscribe` state for the stream.
|
|
56
59
|
*/
|
|
57
|
-
stream(options:
|
|
60
|
+
stream(options: ParseStreamOptions): IndividualSyncStreamCompiler;
|
|
58
61
|
}
|
|
59
62
|
/**
|
|
60
63
|
* Utility for compiling a single sync stream.
|
|
@@ -5,6 +5,7 @@ import { QuerierGraphBuilder } from './querier_graph.js';
|
|
|
5
5
|
import { StreamQueryParser } from './parser.js';
|
|
6
6
|
import { NodeLocations } from './expression.js';
|
|
7
7
|
import { SqlScope } from './scope.js';
|
|
8
|
+
import { DangerousParameterDetector } from './detect_dangerous_parameters.js';
|
|
8
9
|
/**
|
|
9
10
|
* State for compiling sync streams.
|
|
10
11
|
*
|
|
@@ -55,7 +56,11 @@ export class SyncStreamsCompiler {
|
|
|
55
56
|
* @param options Name, priority and `auto_subscribe` state for the stream.
|
|
56
57
|
*/
|
|
57
58
|
stream(options) {
|
|
58
|
-
const builder = new QuerierGraphBuilder(this,
|
|
59
|
+
const builder = new QuerierGraphBuilder(this, {
|
|
60
|
+
name: options.name,
|
|
61
|
+
priority: options.priority,
|
|
62
|
+
isSubscribedByDefault: options.isSubscribedByDefault
|
|
63
|
+
});
|
|
59
64
|
const rootScope = new SqlScope({});
|
|
60
65
|
return {
|
|
61
66
|
registerCommonTableExpression: (name, cte) => {
|
|
@@ -78,7 +83,15 @@ export class SyncStreamsCompiler {
|
|
|
78
83
|
builder.process(query, errors);
|
|
79
84
|
}
|
|
80
85
|
},
|
|
81
|
-
finish: () =>
|
|
86
|
+
finish: () => {
|
|
87
|
+
const buckets = builder.finish();
|
|
88
|
+
if (options.warnOnDangerousParameter) {
|
|
89
|
+
const detector = new DangerousParameterDetector();
|
|
90
|
+
for (const bucket of buckets) {
|
|
91
|
+
detector.processResolver(bucket);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
82
95
|
};
|
|
83
96
|
}
|
|
84
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,EAAqB,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { StreamResolver } from './bucket_resolver.js';
|
|
2
|
+
/**
|
|
3
|
+
* Detects streams exclusively using unauthenticated parameters (derived from the subscription or global request data).
|
|
4
|
+
*
|
|
5
|
+
* We emit a warning for those streams since the developer might not be aware that these parameters aren't validated.
|
|
6
|
+
*/
|
|
7
|
+
export declare class DangerousParameterDetector {
|
|
8
|
+
#private;
|
|
9
|
+
processResolver(resolver: StreamResolver): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { LookupResultParameterValue, ParameterLookup, RequestParameterValue } from './bucket_resolver.js';
|
|
2
|
+
import { ConnectionParameter } from './expression.js';
|
|
3
|
+
/**
|
|
4
|
+
* Detects streams exclusively using unauthenticated parameters (derived from the subscription or global request data).
|
|
5
|
+
*
|
|
6
|
+
* We emit a warning for those streams since the developer might not be aware that these parameters aren't validated.
|
|
7
|
+
*/
|
|
8
|
+
export class DangerousParameterDetector {
|
|
9
|
+
processResolver(resolver) {
|
|
10
|
+
let classification = this.#classifyParameters(resolver.resolvedBucket.instantiation);
|
|
11
|
+
if (classification == 'neutral' && resolver.requestFilters) {
|
|
12
|
+
classification = this.#mergeClassification(resolver.requestFilters.map((f) => this.#classifyExpression(f.expression)));
|
|
13
|
+
}
|
|
14
|
+
if (classification == 'authenticated' || classification == 'neutral') {
|
|
15
|
+
// We have at least one authenticated parameter, all good.
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
// Unauthenticated parameter, warn.
|
|
20
|
+
const { location, errors } = classification.unauthenticated;
|
|
21
|
+
errors.report('Clients can send any value for this unauthenticated parameter, so this is unsuitable for authorization. Consider further constraining this with an authenticated parameter.', location, { isWarning: true });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
#classifyParameter(parameter) {
|
|
25
|
+
if (parameter instanceof RequestParameterValue) {
|
|
26
|
+
return this.#classifyExpression(parameter.expression.expression);
|
|
27
|
+
}
|
|
28
|
+
else if (parameter instanceof LookupResultParameterValue) {
|
|
29
|
+
const lookup = parameter.lookup;
|
|
30
|
+
if (lookup instanceof ParameterLookup) {
|
|
31
|
+
return this.#classifyParameters(lookup.instantiation);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
return this.#mergeClassification(lookup.tableValuedFunction.parameters.map((e) => this.#classifyExpression(e.expression)));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// Intersection parameter, this is authenticated if any inner value is.
|
|
39
|
+
return this.#classifyParameters(parameter.inner);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
#classifyParameters(parameters) {
|
|
43
|
+
return this.#mergeClassification(parameters.map((p) => this.#classifyParameter(p)));
|
|
44
|
+
}
|
|
45
|
+
#classifyExpression(expr) {
|
|
46
|
+
let isAuthenticated = false;
|
|
47
|
+
let anyUnauthenticatedExpr = null;
|
|
48
|
+
for (const instantiation of expr.instantiation) {
|
|
49
|
+
if (instantiation instanceof ConnectionParameter) {
|
|
50
|
+
if (instantiation.source == 'auth') {
|
|
51
|
+
isAuthenticated = true;
|
|
52
|
+
}
|
|
53
|
+
else if (anyUnauthenticatedExpr == null) {
|
|
54
|
+
anyUnauthenticatedExpr = {
|
|
55
|
+
location: instantiation.syntacticOrigin,
|
|
56
|
+
errors: expr.location.errors
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (anyUnauthenticatedExpr != null && !isAuthenticated) {
|
|
62
|
+
return { unauthenticated: anyUnauthenticatedExpr };
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
return 'authenticated';
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Merges an array of inner classifications, considering the array authenticatated if any element is.
|
|
70
|
+
*/
|
|
71
|
+
#mergeClassification(inner) {
|
|
72
|
+
let unauthenticated = null;
|
|
73
|
+
for (const classification of inner) {
|
|
74
|
+
if (classification == 'authenticated') {
|
|
75
|
+
return 'authenticated';
|
|
76
|
+
}
|
|
77
|
+
else if (unauthenticated == null && classification != 'neutral') {
|
|
78
|
+
unauthenticated = classification.unauthenticated;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return unauthenticated == null ? 'neutral' : { unauthenticated };
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=detect_dangerous_parameters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect_dangerous_parameters.js","sourceRoot":"","sources":["../../src/compiler/detect_dangerous_parameters.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { EqualsIgnoringResultSet } from './compatibility.js';
|
|
|
4
4
|
import { StableHasher } from './equality.js';
|
|
5
5
|
import { ConnectionParameterSource } from '../sync_plan/plan.js';
|
|
6
6
|
import { SqlExpression } from '../sync_plan/expression.js';
|
|
7
|
+
import { ParsingErrorListener } from './compiler.js';
|
|
7
8
|
/**
|
|
8
9
|
* An analyzed SQL expression tracking dependencies on non-static data (i.e. rows or connection sources).
|
|
9
10
|
*
|
|
@@ -37,7 +38,7 @@ export declare class SyncExpression implements EqualsIgnoringResultSet {
|
|
|
37
38
|
* expression.
|
|
38
39
|
*/
|
|
39
40
|
get instantiation(): readonly ExpressionInput[];
|
|
40
|
-
get location():
|
|
41
|
+
get location(): SourceLocation;
|
|
41
42
|
constructor(
|
|
42
43
|
/**
|
|
43
44
|
* The AST node backing {@link sql}.
|
|
@@ -72,6 +73,17 @@ export declare class ConnectionParameter implements EqualsIgnoringResultSet {
|
|
|
72
73
|
* in-memory map.
|
|
73
74
|
*/
|
|
74
75
|
export declare class NodeLocations {
|
|
75
|
-
readonly sourceForNode: Map<SqlExpression<unknown>,
|
|
76
|
-
locationFor(source: SqlExpression<unknown>):
|
|
76
|
+
readonly sourceForNode: Map<SqlExpression<unknown>, SourceLocation>;
|
|
77
|
+
locationFor(source: SqlExpression<unknown>): SourceLocation;
|
|
78
|
+
}
|
|
79
|
+
export interface SourceLocation {
|
|
80
|
+
location: PGNode | NodeLocation;
|
|
81
|
+
/**
|
|
82
|
+
* An error reporter that can understand the given {@link location}.
|
|
83
|
+
*
|
|
84
|
+
* Because sync streams might be composed of multiple source statements (like common table expressions) that can
|
|
85
|
+
* ultimately only be fully analyzed together, this is necessary to ensure we can report errors on the correct source
|
|
86
|
+
* everywhere.
|
|
87
|
+
*/
|
|
88
|
+
errors: ParsingErrorListener;
|
|
77
89
|
}
|
|
@@ -112,11 +112,12 @@ export class ConnectionParameter {
|
|
|
112
112
|
export class NodeLocations {
|
|
113
113
|
sourceForNode = new Map();
|
|
114
114
|
locationFor(source) {
|
|
115
|
-
const
|
|
115
|
+
const resolved = this.sourceForNode.get(source);
|
|
116
|
+
const location = getLocation(resolved?.location);
|
|
116
117
|
if (location == null) {
|
|
117
118
|
throw new Error('Missing location');
|
|
118
119
|
}
|
|
119
|
-
return location;
|
|
120
|
+
return { location, errors: resolved.errors };
|
|
120
121
|
}
|
|
121
122
|
}
|
|
122
123
|
//# sourceMappingURL=expression.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../src/compiler/expression.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAI1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../src/compiler/expression.ts"],"names":[],"mappings":"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"}
|
package/dist/compiler/filter.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ColumnInRow, SyncExpression } from './expression.js';
|
|
2
|
+
import { BaseSourceResultSet } from './table.js';
|
|
2
3
|
import { expandNodeLocations } from '../errors.js';
|
|
3
4
|
export function isBaseTerm(value) {
|
|
4
5
|
return value instanceof SingleDependencyExpression || value instanceof EqualsClause;
|
|
@@ -51,7 +52,8 @@ export class SingleDependencyExpression {
|
|
|
51
52
|
let hasSubscriptionDependency = false;
|
|
52
53
|
for (const dependency of inputs) {
|
|
53
54
|
if (dependency instanceof ColumnInRow) {
|
|
54
|
-
if (
|
|
55
|
+
if (hasSubscriptionDependency ||
|
|
56
|
+
(resultSet != null && !BaseSourceResultSet.areCompatible(resultSet, dependency.resultSet))) {
|
|
55
57
|
return null;
|
|
56
58
|
}
|
|
57
59
|
resultSet = dependency.resultSet;
|
|
@@ -99,7 +101,7 @@ export class EqualsClause {
|
|
|
99
101
|
this.right = right;
|
|
100
102
|
}
|
|
101
103
|
get location() {
|
|
102
|
-
return expandNodeLocations([this.left.expression.location, this.right.expression.location]);
|
|
104
|
+
return expandNodeLocations([this.left.expression.location.location, this.right.expression.location.location]);
|
|
103
105
|
}
|
|
104
106
|
}
|
|
105
107
|
export class InvalidExpressionError extends Error {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/compiler/filter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAmB,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/compiler/filter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAmB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAmB,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAqBnD,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,KAAK,YAAY,0BAA0B,IAAI,KAAK,YAAY,YAAY,CAAC;AACtF,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,0BAA0B;IAC5B,UAAU,CAAiB;IACpC;;;;OAIG;IACM,SAAS,CAAyB;IAE3C;;OAEG;IACM,mBAAmB,CAAU;IAEtC,YAAY,UAAuD;QACjE,IAAI,UAAU,YAAY,cAAc,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,0BAA0B,CAAC,uBAAuB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAC7F,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,MAAM,IAAI,sBAAsB,CAAC,4EAA4E,CAAC,CAAC;YACjH,CAAC;YAED,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;YACxC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YACtC,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,mBAAmB,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,2BAA2B,CAAC,KAA8B;QACxD,OAAO,KAAK,YAAY,0BAA0B,IAAI,KAAK,CAAC,UAAU,CAAC,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtH,CAAC;IAED,qCAAqC,CAAC,MAAoB;QACxD,IAAI,CAAC,UAAU,CAAC,qCAAqC,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,uBAAuB,CAAC,MAAiC;QAC9D,IAAI,SAAS,GAA2B,IAAI,CAAC;QAC7C,IAAI,yBAAyB,GAAG,KAAK,CAAC;QAEtC,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;YAChC,IAAI,UAAU,YAAY,WAAW,EAAE,CAAC;gBACtC,IACE,yBAAyB;oBACzB,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,EAC1F,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;oBACtB,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,yBAAyB,GAAG,IAAI,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;IAChD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,0BAA0B;IAG3D,YAAY,UAAuD;QACjE,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,MAAM,IAAI,sBAAsB,CAAC,wCAAwC,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,0BAA0B;IAC/D,YAAY,UAAuD;QACjE,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,sBAAsB,CAAC,oCAAoC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAY;IAEZ;IACA;IAFX,YACW,IAAgC,EAChC,KAAiC;QADjC,SAAI,GAAJ,IAAI,CAA4B;QAChC,UAAK,GAAL,KAAK,CAA4B;IACzC,CAAC;IAEJ,IAAI,QAAQ;QACV,OAAO,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChH,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -110,9 +110,12 @@ export function composeExpressionNodes(locations, operator, terms) {
|
|
|
110
110
|
for (const additional of rest) {
|
|
111
111
|
inner = { type: 'binary', operator, left: inner, right: additional };
|
|
112
112
|
}
|
|
113
|
-
const location = expandNodeLocations(terms.map((e) => locations.locationFor(e)));
|
|
113
|
+
const location = expandNodeLocations(terms.map((e) => locations.locationFor(e).location));
|
|
114
114
|
if (location) {
|
|
115
|
-
locations.sourceForNode.set(inner,
|
|
115
|
+
locations.sourceForNode.set(inner, {
|
|
116
|
+
location,
|
|
117
|
+
errors: locations.locationFor(terms[0]).errors
|
|
118
|
+
});
|
|
116
119
|
}
|
|
117
120
|
return inner;
|
|
118
121
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter_simplifier.js","sourceRoot":"","sources":["../../src/compiler/filter_simplifier.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"filter_simplifier.js","sourceRoot":"","sources":["../../src/compiler/filter_simplifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,8 +33,10 @@ export declare class CompilerModelToSyncPlan {
|
|
|
33
33
|
private translatePointLookup;
|
|
34
34
|
/**
|
|
35
35
|
* @param expression The expression to translate.
|
|
36
|
-
* @param table The implicit table (from context) that columns are resolved against.
|
|
37
|
-
*
|
|
36
|
+
* @param table The implicit table (from context) that columns are resolved against. Null for querier expressions
|
|
37
|
+
* where no such table is available.
|
|
38
|
+
* @param tableValued Additional table-valued functions that are evaluated with the source table and can be
|
|
39
|
+
* referenced.
|
|
38
40
|
*/
|
|
39
41
|
private translateExpression;
|
|
40
42
|
private translateStreamResolver;
|
|
@@ -64,23 +64,28 @@ export class CompilerModelToSyncPlan {
|
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
66
|
translatePartitionKey(value, context) {
|
|
67
|
+
let sourceExpression;
|
|
68
|
+
// TODO: Unify scalar and table-valued partition keys in compiler IR?
|
|
67
69
|
if (value instanceof rows.ScalarPartitionKey) {
|
|
70
|
+
sourceExpression = value.expression.expression;
|
|
68
71
|
return { expr: this.translateExpression(value.expression.expression, context.syntacticSource) };
|
|
69
72
|
}
|
|
70
73
|
else if (value instanceof rows.TableValuedPartitionKey) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
+
sourceExpression = value.output.expression;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
throw new Error('Unhandled partition key');
|
|
74
78
|
}
|
|
75
|
-
|
|
79
|
+
return {
|
|
80
|
+
expr: this.translateExpression(sourceExpression, context.syntacticSource, context.addedFunctions)
|
|
81
|
+
};
|
|
76
82
|
}
|
|
77
83
|
translateAddedTableValuedFunctions(input, context) {
|
|
78
84
|
return input.map((fn) => {
|
|
79
85
|
return this.translateStatefulObject(fn, () => {
|
|
80
86
|
return {
|
|
81
87
|
functionName: fn.functionName,
|
|
82
|
-
functionInputs: fn.inputs.map((e) => this.translateExpression(e.expression, context.syntacticSource))
|
|
83
|
-
filters: fn.filters.map((e) => this.translateExpression(e.expression, fn.syntacticSource))
|
|
88
|
+
functionInputs: fn.inputs.map((e) => this.translateExpression(e.expression, context.syntacticSource))
|
|
84
89
|
};
|
|
85
90
|
});
|
|
86
91
|
});
|
|
@@ -126,15 +131,17 @@ export class CompilerModelToSyncPlan {
|
|
|
126
131
|
hashCode: hasher.buildHashCode(),
|
|
127
132
|
tableValuedFunctions: this.translateAddedTableValuedFunctions(value.addedFunctions, value),
|
|
128
133
|
outputs: value.result.map((e) => this.translateExpression(e.expression, value.syntacticSource, value.addedFunctions)),
|
|
129
|
-
filters: value.filters.map((e) => this.translateExpression(e.expression, value.syntacticSource)),
|
|
134
|
+
filters: value.filters.map((e) => this.translateExpression(e.expression, value.syntacticSource, value.addedFunctions)),
|
|
130
135
|
parameters: value.partitionBy.map((e) => this.translatePartitionKey(e, value))
|
|
131
136
|
};
|
|
132
137
|
});
|
|
133
138
|
}
|
|
134
139
|
/**
|
|
135
140
|
* @param expression The expression to translate.
|
|
136
|
-
* @param table The implicit table (from context) that columns are resolved against.
|
|
137
|
-
*
|
|
141
|
+
* @param table The implicit table (from context) that columns are resolved against. Null for querier expressions
|
|
142
|
+
* where no such table is available.
|
|
143
|
+
* @param tableValued Additional table-valued functions that are evaluated with the source table and can be
|
|
144
|
+
* referenced.
|
|
138
145
|
*/
|
|
139
146
|
translateExpression(expression, table, tableValued) {
|
|
140
147
|
const mapper = new MapSourceVisitor((value) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ir_to_sync_plan.js","sourceRoot":"","sources":["../../src/compiler/ir_to_sync_plan.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAY,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,WAAW,EAAmC,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"ir_to_sync_plan.js","sourceRoot":"","sources":["../../src/compiler/ir_to_sync_plan.ts"],"names":[],"mappings":"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"}
|
package/dist/compiler/parser.js
CHANGED
|
@@ -246,7 +246,7 @@ export class StreamQueryParser {
|
|
|
246
246
|
}
|
|
247
247
|
else {
|
|
248
248
|
// Table-valued functions may not be based on other table-valued functions, we only allow a single layer.
|
|
249
|
-
this.errors.report('Table-valued functions must depend on source tables.', parsed.expression.location);
|
|
249
|
+
this.errors.report('Table-valued functions must depend on source tables.', parsed.expression.location.location);
|
|
250
250
|
validArgs = false;
|
|
251
251
|
}
|
|
252
252
|
}
|
|
@@ -436,7 +436,8 @@ export class StreamQueryParser {
|
|
|
436
436
|
this.errors.report("This expression already references connection parameters, so it can't also reference row data unless the two are compared with an equals operator.", dependency.syntacticOrigin);
|
|
437
437
|
hadError = true;
|
|
438
438
|
}
|
|
439
|
-
else if (referencingResultSet != null &&
|
|
439
|
+
else if (referencingResultSet != null &&
|
|
440
|
+
!BaseSourceResultSet.areCompatible(referencingResultSet[0], dependency.resultSet)) {
|
|
440
441
|
const name = referencingResultSet[0].description;
|
|
441
442
|
this.errors.report(`This expression already references '${name}', so it can't also reference data from this row unless the two are compared with an equals operator.`, dependency.syntacticOrigin);
|
|
442
443
|
hadError = true;
|