@powersync/service-sync-rules 0.40.0 → 0.42.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/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 +17 -15
- package/dist/compiler/expression.js +21 -12
- package/dist/compiler/expression.js.map +1 -1
- package/dist/compiler/filter.d.ts +4 -4
- package/dist/compiler/filter.js +5 -4
- 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 +40 -36
- package/dist/compiler/ir_to_sync_plan.js.map +1 -1
- package/dist/compiler/querier_graph.js +43 -24
- 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/table.d.ts +3 -2
- package/dist/compiler/table.js +5 -6
- 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 +24 -20
- 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/schema-generators/RustSchemaGenerator.d.ts +22 -0
- package/dist/schema-generators/RustSchemaGenerator.js +120 -0
- package/dist/schema-generators/RustSchemaGenerator.js.map +1 -0
- package/dist/schema-generators/generators.d.ts +2 -0
- package/dist/schema-generators/generators.js +2 -0
- package/dist/schema-generators/generators.js.map +1 -1
- package/dist/schema-generators/schema-generators.d.ts +1 -0
- package/dist/schema-generators/schema-generators.js +1 -0
- package/dist/schema-generators/schema-generators.js.map +1 -1
- package/dist/sync_plan/evaluator/bucket_data_source.js +11 -53
- 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/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/plan.d.ts +36 -5
- 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 +35 -4
- package/dist/sync_plan/serialize.js +93 -16
- package/dist/sync_plan/serialize.js.map +1 -1
- 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
package/dist/sync_plan/plan.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export interface SyncPlan {
|
|
|
24
24
|
buckets: StreamBucketDataSource[];
|
|
25
25
|
parameterIndexes: StreamParameterIndexLookupCreator[];
|
|
26
26
|
streams: CompiledSyncStream[];
|
|
27
|
+
events: CompiledEventDescriptor[];
|
|
27
28
|
}
|
|
28
29
|
/**
|
|
29
30
|
* Something that processes a source row if it matches filters.
|
|
@@ -107,22 +108,52 @@ export interface PartitionKey {
|
|
|
107
108
|
* duplicate bucket data but can still share the actual processing logic between multiple streams (to avoid evaluating
|
|
108
109
|
* the same filters and expressions multiple times).
|
|
109
110
|
*/
|
|
110
|
-
export interface
|
|
111
|
+
export interface RowProjection extends TableProcessor {
|
|
112
|
+
/**
|
|
113
|
+
* Output columns produced when a matching source row is evaluated.
|
|
114
|
+
*/
|
|
115
|
+
columns: ColumnSource[];
|
|
116
|
+
}
|
|
117
|
+
export interface StreamDataSource extends RowProjection {
|
|
111
118
|
/**
|
|
112
119
|
* The name of the output table for evaluated rows.
|
|
113
120
|
*
|
|
114
121
|
* If null, the name of the table being evaluated should be used instead.
|
|
115
122
|
*/
|
|
116
123
|
outputTableName?: string;
|
|
117
|
-
/**
|
|
118
|
-
* Output columns describing the row to store in buckets.
|
|
119
|
-
*/
|
|
120
|
-
columns: ColumnSource[];
|
|
121
124
|
}
|
|
122
125
|
export type ColumnSource = 'star' | {
|
|
123
126
|
expr: SqlExpression<TableProcessorData>;
|
|
124
127
|
alias: string;
|
|
125
128
|
};
|
|
129
|
+
/**
|
|
130
|
+
* A named replication event compiled from `event_definitions`.
|
|
131
|
+
*/
|
|
132
|
+
export interface CompiledEventDescriptor {
|
|
133
|
+
name: string;
|
|
134
|
+
sourceQueries: CompiledEventSourceQuery[];
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* A single payload query for an event.
|
|
138
|
+
*
|
|
139
|
+
* Event payload queries are restricted to one physical source table. A query can have multiple variants after its
|
|
140
|
+
* filter has been normalized to disjunctive normal form. Evaluation stops after the first matching variant, which may
|
|
141
|
+
* itself produce multiple payload rows, for example through a table-valued expansion.
|
|
142
|
+
*/
|
|
143
|
+
export interface CompiledEventSourceQuery {
|
|
144
|
+
/**
|
|
145
|
+
* Original SQL retained as a compatibility mirror for services using the legacy event evaluator. Compiled event
|
|
146
|
+
* evaluation uses the remaining fields.
|
|
147
|
+
*/
|
|
148
|
+
sql: string;
|
|
149
|
+
sourceTable: ImplicitSchemaTablePattern;
|
|
150
|
+
variants: EventRowEvaluator[];
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* A row projection used by one normalized filter variant of an event payload query.
|
|
154
|
+
*/
|
|
155
|
+
export interface EventRowEvaluator extends RowProjection {
|
|
156
|
+
}
|
|
126
157
|
/**
|
|
127
158
|
* A mapping describing how {@link StreamDataSource}s are combined into buckets.
|
|
128
159
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Equality } from '../compiler/equality.js';
|
|
2
|
-
import { SerializedBucketDataSource, SerializedDataSource, SerializedParameterIndexLookupCreator } from './serialize.js';
|
|
1
|
+
import type { Equality } from '../compiler/equality.js';
|
|
2
|
+
import type { SerializedBucketDataSource, SerializedDataSource, SerializedEventDescriptor, SerializedParameterIndexLookupCreator } from './serialize.js';
|
|
3
3
|
export interface SerializedBucketDataSourceWithDataSources {
|
|
4
4
|
bucket: SerializedBucketDataSource;
|
|
5
5
|
dataSources: readonly SerializedDataSource[];
|
|
@@ -13,6 +13,16 @@ export interface SerializedBucketDataSourceWithDataSources {
|
|
|
13
13
|
* These are only considered equal if the lookupName remains the same, so may be affected by changing order of queries.
|
|
14
14
|
*/
|
|
15
15
|
export declare const serializedStreamParameterIndexLookupCreatorEquality: Equality<SerializedParameterIndexLookupCreator>;
|
|
16
|
+
/**
|
|
17
|
+
* Equality for persisted replication events.
|
|
18
|
+
*
|
|
19
|
+
* Raw SQL is a rolling-upgrade compatibility mirror and cached evaluator hashes are not equality checks, so neither is
|
|
20
|
+
* part of event behavior. Payload queries are unordered because runtime evaluates every query matching the source
|
|
21
|
+
* table and treats the resulting payloads as an unordered collection. Normalized variants are unordered because they
|
|
22
|
+
* share a projection and only determine whether a row matches. The remaining serialized plan is a stable,
|
|
23
|
+
* self-contained behavior representation: Expression ASTs include both their shape and external-data bindings.
|
|
24
|
+
*/
|
|
25
|
+
export declare const serializedEventDefinitionEquality: Equality<SerializedEventDescriptor>;
|
|
16
26
|
/**
|
|
17
27
|
* SerializedBucketDataSource is not safe to compare _directly_, since it contains index references to SerializedDataSource
|
|
18
28
|
* in the serialized sync plan. However, each SerializedDataSource is self-contained and safe to compare directly.
|
|
@@ -7,6 +7,23 @@
|
|
|
7
7
|
* These are only considered equal if the lookupName remains the same, so may be affected by changing order of queries.
|
|
8
8
|
*/
|
|
9
9
|
export const serializedStreamParameterIndexLookupCreatorEquality = jsonEquality();
|
|
10
|
+
/**
|
|
11
|
+
* Equality for persisted replication events.
|
|
12
|
+
*
|
|
13
|
+
* Raw SQL is a rolling-upgrade compatibility mirror and cached evaluator hashes are not equality checks, so neither is
|
|
14
|
+
* part of event behavior. Payload queries are unordered because runtime evaluates every query matching the source
|
|
15
|
+
* table and treats the resulting payloads as an unordered collection. Normalized variants are unordered because they
|
|
16
|
+
* share a projection and only determine whether a row matches. The remaining serialized plan is a stable,
|
|
17
|
+
* self-contained behavior representation: Expression ASTs include both their shape and external-data bindings.
|
|
18
|
+
*/
|
|
19
|
+
export const serializedEventDefinitionEquality = {
|
|
20
|
+
hash(hasher, value) {
|
|
21
|
+
hasher.addString(persistedJson(eventIdentity(value)));
|
|
22
|
+
},
|
|
23
|
+
equals(a, b) {
|
|
24
|
+
return a === b || persistedJson(eventIdentity(a)) == persistedJson(eventIdentity(b));
|
|
25
|
+
}
|
|
26
|
+
};
|
|
10
27
|
/**
|
|
11
28
|
* SerializedBucketDataSource is not safe to compare _directly_, since it contains index references to SerializedDataSource
|
|
12
29
|
* in the serialized sync plan. However, each SerializedDataSource is self-contained and safe to compare directly.
|
|
@@ -33,6 +50,45 @@ function bucketIdentity(value) {
|
|
|
33
50
|
sources: bucket.sources.map((index) => JSON.stringify(dataSources[index])).sort()
|
|
34
51
|
};
|
|
35
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Builds a normalized identity for comparing serialized event descriptors from persisted sync plans.
|
|
55
|
+
*
|
|
56
|
+
* Raw SQL is excluded, while source queries and variants are sorted because their order does not affect event
|
|
57
|
+
* behavior.
|
|
58
|
+
*/
|
|
59
|
+
function eventIdentity(event) {
|
|
60
|
+
return {
|
|
61
|
+
name: event.name,
|
|
62
|
+
sourceQueries: event.sourceQueries
|
|
63
|
+
.map((query) => persistedJson({
|
|
64
|
+
table: query.table,
|
|
65
|
+
variants: query.variants.map((variant) => persistedJson(eventRowEvaluatorIdentity(variant))).sort()
|
|
66
|
+
}))
|
|
67
|
+
.sort()
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Selects the behavioral fields used when comparing row evaluators within serialized event descriptors.
|
|
72
|
+
*
|
|
73
|
+
* The cached evaluator hash is deliberately omitted. Ordering inside an evaluator is retained conservatively so
|
|
74
|
+
* changes to projected column order or the compiler's filter-expression order invalidate persisted compatibility.
|
|
75
|
+
*/
|
|
76
|
+
function eventRowEvaluatorIdentity(evaluator) {
|
|
77
|
+
return {
|
|
78
|
+
table: evaluator.table,
|
|
79
|
+
tableValuedFunctions: evaluator.tableValuedFunctions,
|
|
80
|
+
filters: evaluator.filters,
|
|
81
|
+
partitionBy: evaluator.partitionBy,
|
|
82
|
+
columns: evaluator.columns
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* MongoDB persists undefined object properties as null. Treat the two forms as the same so a plan compares equal
|
|
87
|
+
* before and after it has been stored and loaded again.
|
|
88
|
+
*/
|
|
89
|
+
function persistedJson(value) {
|
|
90
|
+
return JSON.stringify(value, (_key, item) => (item === undefined ? null : item));
|
|
91
|
+
}
|
|
36
92
|
function jsonEquality() {
|
|
37
93
|
return {
|
|
38
94
|
hash(hasher, value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan_equality_serialized.js","sourceRoot":"","sources":["../../src/sync_plan/plan_equality_serialized.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plan_equality_serialized.js","sourceRoot":"","sources":["../../src/sync_plan/plan_equality_serialized.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,10 +11,13 @@ import { ColumnSqlParameterValue, RequestSqlParameterValue, RowMetadataSqlValue,
|
|
|
11
11
|
export declare function serializeSyncPlan(plan: SyncPlan): SerializedSyncPlan;
|
|
12
12
|
export declare function deserializeSyncPlan(serialized: unknown): SyncPlan;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
14
|
+
* Changes to {@link SerializedSyncPlan} require a version bump when older services would interpret the plan
|
|
15
|
+
* incorrectly. Optional additive fields are only safe without a bump when older readers can ignore them while another
|
|
16
|
+
* persisted representation preserves equivalent behavior.
|
|
17
|
+
*
|
|
18
|
+
* Compiled `events` are an explicit additive exception: service-core continues to persist raw event SQL alongside the
|
|
19
|
+
* plan for the legacy evaluator. Older readers ignore `events` and use that legacy mirror. Removing the mirror or
|
|
20
|
+
* relying on compiled-only event semantics will require a version bump.
|
|
18
21
|
*
|
|
19
22
|
* ### Version 2
|
|
20
23
|
*
|
|
@@ -34,6 +37,11 @@ export interface SerializedSyncPlan {
|
|
|
34
37
|
buckets: SerializedBucketDataSource[];
|
|
35
38
|
parameterIndexes: SerializedParameterIndexLookupCreator[];
|
|
36
39
|
streams: SerializedStream[];
|
|
40
|
+
/**
|
|
41
|
+
* Optional additive compiled event definitions. Older readers safely ignore this because service-core dual-writes
|
|
42
|
+
* equivalent raw SQL in its legacy `eventDescriptors` field.
|
|
43
|
+
*/
|
|
44
|
+
events?: SerializedEventDescriptor[];
|
|
37
45
|
}
|
|
38
46
|
export interface SerializedBucketDataSource {
|
|
39
47
|
hash: number;
|
|
@@ -66,6 +74,29 @@ export interface SerializedDataSource {
|
|
|
66
74
|
tableValuedFunctions: TableProcessorTableValuedFunction[];
|
|
67
75
|
partitionBy: SerializedPartitionKey[];
|
|
68
76
|
}
|
|
77
|
+
export interface SerializedEventDescriptor {
|
|
78
|
+
name: string;
|
|
79
|
+
sourceQueries: SerializedEventSourceQuery[];
|
|
80
|
+
}
|
|
81
|
+
export interface SerializedEventSourceQuery {
|
|
82
|
+
/** Raw SQL retained for the legacy compatibility mirror. */
|
|
83
|
+
sql: string;
|
|
84
|
+
table: SerializedTablePattern;
|
|
85
|
+
variants: SerializedEventRowEvaluator[];
|
|
86
|
+
}
|
|
87
|
+
export interface SerializedEventRowEvaluator {
|
|
88
|
+
table: SerializedTablePattern;
|
|
89
|
+
/**
|
|
90
|
+
* The compiler's structural hash, retained only for round-trip symmetry with data sources (which reuse the same
|
|
91
|
+
* projection shape). It is not part of event identity (the compiler model compares behavior directly), and events
|
|
92
|
+
* are never deduplicated by it at runtime.
|
|
93
|
+
*/
|
|
94
|
+
hash: number;
|
|
95
|
+
columns: SerializedColumnSource[];
|
|
96
|
+
filters: SqlExpression<SerializedTableProcessorData>[];
|
|
97
|
+
tableValuedFunctions: TableProcessorTableValuedFunction[];
|
|
98
|
+
partitionBy: SerializedPartitionKey[];
|
|
99
|
+
}
|
|
69
100
|
export interface SerializedParameterIndexLookupCreator {
|
|
70
101
|
table: SerializedTablePattern;
|
|
71
102
|
hash: number;
|
|
@@ -1,17 +1,6 @@
|
|
|
1
1
|
import { ImplicitSchemaTablePattern, TablePattern } from '../TablePattern.js';
|
|
2
2
|
import { MapSourceVisitor, visitExpr } from './expression_visitor.js';
|
|
3
|
-
|
|
4
|
-
* Serializes a sync plan into a simple JSON object.
|
|
5
|
-
*
|
|
6
|
-
* While {@link SyncPlan}s are already serializable for the most part, it contains a graph of references from e.g.
|
|
7
|
-
* queriers to bucket creators. To represent this efficiently, we assign numbers to referenced elements while
|
|
8
|
-
* serializing instead of duplicating definitions.
|
|
9
|
-
*/
|
|
10
|
-
export function serializeSyncPlan(plan) {
|
|
11
|
-
const dataSourceIndex = new Map();
|
|
12
|
-
const bucketIndex = new Map();
|
|
13
|
-
const parameterIndex = new Map();
|
|
14
|
-
const expandingLookups = new Map();
|
|
3
|
+
function createTableProcessorSerializer() {
|
|
15
4
|
const addedTableValuedFunctions = new Map();
|
|
16
5
|
let usesRowMetadataSqlValue = false;
|
|
17
6
|
const replaceFunctionReferenceWithIndex = new MapSourceVisitor((value) => {
|
|
@@ -50,6 +39,56 @@ export function serializeSyncPlan(plan) {
|
|
|
50
39
|
return { expr: serializeTableProcessorDataExpr(key.expr) };
|
|
51
40
|
});
|
|
52
41
|
}
|
|
42
|
+
function serializeEventRowEvaluator(source) {
|
|
43
|
+
return {
|
|
44
|
+
hash: source.hashCode,
|
|
45
|
+
table: serializeTablePattern(source.sourceTable),
|
|
46
|
+
tableValuedFunctions: serializeTableValued(source),
|
|
47
|
+
filters: source.filters.map(serializeTableProcessorDataExpr),
|
|
48
|
+
partitionBy: translateParameters(source),
|
|
49
|
+
columns: source.columns.map((column) => {
|
|
50
|
+
if (column == 'star') {
|
|
51
|
+
return 'star';
|
|
52
|
+
}
|
|
53
|
+
return { expr: serializeTableProcessorDataExpr(column.expr), alias: column.alias };
|
|
54
|
+
})
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function serializeEventDefinition(event) {
|
|
58
|
+
return {
|
|
59
|
+
name: event.name,
|
|
60
|
+
sourceQueries: event.sourceQueries.map((query) => ({
|
|
61
|
+
sql: query.sql,
|
|
62
|
+
table: serializeTablePattern(query.sourceTable),
|
|
63
|
+
variants: query.variants.map(serializeEventRowEvaluator)
|
|
64
|
+
}))
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
get usesRowMetadataSqlValue() {
|
|
69
|
+
return usesRowMetadataSqlValue;
|
|
70
|
+
},
|
|
71
|
+
serializeTableProcessorDataExpr,
|
|
72
|
+
serializeTablePattern,
|
|
73
|
+
serializeTableValued,
|
|
74
|
+
translateParameters,
|
|
75
|
+
serializeEventDefinition
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Serializes a sync plan into a simple JSON object.
|
|
80
|
+
*
|
|
81
|
+
* While {@link SyncPlan}s are already serializable for the most part, it contains a graph of references from e.g.
|
|
82
|
+
* queriers to bucket creators. To represent this efficiently, we assign numbers to referenced elements while
|
|
83
|
+
* serializing instead of duplicating definitions.
|
|
84
|
+
*/
|
|
85
|
+
export function serializeSyncPlan(plan) {
|
|
86
|
+
const dataSourceIndex = new Map();
|
|
87
|
+
const bucketIndex = new Map();
|
|
88
|
+
const parameterIndex = new Map();
|
|
89
|
+
const expandingLookups = new Map();
|
|
90
|
+
const tableProcessorSerializer = createTableProcessorSerializer();
|
|
91
|
+
const { serializeTableProcessorDataExpr, serializeTablePattern, serializeTableValued, translateParameters } = tableProcessorSerializer;
|
|
53
92
|
function serializeDataSources() {
|
|
54
93
|
return plan.dataSources.map((source, i) => {
|
|
55
94
|
dataSourceIndex.set(source, i);
|
|
@@ -80,7 +119,7 @@ export function serializeSyncPlan(plan) {
|
|
|
80
119
|
tableValuedFunctions: serializeTableValued(source),
|
|
81
120
|
filters: source.filters.map(serializeTableProcessorDataExpr),
|
|
82
121
|
partitionBy: translateParameters(source),
|
|
83
|
-
output: source.outputs.map(
|
|
122
|
+
output: source.outputs.map(serializeTableProcessorDataExpr),
|
|
84
123
|
lookupScope: source.defaultLookupScope
|
|
85
124
|
};
|
|
86
125
|
});
|
|
@@ -132,7 +171,8 @@ export function serializeSyncPlan(plan) {
|
|
|
132
171
|
sourceInstantiation: source.sourceInstantiation.map(serializeParameterValue)
|
|
133
172
|
};
|
|
134
173
|
}
|
|
135
|
-
|
|
174
|
+
const events = plan.events.map(tableProcessorSerializer.serializeEventDefinition);
|
|
175
|
+
const serialized = {
|
|
136
176
|
dataSources: serializeDataSources(),
|
|
137
177
|
buckets: plan.buckets.map((bkt, index) => {
|
|
138
178
|
bucketIndex.set(bkt, index);
|
|
@@ -147,8 +187,14 @@ export function serializeSyncPlan(plan) {
|
|
|
147
187
|
stream: s.stream,
|
|
148
188
|
queriers: s.queriers.map(serializeStreamQuerier)
|
|
149
189
|
})),
|
|
150
|
-
version: usesRowMetadataSqlValue ? 2 : 1
|
|
190
|
+
version: tableProcessorSerializer.usesRowMetadataSqlValue ? 2 : 1
|
|
151
191
|
};
|
|
192
|
+
// Compiled events are intentionally additive to plan versions 1 and 2. The service also persists their raw SQL in
|
|
193
|
+
// the legacy eventDescriptors field, so older readers can ignore this field and retain equivalent event behavior.
|
|
194
|
+
if (events.length != 0) {
|
|
195
|
+
serialized.events = events;
|
|
196
|
+
}
|
|
197
|
+
return serialized;
|
|
152
198
|
}
|
|
153
199
|
export function deserializeSyncPlan(serialized) {
|
|
154
200
|
const { version } = serialized;
|
|
@@ -222,6 +268,36 @@ export function deserializeSyncPlan(serialized) {
|
|
|
222
268
|
defaultLookupScope: source.lookupScope
|
|
223
269
|
};
|
|
224
270
|
});
|
|
271
|
+
function deserializeEventRowEvaluator(source) {
|
|
272
|
+
const functions = (tableValuedFunctionsInScope = source.tableValuedFunctions);
|
|
273
|
+
return {
|
|
274
|
+
hashCode: source.hash,
|
|
275
|
+
sourceTable: deserializeTablePattern(source.table),
|
|
276
|
+
tableValuedFunctions: functions,
|
|
277
|
+
filters: source.filters.map(deserializeTableProcessorDataExpr),
|
|
278
|
+
parameters: deserializeParameters(source.partitionBy),
|
|
279
|
+
columns: source.columns.map((column) => {
|
|
280
|
+
if (column == 'star') {
|
|
281
|
+
return 'star';
|
|
282
|
+
}
|
|
283
|
+
return { expr: deserializeTableProcessorDataExpr(column.expr), alias: column.alias };
|
|
284
|
+
})
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
if (plan.events != null && !Array.isArray(plan.events)) {
|
|
288
|
+
throw new Error('Compiled sync plan events must be an array.');
|
|
289
|
+
}
|
|
290
|
+
const serializedEvents = plan.events ?? [];
|
|
291
|
+
const events = serializedEvents.map((event) => {
|
|
292
|
+
return {
|
|
293
|
+
name: event.name,
|
|
294
|
+
sourceQueries: event.sourceQueries.map((query) => ({
|
|
295
|
+
sql: query.sql,
|
|
296
|
+
sourceTable: deserializeTablePattern(query.table),
|
|
297
|
+
variants: query.variants.map(deserializeEventRowEvaluator)
|
|
298
|
+
}))
|
|
299
|
+
};
|
|
300
|
+
});
|
|
225
301
|
function deserializeParameterValue(stages, value) {
|
|
226
302
|
switch (value.type) {
|
|
227
303
|
case 'request':
|
|
@@ -280,7 +356,8 @@ export function deserializeSyncPlan(serialized) {
|
|
|
280
356
|
dataSources,
|
|
281
357
|
buckets,
|
|
282
358
|
parameterIndexes,
|
|
283
|
-
streams
|
|
359
|
+
streams,
|
|
360
|
+
events
|
|
284
361
|
};
|
|
285
362
|
}
|
|
286
363
|
export const maxSupportedSyncPlanVersion = 2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/sync_plan/serialize.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/sync_plan/serialize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AA0BtE,SAAS,8BAA8B;IACrC,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAA6C,CAAC;IACvF,IAAI,uBAAuB,GAAG,KAAK,CAAC;IAEpC,MAAM,iCAAiC,GAAG,IAAI,gBAAgB,CAG5D,CAAC,KAAK,EAAE,EAAE;QACV,uBAAuB,KAAK,UAAU,IAAI,KAAK,CAAC;QAEhD,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;YACxB,OAAO,EAAE,QAAQ,EAAE,yBAAyB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;QACpG,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,SAAS,+BAA+B,CACtC,IAAuC;QAEvC,OAAO,SAAS,CAAC,iCAAiC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,SAAS,qBAAqB,CAAC,OAAmC;QAChE,OAAO;YACL,UAAU,EAAE,OAAO,CAAC,aAAa;YACjC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,YAAY;SAC5B,CAAC;IACJ,CAAC;IAED,SAAS,oBAAoB,CAAC,MAAsB;QAClD,OAAO,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YAC/C,yBAAyB,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAErC,OAAO;gBACL,YAAY,EAAE,EAAE,CAAC,YAAY;gBAC7B,cAAc,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG;gBACnC,wGAAwG;gBACxG,iFAAiF;gBACjF,CAAC,CAAC,EAAE,EAAE,CAAC,+BAA+B,CAAC,CAAC,CAA2C,CACpF;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,mBAAmB,CAAC,MAAsB;QACjD,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACnC,OAAO,EAAE,IAAI,EAAE,+BAA+B,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,0BAA0B,CAAC,MAAyB;QAC3D,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,KAAK,EAAE,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC;YAChD,oBAAoB,EAAE,oBAAoB,CAAC,MAAM,CAAC;YAClD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;YAC5D,WAAW,EAAE,mBAAmB,CAAC,MAAM,CAAC;YACxC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAA0B,EAAE;gBAC7D,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;oBACrB,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,OAAO,EAAE,IAAI,EAAE,+BAA+B,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACrF,CAAC,CAAC;SACH,CAAC;IACJ,CAAC;IAED,SAAS,wBAAwB,CAAC,KAA8B;QAC9D,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACjD,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC/C,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,0BAA0B,CAAC;aACzD,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,uBAAuB;YACzB,OAAO,uBAAuB,CAAC;QACjC,CAAC;QACD,+BAA+B;QAC/B,qBAAqB;QACrB,oBAAoB;QACpB,mBAAmB;QACnB,wBAAwB;KACzB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAc;IAC9C,MAAM,eAAe,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC5D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC9D,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6C,CAAC;IAC5E,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAoC,CAAC;IACrE,MAAM,wBAAwB,GAAG,8BAA8B,EAAE,CAAC;IAClE,MAAM,EAAE,+BAA+B,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,GACzG,wBAAwB,CAAC;IAE3B,SAAS,oBAAoB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAE/B,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,QAAQ;gBACrB,KAAK,EAAE,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC;gBAChD,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,oBAAoB,EAAE,oBAAoB,CAAC,MAAM,CAAC;gBAClD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;gBAC5D,WAAW,EAAE,mBAAmB,CAAC,MAAM,CAAC;gBACxC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAA0B,EAAE;oBACxD,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;wBAChB,OAAO,MAAM,CAAC;oBAChB,CAAC;yBAAM,CAAC;wBACN,OAAO,EAAE,IAAI,EAAE,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;oBAC3E,CAAC;gBACH,CAAC,CAAC;aAC4B,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,yBAAyB;QAChC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAE9B,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,QAAQ;gBACrB,KAAK,EAAE,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC;gBAChD,oBAAoB,EAAE,oBAAoB,CAAC,MAAM,CAAC;gBAClD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;gBAC5D,WAAW,EAAE,mBAAmB,CAAC,MAAM,CAAC;gBACxC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC;gBAC3D,WAAW,EAAE,MAAM,CAAC,kBAAkB;aACS,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,uBAAuB,CAAC,KAAqB;QACpD,IAAI,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;YAC5B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/C,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;YAClC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;QACzG,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACrF,CAAC;IACH,CAAC;IAED,SAAS,sBAAsB,CAAC,MAAqB;QACnD,MAAM,MAAM,GAAkC,EAAE,CAAC;QAEjD,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;YAC5C,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE;gBAC5B,MAAM,GAAG,GAAoB;oBAC3B,OAAO,EAAE,UAAU;oBACnB,SAAS,EAAE,YAAY;iBACxB,CAAC;gBACF,IAAI,MAAiC,CAAC;gBAEtC,IAAI,CAAC,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;oBAC1B,MAAM,GAAG;wBACP,IAAI,EAAE,WAAW;wBACjB,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAE;wBACrC,aAAa,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,uBAAuB,CAAC;qBAC5D,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG;wBACP,IAAI,EAAE,cAAc;wBACpB,YAAY,EAAE,CAAC,CAAC,YAAY;wBAC5B,cAAc,EAAE,CAAC,CAAC,cAAc;wBAChC,OAAO,EAAE,CAAC,CAAC,OAAO;wBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;qBACnB,CAAC;gBACJ,CAAC;gBAED,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC7B,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,YAAY,EAAE,MAAM;YACpB,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAE;YACvC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,uBAAuB,CAAC;SAC7E,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAwB,CAAC,wBAAwB,CAAC,CAAC;IAClF,MAAM,UAAU,GAAuB;QACrC,WAAW,EAAE,oBAAoB,EAAE;QACnC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACvC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5B,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,QAAQ;gBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;aACzD,CAAC;QACJ,CAAC,CAAC;QACF,gBAAgB,EAAE,yBAAyB,EAAE;QAC7C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAsB,CAAC;SACjD,CAAC,CAAC;QACH,OAAO,EAAE,wBAAwB,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAClE,CAAC;IAEF,kHAAkH;IAClH,kHAAkH;IAClH,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACvB,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;IAC7B,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAmB;IACrD,MAAM,EAAE,OAAO,EAAE,GAAG,UAAgC,CAAC;IACrD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,OAAO,GAAG,2BAA2B,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,wCAAwC,OAAO,sCAAsC,2BAA2B,sIAAsI,CACvP,CAAC;IACJ,CAAC;IAED,SAAS,uBAAuB,CAAC,OAA+B;QAC9D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,IAAI,YAAY,CAAC,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,0BAA0B,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,IAAI,2BAA2B,GAAwC,EAAE,CAAC;IAE1E,MAAM,iCAAiC,GAAG,IAAI,gBAAgB,CAG5D,CAAC,KAAK,EAAE,EAAE;QACV,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;YACxB,OAAO,EAAE,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;QACjG,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,SAAS,iCAAiC,CACxC,IAAiD;QAEjD,OAAO,SAAS,CAAC,iCAAiC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,SAAS,qBAAqB,CAAC,MAAgC;QAC7D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;YAClC,OAAO,EAAE,IAAI,EAAE,iCAAiC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,UAAgC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAoB,EAAE;QACpE,MAAM,SAAS,GAAG,CAAC,2BAA2B,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAE9E,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,IAAI;YACrB,WAAW,EAAE,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC;YAClD,oBAAoB,EAAE,SAAS;YAC/B,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;YAC9D,UAAU,EAAE,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC;YACrD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAgB,EAAE;gBAC9C,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;oBAChB,OAAO,MAAM,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,IAAI,EAAE,iCAAiC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC7E,CAAC;YACH,CAAC,CAAC;SACH,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAA0B,EAAE;QAC/D,OAAO;YACL,QAAQ,EAAE,GAAG,CAAC,IAAI;YAClB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;SACpD,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAqC,EAAE;QAC/F,MAAM,SAAS,GAAG,CAAC,2BAA2B,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAE9E,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,IAAI;YACrB,WAAW,EAAE,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC;YAClD,oBAAoB,EAAE,SAAS;YAC/B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;YAC9D,UAAU,EAAE,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC;YACrD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,iCAAiC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC5F,kBAAkB,EAAE,MAAM,CAAC,WAAW;SACvC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,SAAS,4BAA4B,CAAC,MAAmC;QACvE,MAAM,SAAS,GAAG,CAAC,2BAA2B,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAE9E,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,IAAI;YACrB,WAAW,EAAE,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC;YAClD,oBAAoB,EAAE,SAAS;YAC/B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;YAC9D,UAAU,EAAE,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC;YACrD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAgB,EAAE;gBACnD,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;oBACrB,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,OAAO,EAAE,IAAI,EAAE,iCAAiC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACvF,CAAC,CAAC;SACH,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAA2B,EAAE;QACrE,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACjD,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,KAAK,CAAC;gBACjD,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,4BAA4B,CAAC;aAC3D,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,SAAS,yBAAyB,CAAC,MAA2B,EAAE,KAA+B;QAC7F,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS;gBACZ,OAAO,KAAK,CAAC;YACf,KAAK,QAAQ;gBACX,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;oBAC5D,WAAW,EAAE,KAAK,CAAC,WAAW;iBAC/B,CAAC;YACJ,KAAK,cAAc;gBACjB,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3G,CAAC;IACH,CAAC;IAED,SAAS,0BAA0B,CAAC,MAA2B,EAAE,MAAiC;QAChG,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,WAAW;gBACd,OAAO;oBACL,IAAI,EAAE,WAAW;oBACjB,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC;oBACvC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;iBAC3D,CAAC;YAC9B,KAAK,cAAc;gBACjB,OAAO;oBACL,IAAI,EAAE,cAAc;oBACpB,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,cAAc,EAAE,MAAM,CAAC,cAAc;oBACrC,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;iBACwC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,SAAS,wBAAwB,CAAC,MAA+B;QAC/D,MAAM,YAAY,GAAwB,EAAE,CAAC;QAC7C,KAAK,MAAM,eAAe,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YAClD,MAAM,KAAK,GAAsB,EAAE,CAAC;YACpC,KAAK,MAAM,iBAAiB,IAAI,eAAe,EAAE,CAAC;gBAChD,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC;YAC1E,CAAC;YAED,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO;YACL,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,YAAY;YACZ,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9B,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;SACvG,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC1C,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC;SAC3B,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,WAAW;QACX,OAAO;QACP,gBAAgB;QAChB,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC;AAuBD,MAAM,CAAC,MAAM,2BAA2B,GAA8B,CAAC,CAAC"}
|
package/package.json
CHANGED
package/schema/sync_rules.json
CHANGED
|
@@ -180,11 +180,12 @@
|
|
|
180
180
|
},
|
|
181
181
|
"storage_version": {
|
|
182
182
|
"type": "integer",
|
|
183
|
-
"description": "Storage version used by the storage database. By default,
|
|
183
|
+
"description": "Storage version used by the storage database. By default, version 2 is used.",
|
|
184
184
|
"default": 2,
|
|
185
185
|
"enum": [
|
|
186
186
|
2,
|
|
187
|
-
3
|
|
187
|
+
3,
|
|
188
|
+
4
|
|
188
189
|
]
|
|
189
190
|
},
|
|
190
191
|
"timestamp_max_precision": {
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { CompatibilityContext } from '../compatibility.js';
|
|
2
|
-
import { QueryParseResult } from '../legacy/SqlBucketDescriptor.js';
|
|
3
|
-
import { SourceTableRef } from '../SourceTableRef.js';
|
|
4
|
-
import { SyncRulesOptions } from '../SqlSyncRules.js';
|
|
5
|
-
import { TablePattern } from '../TablePattern.js';
|
|
6
|
-
import { EvaluateRowOptions } from '../types.js';
|
|
7
|
-
import { EvaluatedEventRowWithErrors, SqlEventSourceQuery } from './SqlEventSourceQuery.js';
|
|
8
|
-
/**
|
|
9
|
-
* A sync config event which is triggered from a SQL table change.
|
|
10
|
-
*/
|
|
11
|
-
export declare class SqlEventDescriptor {
|
|
12
|
-
private readonly compatibility;
|
|
13
|
-
name: string;
|
|
14
|
-
sourceQueries: SqlEventSourceQuery[];
|
|
15
|
-
constructor(name: string, compatibility: CompatibilityContext);
|
|
16
|
-
addSourceQuery(sql: string, options: SyncRulesOptions): QueryParseResult;
|
|
17
|
-
evaluateRowWithErrors(options: EvaluateRowOptions): EvaluatedEventRowWithErrors;
|
|
18
|
-
getSourceTables(): Set<TablePattern>;
|
|
19
|
-
tableTriggersEvent(table: SourceTableRef): boolean;
|
|
20
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { SqlRuleError } from '../errors.js';
|
|
2
|
-
import { SqlEventSourceQuery } from './SqlEventSourceQuery.js';
|
|
3
|
-
/**
|
|
4
|
-
* A sync config event which is triggered from a SQL table change.
|
|
5
|
-
*/
|
|
6
|
-
export class SqlEventDescriptor {
|
|
7
|
-
compatibility;
|
|
8
|
-
name;
|
|
9
|
-
sourceQueries = [];
|
|
10
|
-
constructor(name, compatibility) {
|
|
11
|
-
this.compatibility = compatibility;
|
|
12
|
-
this.name = name;
|
|
13
|
-
}
|
|
14
|
-
addSourceQuery(sql, options) {
|
|
15
|
-
const source = SqlEventSourceQuery.fromSql(sql, options, this.compatibility);
|
|
16
|
-
// Each source query should be for a unique table
|
|
17
|
-
const existingSourceQuery = this.sourceQueries.find((q) => q.table == source.table);
|
|
18
|
-
if (existingSourceQuery) {
|
|
19
|
-
return {
|
|
20
|
-
parsed: false,
|
|
21
|
-
errors: [new SqlRuleError('Each payload query should query a unique table', sql)]
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
this.sourceQueries.push(source);
|
|
25
|
-
return {
|
|
26
|
-
parsed: true,
|
|
27
|
-
errors: source.errors
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
evaluateRowWithErrors(options) {
|
|
31
|
-
// There should only be 1 payload result per source query
|
|
32
|
-
const matchingQuery = this.sourceQueries.find((q) => q.applies(options.sourceTable));
|
|
33
|
-
if (!matchingQuery) {
|
|
34
|
-
return {
|
|
35
|
-
errors: [{ error: `No matching source query found for table ${options.sourceTable.name}` }]
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
return matchingQuery.evaluateRowWithErrors(options.sourceTable, options.record);
|
|
39
|
-
}
|
|
40
|
-
getSourceTables() {
|
|
41
|
-
let result = new Set();
|
|
42
|
-
for (let query of this.sourceQueries) {
|
|
43
|
-
result.add(query.sourceTable);
|
|
44
|
-
}
|
|
45
|
-
return result;
|
|
46
|
-
}
|
|
47
|
-
tableTriggersEvent(table) {
|
|
48
|
-
return this.sourceQueries.some((query) => query.applies(table));
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=SqlEventDescriptor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SqlEventDescriptor.js","sourceRoot":"","sources":["../../src/events/SqlEventDescriptor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAM5C,OAAO,EAA+B,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE5F;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAMV;IALnB,IAAI,CAAS;IACb,aAAa,GAA0B,EAAE,CAAC;IAE1C,YACE,IAAY,EACK,aAAmC;QAAnC,kBAAa,GAAb,aAAa,CAAsB;QAEpD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,cAAc,CAAC,GAAW,EAAE,OAAyB;QACnD,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAE7E,iDAAiD;QACjD,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QACpF,IAAI,mBAAmB,EAAE,CAAC;YACxB,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,CAAC,IAAI,YAAY,CAAC,gDAAgD,EAAE,GAAG,CAAC,CAAC;aAClF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhC,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;IAED,qBAAqB,CAAC,OAA2B;QAC/C,yDAAyD;QACzD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO;gBACL,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,4CAA4C,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;aAC5F,CAAC;QACJ,CAAC;QAED,OAAO,aAAa,CAAC,qBAAqB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClF,CAAC;IAED,eAAe;QACb,IAAI,MAAM,GAAG,IAAI,GAAG,EAAgB,CAAC;QACrC,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,WAAY,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,kBAAkB,CAAC,KAAqB;QACtC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,CAAC;CACF"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { CompatibilityContext } from '../compatibility.js';
|
|
2
|
-
import { BaseSqlDataQuery, BaseSqlDataQueryOptions } from '../legacy/BaseSqlDataQuery.js';
|
|
3
|
-
import { SourceTableRef } from '../SourceTableRef.js';
|
|
4
|
-
import { SyncRulesOptions } from '../SqlSyncRules.js';
|
|
5
|
-
import { EvaluationError, SqliteJsonRow, SqliteRow } from '../types.js';
|
|
6
|
-
export type EvaluatedEventSourceRow = {
|
|
7
|
-
data: SqliteJsonRow;
|
|
8
|
-
};
|
|
9
|
-
export type EvaluatedEventRowWithErrors = {
|
|
10
|
-
result?: EvaluatedEventSourceRow;
|
|
11
|
-
errors: EvaluationError[];
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Defines how a Replicated Row is mapped to source parameters for events.
|
|
15
|
-
*/
|
|
16
|
-
export declare class SqlEventSourceQuery extends BaseSqlDataQuery {
|
|
17
|
-
static fromSql(sql: string, options: SyncRulesOptions, compatibility: CompatibilityContext): SqlEventSourceQuery;
|
|
18
|
-
constructor(options: BaseSqlDataQueryOptions);
|
|
19
|
-
evaluateRowWithErrors(table: SourceTableRef, row: SqliteRow): EvaluatedEventRowWithErrors;
|
|
20
|
-
}
|