@powersync/service-sync-rules 0.39.0 → 0.41.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/HydratedSyncConfig.d.ts +9 -2
- package/dist/HydratedSyncConfig.js +12 -1
- package/dist/HydratedSyncConfig.js.map +1 -1
- package/dist/HydrationState.d.ts +2 -0
- package/dist/HydrationState.js.map +1 -1
- package/dist/StorageVersion.js +2 -1
- package/dist/StorageVersion.js.map +1 -1
- package/dist/SyncConfig.d.ts +4 -3
- package/dist/SyncConfig.js +10 -11
- package/dist/SyncConfig.js.map +1 -1
- package/dist/TablePattern.d.ts +2 -0
- package/dist/TablePattern.js +18 -1
- package/dist/TablePattern.js.map +1 -1
- package/dist/compiler/bucket_resolver.d.ts +1 -0
- package/dist/compiler/bucket_resolver.js +22 -12
- package/dist/compiler/bucket_resolver.js.map +1 -1
- package/dist/compiler/compatibility.d.ts +38 -9
- package/dist/compiler/compatibility.js +81 -11
- package/dist/compiler/compatibility.js.map +1 -1
- package/dist/compiler/compiler.d.ts +81 -13
- package/dist/compiler/compiler.js +111 -15
- package/dist/compiler/compiler.js.map +1 -1
- package/dist/compiler/expression.d.ts +35 -12
- package/dist/compiler/expression.js +49 -13
- package/dist/compiler/expression.js.map +1 -1
- package/dist/compiler/filter.d.ts +4 -4
- package/dist/compiler/filter.js +7 -6
- package/dist/compiler/filter.js.map +1 -1
- package/dist/compiler/ir_to_sync_plan.d.ts +4 -2
- package/dist/compiler/ir_to_sync_plan.js +47 -37
- package/dist/compiler/ir_to_sync_plan.js.map +1 -1
- package/dist/compiler/parser.js +3 -3
- package/dist/compiler/parser.js.map +1 -1
- package/dist/compiler/querier_graph.js +45 -26
- package/dist/compiler/querier_graph.js.map +1 -1
- package/dist/compiler/rows.d.ts +23 -29
- package/dist/compiler/rows.js +83 -59
- package/dist/compiler/rows.js.map +1 -1
- package/dist/compiler/sqlite.d.ts +3 -2
- package/dist/compiler/sqlite.js +33 -3
- package/dist/compiler/sqlite.js.map +1 -1
- package/dist/compiler/table.d.ts +3 -2
- package/dist/compiler/table.js +9 -7
- package/dist/compiler/table.js.map +1 -1
- package/dist/events/CompiledEventSourceQuery.d.ts +51 -0
- package/dist/events/CompiledEventSourceQuery.js +119 -0
- package/dist/events/CompiledEventSourceQuery.js.map +1 -0
- package/dist/events/EventDescriptor.d.ts +26 -0
- package/dist/events/EventDescriptor.js +2 -0
- package/dist/events/EventDescriptor.js.map +1 -0
- package/dist/from_yaml.js +157 -189
- package/dist/from_yaml.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/json_schema.js +1 -1
- package/dist/json_schema.js.map +1 -1
- package/dist/sync_plan/engine/scalar_expression_engine.js +7 -0
- package/dist/sync_plan/engine/scalar_expression_engine.js.map +1 -1
- package/dist/sync_plan/evaluator/bucket_data_source.js +11 -52
- package/dist/sync_plan/evaluator/bucket_data_source.js.map +1 -1
- package/dist/sync_plan/evaluator/index.d.ts +2 -7
- package/dist/sync_plan/evaluator/index.js +6 -7
- package/dist/sync_plan/evaluator/index.js.map +1 -1
- package/dist/sync_plan/evaluator/parameter_evaluator.js +11 -7
- package/dist/sync_plan/evaluator/parameter_evaluator.js.map +1 -1
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js +2 -2
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js.map +1 -1
- package/dist/sync_plan/evaluator/row_projection.d.ts +22 -0
- package/dist/sync_plan/evaluator/row_projection.js +71 -0
- package/dist/sync_plan/evaluator/row_projection.js.map +1 -0
- package/dist/sync_plan/evaluator/table_processor_to_sql.d.ts +5 -2
- package/dist/sync_plan/evaluator/table_processor_to_sql.js +10 -0
- package/dist/sync_plan/evaluator/table_processor_to_sql.js.map +1 -1
- package/dist/sync_plan/plan.d.ts +49 -9
- package/dist/sync_plan/plan_equality_serialized.d.ts +12 -2
- package/dist/sync_plan/plan_equality_serialized.js +56 -0
- package/dist/sync_plan/plan_equality_serialized.js.map +1 -1
- package/dist/sync_plan/serialize.d.ts +54 -5
- package/dist/sync_plan/serialize.js +109 -19
- package/dist/sync_plan/serialize.js.map +1 -1
- package/dist/yaml_validation.d.ts +73 -0
- package/dist/yaml_validation.js +140 -0
- package/dist/yaml_validation.js.map +1 -0
- package/package.json +1 -1
- package/schema/sync_rules.json +3 -2
- package/dist/events/SqlEventDescriptor.d.ts +0 -20
- package/dist/events/SqlEventDescriptor.js +0 -51
- package/dist/events/SqlEventDescriptor.js.map +0 -1
- package/dist/events/SqlEventSourceQuery.d.ts +0 -20
- package/dist/events/SqlEventSourceQuery.js +0 -125
- package/dist/events/SqlEventSourceQuery.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BucketDataSource } from './BucketSource.js';
|
|
2
|
-
import { BucketSource, CompatibilityContext, EvaluatedParameters, EvaluatedRow, EvaluationError, GetBucketParameterQuerierResult, GetQuerierOptions, HydrateSyncConfigParams, ParameterIndexLookupCreator,
|
|
2
|
+
import { BucketSource, CompatibilityContext, EvaluatedParameters, EvaluatedRow, EvaluationError, GetBucketParameterQuerierResult, GetQuerierOptions, HydratedEventDescriptor, HydrateSyncConfigParams, ParameterIndexLookupCreator, SqliteInputValue, SqliteValue, SyncConfig, TablePattern } from './index.js';
|
|
3
3
|
import { SourceTableRef } from './SourceTableRef.js';
|
|
4
4
|
import { EvaluateRowOptions, SqliteRow } from './types.js';
|
|
5
5
|
export interface MatchingSources {
|
|
@@ -21,7 +21,14 @@ export declare class HydratedSyncConfig {
|
|
|
21
21
|
* These are used by queriers, and do not support merging across multiple SyncConfigs.
|
|
22
22
|
*/
|
|
23
23
|
private bucketSources;
|
|
24
|
-
eventDescriptors:
|
|
24
|
+
eventDescriptors: HydratedEventDescriptor[];
|
|
25
|
+
/**
|
|
26
|
+
* Hydrated events grouped by their source definition.
|
|
27
|
+
*
|
|
28
|
+
* Deduplication of events across definitions is left to the caller (storage resolves each event to its
|
|
29
|
+
* per-config assigned id and dedupes on that), so this keeps every definition's events intact for that.
|
|
30
|
+
*/
|
|
31
|
+
readonly eventDescriptorsByDefinition: Map<SyncConfig, HydratedEventDescriptor[]>;
|
|
25
32
|
/**
|
|
26
33
|
* Only a single compatibility context is supported across all merged SyncConfigs.
|
|
27
34
|
*/
|
|
@@ -17,6 +17,13 @@ export class HydratedSyncConfig {
|
|
|
17
17
|
*/
|
|
18
18
|
bucketSources = [];
|
|
19
19
|
eventDescriptors = [];
|
|
20
|
+
/**
|
|
21
|
+
* Hydrated events grouped by their source definition.
|
|
22
|
+
*
|
|
23
|
+
* Deduplication of events across definitions is left to the caller (storage resolves each event to its
|
|
24
|
+
* per-config assigned id and dedupes on that), so this keeps every definition's events intact for that.
|
|
25
|
+
*/
|
|
26
|
+
eventDescriptorsByDefinition = new Map();
|
|
20
27
|
/**
|
|
21
28
|
* Only a single compatibility context is supported across all merged SyncConfigs.
|
|
22
29
|
*/
|
|
@@ -59,7 +66,11 @@ export class HydratedSyncConfig {
|
|
|
59
66
|
this.bucketParameterLookupSources = uniqueBy(definitions.flatMap((definition) => definition.bucketParameterLookupSources), (source) => parameterLookupScopeKey(hydrationState.getParameterIndexLookupScope(source)));
|
|
60
67
|
this.innerEvaluateRow = mergeDataSources(this.hydrationInput, this.bucketDataSources).evaluateRow;
|
|
61
68
|
this.innerEvaluateParameterRow = mergeParameterIndexLookupCreators(this.hydrationInput, this.bucketParameterLookupSources).evaluateParameterRow;
|
|
62
|
-
this.eventDescriptors = definitions.flatMap((definition) =>
|
|
69
|
+
this.eventDescriptors = definitions.flatMap((definition) => {
|
|
70
|
+
const events = definition.eventDefinitions.map((event) => event.createEvaluator(this.hydrationInput));
|
|
71
|
+
this.eventDescriptorsByDefinition.set(definition, events);
|
|
72
|
+
return events;
|
|
73
|
+
});
|
|
63
74
|
if (definitions.length == 1) {
|
|
64
75
|
this.#bucketSourceDefinitions = definitions[0].bucketSources;
|
|
65
76
|
this.bucketSources = this.#bucketSourceDefinitions.map((source) => source.hydrate(this.hydrationInput));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HydratedSyncConfig.js","sourceRoot":"","sources":["../src/HydratedSyncConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,oBAAoB,
|
|
1
|
+
{"version":3,"file":"HydratedSyncConfig.js","sourceRoot":"","sources":["../src/HydratedSyncConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/HydrationState.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { BucketDataSource, ParameterIndexLookupCreator } from './BucketSource.js';
|
|
2
2
|
export type BucketDefinitionId = string;
|
|
3
3
|
export type ParameterIndexId = string;
|
|
4
|
+
/** Stream-local storage identity assigned to a replication event definition. */
|
|
5
|
+
export type EventDefinitionId = string;
|
|
4
6
|
export interface BucketDataScope {
|
|
5
7
|
/**
|
|
6
8
|
* The prefix is the bucket name before the parameters.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HydrationState.js","sourceRoot":"","sources":["../src/HydrationState.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HydrationState.js","sourceRoot":"","sources":["../src/HydrationState.ts"],"names":[],"mappings":"AA0DA;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACrD,oBAAoB,CAAC,MAAwB;QAC3C,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,UAAU;YAC/B,MAAM;SACP,CAAC;IACJ,CAAC;IACD,4BAA4B,CAAC,MAAmC;QAC9D,OAAO;YACL,GAAG,MAAM,CAAC,QAAQ;YAClB,MAAM;SACP,CAAC;IACJ,CAAC;CACF,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,OAAO;QACL,oBAAoB,CAAC,MAAwB;YAC3C,OAAO;gBACL,YAAY,EAAE,GAAG,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE;gBAC/C,MAAM;aACP,CAAC;QACJ,CAAC;QAED,4BAA4B,CAAC,MAAmC;YAC9D,kCAAkC;YAClC,OAAO;gBACL,GAAG,MAAM,CAAC,QAAQ;gBAClB,MAAM;aACP,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAkC;IACxE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
package/dist/StorageVersion.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export const STORAGE_VERSIONS = new Map([
|
|
2
2
|
// version 1 is supported by the storage modules, but cannot be used in sync config
|
|
3
3
|
[2, { version: 2, stable: true }],
|
|
4
|
-
[3, { version: 3, stable: false }]
|
|
4
|
+
[3, { version: 3, stable: false }],
|
|
5
|
+
[4, { version: 4, stable: true }]
|
|
5
6
|
]);
|
|
6
7
|
export const DEFAULT_STORAGE_VERSION = STORAGE_VERSIONS.get(2);
|
|
7
8
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageVersion.js","sourceRoot":"","sources":["../src/StorageVersion.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAkC;IACvE,mFAAmF;IACnF,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"StorageVersion.js","sourceRoot":"","sources":["../src/StorageVersion.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAkC;IACvE,mFAAmF;IACnF,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,OAAO,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC"}
|
package/dist/SyncConfig.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BucketDataSource, BucketSource, HydrateSyncConfigParams, ParameterIndexLookupCreator } from './BucketSource.js';
|
|
2
2
|
import { CompatibilityContext } from './compatibility.js';
|
|
3
3
|
import { YamlError } from './errors.js';
|
|
4
|
-
import {
|
|
4
|
+
import { EventDefinition } from './events/EventDescriptor.js';
|
|
5
5
|
import { HydratedSyncConfig } from './HydratedSyncConfig.js';
|
|
6
6
|
import { SourceTableRef } from './SourceTableRef.js';
|
|
7
7
|
import { TablePattern } from './TablePattern.js';
|
|
@@ -14,14 +14,15 @@ export declare abstract class SyncConfig {
|
|
|
14
14
|
bucketDataSources: BucketDataSource[];
|
|
15
15
|
bucketParameterLookupSources: ParameterIndexLookupCreator[];
|
|
16
16
|
bucketSources: BucketSource[];
|
|
17
|
+
/** Prepared event definitions. Executable event descriptors only exist on {@link HydratedSyncConfig}. */
|
|
18
|
+
eventDefinitions: EventDefinition[];
|
|
17
19
|
compatibility: CompatibilityContext;
|
|
18
20
|
/**
|
|
19
|
-
* If not defined, the storage module picks the
|
|
21
|
+
* If not defined, the storage module picks the version.
|
|
20
22
|
*
|
|
21
23
|
* Only supported storage versions can be set here when parsing from yaml.
|
|
22
24
|
*/
|
|
23
25
|
storageVersion: number | undefined;
|
|
24
|
-
eventDescriptors: SqlEventDescriptor[];
|
|
25
26
|
/**
|
|
26
27
|
* The (YAML-based) source contents from which this sync config has been derived.
|
|
27
28
|
*/
|
package/dist/SyncConfig.js
CHANGED
|
@@ -9,14 +9,15 @@ export class SyncConfig {
|
|
|
9
9
|
bucketDataSources = [];
|
|
10
10
|
bucketParameterLookupSources = [];
|
|
11
11
|
bucketSources = [];
|
|
12
|
+
/** Prepared event definitions. Executable event descriptors only exist on {@link HydratedSyncConfig}. */
|
|
13
|
+
eventDefinitions = [];
|
|
12
14
|
compatibility = CompatibilityContext.FULL_BACKWARDS_COMPATIBILITY;
|
|
13
15
|
/**
|
|
14
|
-
* If not defined, the storage module picks the
|
|
16
|
+
* If not defined, the storage module picks the version.
|
|
15
17
|
*
|
|
16
18
|
* Only supported storage versions can be set here when parsing from yaml.
|
|
17
19
|
*/
|
|
18
20
|
storageVersion;
|
|
19
|
-
eventDescriptors = [];
|
|
20
21
|
/**
|
|
21
22
|
* The (YAML-based) source contents from which this sync config has been derived.
|
|
22
23
|
*/
|
|
@@ -52,9 +53,9 @@ export class SyncConfig {
|
|
|
52
53
|
sourceTables.set(r.key(), r);
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
|
-
for (const event of this.
|
|
56
|
-
for (const
|
|
57
|
-
sourceTables.set(
|
|
56
|
+
for (const event of this.eventDefinitions) {
|
|
57
|
+
for (const table of event.getSourceTables()) {
|
|
58
|
+
sourceTables.set(table.key(), table);
|
|
58
59
|
}
|
|
59
60
|
}
|
|
60
61
|
}
|
|
@@ -65,17 +66,15 @@ export class SyncConfig {
|
|
|
65
66
|
}
|
|
66
67
|
getEventTables() {
|
|
67
68
|
const eventTables = new Map();
|
|
68
|
-
|
|
69
|
-
for (const
|
|
70
|
-
|
|
71
|
-
eventTables.set(r.key(), r);
|
|
72
|
-
}
|
|
69
|
+
for (const event of this.eventDefinitions) {
|
|
70
|
+
for (const table of event.getSourceTables()) {
|
|
71
|
+
eventTables.set(table.key(), table);
|
|
73
72
|
}
|
|
74
73
|
}
|
|
75
74
|
return [...eventTables.values()];
|
|
76
75
|
}
|
|
77
76
|
tableTriggersEvent(table) {
|
|
78
|
-
return this.
|
|
77
|
+
return this.eventDefinitions.some((event) => event.tableTriggersEvent(table));
|
|
79
78
|
}
|
|
80
79
|
tableSyncsData(table) {
|
|
81
80
|
return this.bucketDataSources.some((b) => b.tableSyncsData(table));
|
package/dist/SyncConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncConfig.js","sourceRoot":"","sources":["../src/SyncConfig.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI7D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,MAAM,OAAgB,UAAU;IAC9B,iBAAiB,GAAuB,EAAE,CAAC;IAC3C,4BAA4B,GAAkC,EAAE,CAAC;IACjE,aAAa,GAAmB,EAAE,CAAC;IACnC,aAAa,GAAyB,oBAAoB,CAAC,4BAA4B,CAAC;IACxF;;;;OAIG;IACH,cAAc,CAAqB;
|
|
1
|
+
{"version":3,"file":"SyncConfig.js","sourceRoot":"","sources":["../src/SyncConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/TablePattern.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export declare class ImplicitSchemaTablePattern implements Equatable {
|
|
|
16
16
|
readonly schema: string | null;
|
|
17
17
|
constructor(schema: string | null, tablePattern: string);
|
|
18
18
|
get isWildcard(): boolean;
|
|
19
|
+
get isSchemaWildcard(): boolean;
|
|
19
20
|
get name(): string;
|
|
20
21
|
toTablePattern(defaultSchema: string): TablePattern;
|
|
21
22
|
buildHash(hasher: StableHasher): void;
|
|
@@ -35,6 +36,7 @@ export declare class TablePattern extends ImplicitSchemaTablePattern {
|
|
|
35
36
|
*/
|
|
36
37
|
key(): string;
|
|
37
38
|
get tablePrefix(): string;
|
|
39
|
+
get schemaPrefix(): string;
|
|
38
40
|
matches(table: SourceTableRef): boolean;
|
|
39
41
|
suffix(table: string): string;
|
|
40
42
|
}
|
package/dist/TablePattern.js
CHANGED
|
@@ -36,6 +36,9 @@ export class ImplicitSchemaTablePattern {
|
|
|
36
36
|
get isWildcard() {
|
|
37
37
|
return this.tablePattern.endsWith('%');
|
|
38
38
|
}
|
|
39
|
+
get isSchemaWildcard() {
|
|
40
|
+
return this.schema?.endsWith('%') ?? false;
|
|
41
|
+
}
|
|
39
42
|
get name() {
|
|
40
43
|
if (this.isWildcard) {
|
|
41
44
|
throw new Error('Cannot get name for wildcard table');
|
|
@@ -82,8 +85,22 @@ export class TablePattern extends ImplicitSchemaTablePattern {
|
|
|
82
85
|
}
|
|
83
86
|
return this.tablePattern.substring(0, this.tablePattern.length - 1);
|
|
84
87
|
}
|
|
88
|
+
get schemaPrefix() {
|
|
89
|
+
if (!this.isSchemaWildcard) {
|
|
90
|
+
throw new Error('Not a wildcard schema');
|
|
91
|
+
}
|
|
92
|
+
return this.schema.substring(0, this.schema.length - 1);
|
|
93
|
+
}
|
|
85
94
|
matches(table) {
|
|
86
|
-
if (this.connectionTag != table.connectionTag
|
|
95
|
+
if (this.connectionTag != table.connectionTag) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
if (this.isSchemaWildcard) {
|
|
99
|
+
if (!table.schema.startsWith(this.schemaPrefix)) {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else if (this.schema != table.schema) {
|
|
87
104
|
return false;
|
|
88
105
|
}
|
|
89
106
|
if (this.isWildcard) {
|
package/dist/TablePattern.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TablePattern.js","sourceRoot":"","sources":["../src/TablePattern.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;AAErC;;;;;;;;GAQG;AACH,MAAM,OAAO,0BAA0B;IAMnB;IALF,aAAa,CAAgB;IAC7B,MAAM,CAAgB;IAEtC,YACE,MAAqB,EACL,YAAoB;QAApB,iBAAY,GAAZ,YAAY,CAAQ;QAEpC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;gBACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACvB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,IAAI;QACN,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,cAAc,CAAC,aAAqB;QAClC,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3E,CAAC;IAED,SAAS,CAAC,MAAoB;QAC5B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,KAAc;QACnB,OAAO,CACL,KAAK,YAAY,0BAA0B;YAC3C,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa;YACzC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YAC3B,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CACxC,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,0BAA0B;IAI1D,YAAY,MAAc,EAAE,YAAoB;QAC9C,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,WAAW;QACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,CAAC,KAAqB;QAC3B,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"TablePattern.js","sourceRoot":"","sources":["../src/TablePattern.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,7 @@ export declare class ParameterLookup implements Equatable {
|
|
|
30
30
|
equals(other: unknown): boolean;
|
|
31
31
|
}
|
|
32
32
|
export declare class EvaluateTableValuedFunction implements Equatable {
|
|
33
|
+
#private;
|
|
33
34
|
readonly tableValuedFunction: TableValuedResultSet;
|
|
34
35
|
readonly outputs: RowExpression[];
|
|
35
36
|
readonly filters: RowExpression[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TableValuedFunctionEquality } from './compatibility.js';
|
|
2
2
|
import { HashSet, StableHasher, unorderedEquality } from './equality.js';
|
|
3
3
|
/**
|
|
4
4
|
* Describes how to resolve a subscription to buckets.
|
|
@@ -17,7 +17,7 @@ export class StreamResolver {
|
|
|
17
17
|
this.uniqueName = uniqueName;
|
|
18
18
|
}
|
|
19
19
|
buildInstantiationHash(hasher) {
|
|
20
|
-
|
|
20
|
+
TableValuedFunctionEquality.empty.unorderedEquality.hash(hasher, this.requestFilters);
|
|
21
21
|
StreamResolver.lookupStageEquality.hash(hasher, this.lookupStages);
|
|
22
22
|
this.resolvedBucket.buildInstantiationHash(hasher);
|
|
23
23
|
}
|
|
@@ -25,7 +25,7 @@ export class StreamResolver {
|
|
|
25
25
|
if (other.options != this.options) {
|
|
26
26
|
return false;
|
|
27
27
|
}
|
|
28
|
-
if (!
|
|
28
|
+
if (!TableValuedFunctionEquality.empty.unorderedEquality.equals(other.requestFilters, this.requestFilters)) {
|
|
29
29
|
return false;
|
|
30
30
|
}
|
|
31
31
|
if (!StreamResolver.lookupStageEquality.equals(other.lookupStages, this.lookupStages)) {
|
|
@@ -68,21 +68,30 @@ export class EvaluateTableValuedFunction {
|
|
|
68
68
|
tableValuedFunction;
|
|
69
69
|
outputs;
|
|
70
70
|
filters;
|
|
71
|
+
#hashes;
|
|
71
72
|
constructor(tableValuedFunction, outputs, filters) {
|
|
72
73
|
this.tableValuedFunction = tableValuedFunction;
|
|
73
74
|
this.outputs = outputs;
|
|
74
75
|
this.filters = filters;
|
|
76
|
+
this.#hashes = TableValuedFunctionEquality.forSingleTableValuedFunction(tableValuedFunction);
|
|
75
77
|
}
|
|
76
78
|
buildHash(hasher) {
|
|
77
|
-
this.tableValuedFunction.buildBehaviorHashCode(hasher);
|
|
78
|
-
|
|
79
|
-
|
|
79
|
+
this.tableValuedFunction.buildBehaviorHashCode(TableValuedFunctionEquality.empty, hasher);
|
|
80
|
+
this.#hashes.listEquality.hash(hasher, this.outputs);
|
|
81
|
+
this.#hashes.unorderedEquality.hash(hasher, this.filters);
|
|
80
82
|
}
|
|
81
83
|
equals(other) {
|
|
82
|
-
|
|
83
|
-
other.tableValuedFunction.behavesIdenticalTo(this.tableValuedFunction)
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
if (!(other instanceof EvaluateTableValuedFunction) ||
|
|
85
|
+
!other.tableValuedFunction.behavesIdenticalTo(this.tableValuedFunction, TableValuedFunctionEquality.empty)) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
const symbolMap = new Map();
|
|
89
|
+
const symbol = Symbol();
|
|
90
|
+
symbolMap.set(this.tableValuedFunction, symbol);
|
|
91
|
+
symbolMap.set(other.tableValuedFunction, symbol);
|
|
92
|
+
const equality = TableValuedFunctionEquality.mergeForEquality(this.#hashes, other.#hashes, symbolMap);
|
|
93
|
+
return (equality.listEquality.equals(this.outputs, other.outputs) &&
|
|
94
|
+
equality.unorderedEquality.equals(this.filters, other.filters));
|
|
86
95
|
}
|
|
87
96
|
}
|
|
88
97
|
export class ResolveBucket {
|
|
@@ -111,10 +120,11 @@ export class RequestParameterValue {
|
|
|
111
120
|
this.expression = expression;
|
|
112
121
|
}
|
|
113
122
|
buildHash(hasher) {
|
|
114
|
-
this.expression.
|
|
123
|
+
this.expression.assumingSamePrimaryResultSetEqualityHashCode(TableValuedFunctionEquality.empty, hasher);
|
|
115
124
|
}
|
|
116
125
|
equals(other) {
|
|
117
|
-
return other instanceof RequestParameterValue &&
|
|
126
|
+
return (other instanceof RequestParameterValue &&
|
|
127
|
+
this.expression.equalsAssumingSamePrimaryResultSet(other.expression, TableValuedFunctionEquality.empty));
|
|
118
128
|
}
|
|
119
129
|
}
|
|
120
130
|
export class LookupResultParameterValue {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bucket_resolver.js","sourceRoot":"","sources":["../../src/compiler/bucket_resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,
|
|
1
|
+
{"version":3,"file":"bucket_resolver.js","sourceRoot":"","sources":["../../src/compiler/bucket_resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,45 @@
|
|
|
1
1
|
import { Equality, StableHasher } from './equality.js';
|
|
2
|
+
import { SourceResultSet, TableValuedResultSet } from './table.js';
|
|
2
3
|
/**
|
|
3
|
-
*
|
|
4
|
+
* A semantic equality operator for syntactic structures.
|
|
4
5
|
*
|
|
5
6
|
* This is primarily used to compare expressions across streams. If we have two streams defined as
|
|
6
7
|
* `SELECT * FROM users WHERE id = ...` , the `id` column would not be equal between those since it references a the
|
|
7
|
-
*
|
|
8
|
-
* is the same, this allows comparing expressions for equality.
|
|
8
|
+
* syntactical `users` table added to each individual statement. But if we are in a context where we know the resolved
|
|
9
|
+
* physical table is the same, this allows comparing expressions for equality.
|
|
10
|
+
*
|
|
11
|
+
* It is the responsibility of the caller to also check the primary result set (like `users` in this example) for
|
|
12
|
+
* equality before invoking these methods. Additionally, streams are allowed to join table-valued functions derived from
|
|
13
|
+
* the primary result set. Those must also be equal, which is why {@link TableValuedHashCodes} is used to generate
|
|
14
|
+
* stable hash codes for them and {@link TableValuedIdentities} guarantees that available table-valued functions have a
|
|
15
|
+
* 1:1 correspondence between compared structures.
|
|
9
16
|
*/
|
|
10
|
-
export interface
|
|
11
|
-
|
|
12
|
-
|
|
17
|
+
export interface EqualsIgnoringPrimaryResultSet {
|
|
18
|
+
equalsAssumingSamePrimaryResultSet(other: EqualsIgnoringPrimaryResultSet, tableValued: TableValuedFunctionEquality): boolean;
|
|
19
|
+
assumingSamePrimaryResultSetEqualityHashCode(tableValued: TableValuedFunctionEquality, hasher: StableHasher): void;
|
|
20
|
+
}
|
|
21
|
+
interface ReadOnlyMap<K, V> {
|
|
22
|
+
get(key: K): V | undefined;
|
|
23
|
+
}
|
|
24
|
+
export declare class TableValuedFunctionEquality implements Equality<EqualsIgnoringPrimaryResultSet> {
|
|
25
|
+
#private;
|
|
26
|
+
private constructor();
|
|
27
|
+
get listEquality(): Equality<Iterable<EqualsIgnoringPrimaryResultSet>>;
|
|
28
|
+
get unorderedEquality(): Equality<Iterable<EqualsIgnoringPrimaryResultSet>>;
|
|
29
|
+
equals(a: EqualsIgnoringPrimaryResultSet, b: EqualsIgnoringPrimaryResultSet): boolean;
|
|
30
|
+
resultSetEquals(a: SourceResultSet, b: SourceResultSet): boolean;
|
|
31
|
+
hashResultSet(hasher: StableHasher, resultSet: SourceResultSet): void;
|
|
32
|
+
hash(hasher: StableHasher, value: EqualsIgnoringPrimaryResultSet): void;
|
|
33
|
+
/**
|
|
34
|
+
* An equality operator for table-valued functions, suitable only for generating hash codes within a single structure
|
|
35
|
+
* owning table-valued functions.
|
|
36
|
+
*
|
|
37
|
+
* This can't be used to compare functions across streams or to test for equality.
|
|
38
|
+
*/
|
|
39
|
+
static forHashCode(innerHashes: ReadOnlyMap<TableValuedResultSet, number>): TableValuedFunctionEquality;
|
|
40
|
+
static forSingleTableValuedFunction(resultSet: TableValuedResultSet): TableValuedFunctionEquality;
|
|
41
|
+
static forSingleOwner(innerHashes: ReadOnlyMap<TableValuedResultSet, number>, equality: ReadOnlyMap<TableValuedResultSet, unknown>): TableValuedFunctionEquality;
|
|
42
|
+
static mergeForEquality(localHashes: TableValuedFunctionEquality, otherHashes: TableValuedFunctionEquality, equality: ReadOnlyMap<TableValuedResultSet, symbol>): TableValuedFunctionEquality;
|
|
43
|
+
static readonly empty: TableValuedFunctionEquality;
|
|
13
44
|
}
|
|
14
|
-
export
|
|
15
|
-
export declare const equalsIgnoringResultSetList: Equality<Iterable<EqualsIgnoringResultSet>>;
|
|
16
|
-
export declare const equalsIgnoringResultSetUnordered: Equality<Iterable<EqualsIgnoringResultSet>>;
|
|
45
|
+
export {};
|
|
@@ -1,12 +1,82 @@
|
|
|
1
|
-
import { listEquality } from './equality.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { listEquality, unorderedEquality } from './equality.js';
|
|
2
|
+
import { PhysicalSourceResultSet } from './table.js';
|
|
3
|
+
export class TableValuedFunctionEquality {
|
|
4
|
+
#hashes;
|
|
5
|
+
#identities;
|
|
6
|
+
#ordered;
|
|
7
|
+
#unordered;
|
|
8
|
+
constructor(hashes, identities) {
|
|
9
|
+
this.#hashes = hashes;
|
|
10
|
+
this.#identities = identities;
|
|
11
|
+
}
|
|
12
|
+
get listEquality() {
|
|
13
|
+
return (this.#ordered ??= listEquality(this));
|
|
14
|
+
}
|
|
15
|
+
get unorderedEquality() {
|
|
16
|
+
return (this.#unordered ??= unorderedEquality(this));
|
|
17
|
+
}
|
|
18
|
+
#lookupIdentity(resultSet) {
|
|
19
|
+
const symbol = this.#identities.get(resultSet);
|
|
20
|
+
if (symbol == null) {
|
|
21
|
+
throw new Error('Unknown table-valued result set for equals');
|
|
22
|
+
}
|
|
23
|
+
return symbol;
|
|
24
|
+
}
|
|
25
|
+
equals(a, b) {
|
|
26
|
+
return a.equalsAssumingSamePrimaryResultSet(b, this);
|
|
27
|
+
}
|
|
28
|
+
resultSetEquals(a, b) {
|
|
29
|
+
// We don't need to compare primary result sets, those are assumed to be equal.
|
|
30
|
+
if (a instanceof PhysicalSourceResultSet) {
|
|
31
|
+
return b instanceof PhysicalSourceResultSet;
|
|
32
|
+
}
|
|
33
|
+
else if (b instanceof PhysicalSourceResultSet) {
|
|
34
|
+
return a instanceof PhysicalSourceResultSet;
|
|
35
|
+
}
|
|
36
|
+
return this.#lookupIdentity(a) === this.#lookupIdentity(b);
|
|
37
|
+
}
|
|
38
|
+
hashResultSet(hasher, resultSet) {
|
|
39
|
+
// There's only one primary result set which we ignore by design.
|
|
40
|
+
if (resultSet instanceof PhysicalSourceResultSet)
|
|
41
|
+
return;
|
|
42
|
+
const hash = this.#hashes.get(resultSet);
|
|
43
|
+
if (hash == null) {
|
|
44
|
+
throw new Error('Hashing unknown table-valued result set');
|
|
45
|
+
}
|
|
46
|
+
hasher.addHash(hash);
|
|
47
|
+
}
|
|
48
|
+
hash(hasher, value) {
|
|
49
|
+
return value.assumingSamePrimaryResultSetEqualityHashCode(this, hasher);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* An equality operator for table-valued functions, suitable only for generating hash codes within a single structure
|
|
53
|
+
* owning table-valued functions.
|
|
54
|
+
*
|
|
55
|
+
* This can't be used to compare functions across streams or to test for equality.
|
|
56
|
+
*/
|
|
57
|
+
static forHashCode(innerHashes) {
|
|
58
|
+
return this.forSingleOwner(innerHashes, {
|
|
59
|
+
// Compare by identity within the single owner.
|
|
60
|
+
get: (tableValued) => tableValued
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
static forSingleTableValuedFunction(resultSet) {
|
|
64
|
+
const hashCodeMap = new Map();
|
|
65
|
+
// Hash codes are only used to ensure column references to different table-valued functions generate different
|
|
66
|
+
// codes. Since there's just one, it can be an arbitrary value.
|
|
67
|
+
hashCodeMap.set(resultSet, 0);
|
|
68
|
+
return this.forHashCode(hashCodeMap);
|
|
69
|
+
}
|
|
70
|
+
static forSingleOwner(innerHashes, equality) {
|
|
71
|
+
return new TableValuedFunctionEquality(innerHashes, equality);
|
|
72
|
+
}
|
|
73
|
+
static mergeForEquality(localHashes, otherHashes, equality) {
|
|
74
|
+
return new TableValuedFunctionEquality({
|
|
75
|
+
get(key) {
|
|
76
|
+
return localHashes.#hashes.get(key) ?? otherHashes.#hashes.get(key);
|
|
77
|
+
}
|
|
78
|
+
}, equality);
|
|
79
|
+
}
|
|
80
|
+
static empty = new TableValuedFunctionEquality(new Map(), new Map());
|
|
81
|
+
}
|
|
12
82
|
//# sourceMappingURL=compatibility.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../src/compiler/compatibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,YAAY,EAAgB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../src/compiler/compatibility.ts"],"names":[],"mappings":"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"}
|