@powersync/service-sync-rules 0.31.1 → 0.33.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/BaseSqlDataQuery.js +2 -1
- package/dist/BaseSqlDataQuery.js.map +1 -1
- package/dist/BucketDescription.d.ts +20 -1
- package/dist/BucketDescription.js +12 -0
- package/dist/BucketDescription.js.map +1 -1
- package/dist/BucketParameterQuerier.d.ts +5 -0
- package/dist/BucketParameterQuerier.js +15 -3
- package/dist/BucketParameterQuerier.js.map +1 -1
- package/dist/BucketSource.d.ts +1 -1
- package/dist/BucketSource.js +5 -4
- package/dist/BucketSource.js.map +1 -1
- package/dist/HydrationState.d.ts +4 -0
- package/dist/HydrationState.js +4 -2
- package/dist/HydrationState.js.map +1 -1
- package/dist/SqlParameterQuery.js +8 -12
- package/dist/SqlParameterQuery.js.map +1 -1
- package/dist/SqlSyncRules.d.ts +0 -7
- package/dist/SqlSyncRules.js +0 -1
- package/dist/SqlSyncRules.js.map +1 -1
- package/dist/StaticSqlParameterQuery.js +5 -12
- package/dist/StaticSqlParameterQuery.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/TableValuedFunctionSqlParameterQuery.js +3 -10
- package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -1
- package/dist/cast.d.ts +9 -0
- package/dist/cast.js +131 -0
- package/dist/cast.js.map +1 -0
- 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 +27 -10
- 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 +61 -40
- package/dist/compiler/sqlite.js.map +1 -1
- package/dist/compiler/table.d.ts +15 -0
- package/dist/compiler/table.js +53 -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 +2 -1
- package/dist/index.js +2 -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 +1 -9
- package/dist/schema-generators/DartSchemaGenerator.js +35 -56
- package/dist/schema-generators/DartSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/DotNetSchemaGenerator.d.ts +2 -0
- package/dist/schema-generators/DotNetSchemaGenerator.js +73 -30
- package/dist/schema-generators/DotNetSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/KotlinSchemaGenerator.d.ts +3 -0
- package/dist/schema-generators/KotlinSchemaGenerator.js +68 -5
- package/dist/schema-generators/KotlinSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/RoomSchemaGenerator.js +3 -19
- package/dist/schema-generators/RoomSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/SchemaGenerator.d.ts +7 -1
- package/dist/schema-generators/SchemaGenerator.js +35 -0
- package/dist/schema-generators/SchemaGenerator.js.map +1 -1
- package/dist/schema-generators/SwiftSchemaGenerator.d.ts +3 -0
- package/dist/schema-generators/SwiftSchemaGenerator.js +66 -2
- package/dist/schema-generators/SwiftSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/TsSchemaGenerator.d.ts +2 -0
- package/dist/schema-generators/TsSchemaGenerator.js +45 -8
- package/dist/schema-generators/TsSchemaGenerator.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/sql_functions.d.ts +1 -5
- package/dist/sql_functions.js +1 -114
- package/dist/sql_functions.js.map +1 -1
- package/dist/streams/filter.d.ts +2 -4
- package/dist/streams/filter.js +2 -1
- package/dist/streams/filter.js.map +1 -1
- package/dist/streams/variant.js +4 -7
- package/dist/streams/variant.js.map +1 -1
- package/dist/sync_plan/engine/javascript.js +14 -3
- 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/bucket_data_source.js +2 -1
- package/dist/sync_plan/evaluator/bucket_data_source.js.map +1 -1
- package/dist/sync_plan/evaluator/bucket_source.d.ts +1 -1
- package/dist/sync_plan/evaluator/bucket_source.js +31 -36
- package/dist/sync_plan/evaluator/bucket_source.js.map +1 -1
- package/dist/sync_plan/evaluator/index.d.ts +9 -1
- package/dist/sync_plan/evaluator/index.js +10 -1
- package/dist/sync_plan/evaluator/index.js.map +1 -1
- package/dist/sync_plan/evaluator/parameter_evaluator.d.ts +6 -12
- package/dist/sync_plan/evaluator/parameter_evaluator.js +51 -54
- package/dist/sync_plan/evaluator/parameter_evaluator.js.map +1 -1
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js +4 -1
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.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 +17 -7
- package/dist/sync_plan/schema_inference.d.ts +6 -2
- package/dist/sync_plan/schema_inference.js +104 -3
- package/dist/sync_plan/schema_inference.js.map +1 -1
- package/dist/sync_plan/serialize.d.ts +15 -10
- package/dist/sync_plan/serialize.js +30 -11
- package/dist/sync_plan/serialize.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +26 -4
- package/dist/utils.js +53 -17
- package/dist/utils.js.map +1 -1
- package/package.json +2 -1
- package/schema/sync_rules.json +1 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CompatibilityContext } from '../compatibility.js';
|
|
2
2
|
import { ExpressionType } from '../ExpressionType.js';
|
|
3
3
|
import { generateSqlFunctions, getOperatorReturnType } from '../sql_functions.js';
|
|
4
|
-
import { visitExpr } from './expression_visitor.js';
|
|
4
|
+
import { RecursiveExpressionVisitor, visitExpr } from './expression_visitor.js';
|
|
5
5
|
/**
|
|
6
6
|
* Infers the output schema of sync streams by resolving references against a statically-known source schema.
|
|
7
7
|
*/
|
|
@@ -29,8 +29,7 @@ export class SyncPlanSchemaAnalyzer {
|
|
|
29
29
|
if (existing != null) {
|
|
30
30
|
outputTable[definition.name] = {
|
|
31
31
|
name: definition.name,
|
|
32
|
-
|
|
33
|
-
originalType: definition.originalType == existing.originalType ? existing.originalType : undefined
|
|
32
|
+
...mergeType(existing, definition)
|
|
34
33
|
};
|
|
35
34
|
}
|
|
36
35
|
else {
|
|
@@ -50,6 +49,81 @@ export class SyncPlanSchemaAnalyzer {
|
|
|
50
49
|
}
|
|
51
50
|
}
|
|
52
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Resolves all parameters referenced in queriers for a stream, and attempts to infer their type.
|
|
54
|
+
*/
|
|
55
|
+
resolveReferencedParameters(queriers) {
|
|
56
|
+
const parameters = {};
|
|
57
|
+
const parameterInference = new ParameterTypeInference(parameters);
|
|
58
|
+
const mergeTypes = (a, b) => {
|
|
59
|
+
return a.map((type, index) => {
|
|
60
|
+
const other = b[index];
|
|
61
|
+
return mergeType(type, other);
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
// Infers the type of parameters created by a bucket or parameter lookup.
|
|
65
|
+
const inferSourceParameters = (sources) => {
|
|
66
|
+
let mergedTypes = null;
|
|
67
|
+
for (const source of sources) {
|
|
68
|
+
const tables = this.schema.getTables(source.sourceTable.toTablePattern(this.defaultSchema));
|
|
69
|
+
for (const table of tables) {
|
|
70
|
+
const typeResolver = new ExpressionTypeInference(table);
|
|
71
|
+
const types = source.parameters.map((p) => visitExpr(typeResolver, p.expr, null));
|
|
72
|
+
if (mergedTypes != null) {
|
|
73
|
+
mergedTypes = mergeTypes(mergedTypes, types);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
mergedTypes = types;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return mergedTypes;
|
|
81
|
+
};
|
|
82
|
+
// If the given parameter value is a subscription parameter, infers its type to the expected type.
|
|
83
|
+
const inferQuerierParameter = (expectedType, parameter) => {
|
|
84
|
+
switch (parameter.type) {
|
|
85
|
+
case 'request':
|
|
86
|
+
visitExpr(parameterInference, parameter.expr, expectedType);
|
|
87
|
+
break;
|
|
88
|
+
case 'lookup':
|
|
89
|
+
const lookup = parameter.lookup;
|
|
90
|
+
if (lookup.type === 'parameter') {
|
|
91
|
+
const inputTypes = inferSourceParameters([lookup.lookup]);
|
|
92
|
+
lookup.instantiation.forEach((param, i) => inferQuerierParameter(inputTypes[i], param));
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// Inputs to table-valued functions must be strings.
|
|
96
|
+
for (const input of lookup.functionInputs) {
|
|
97
|
+
visitExpr(parameterInference, input, { type: ExpressionType.TEXT });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
break;
|
|
101
|
+
case 'intersection':
|
|
102
|
+
for (const value of parameter.values) {
|
|
103
|
+
inferQuerierParameter(expectedType, value);
|
|
104
|
+
}
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
for (const querier of queriers) {
|
|
109
|
+
// Infer types of bucket parameters to apply them to subscription parameters. For a stream defined as
|
|
110
|
+
// `SELECT * FROM org WHERE id = subscription.parameter('org')`, this gives us [typeOfId]. By going through the
|
|
111
|
+
// instantiation, we see that parameter 0 corresponds to `subscription.parameter('org')` and thus infer that org
|
|
112
|
+
// needs to have a matching type. The same principle applies to values passed into parameter lookups.
|
|
113
|
+
const parameterTypes = inferSourceParameters(querier.bucket.sources);
|
|
114
|
+
querier.sourceInstantiation.forEach((param, i) => inferQuerierParameter(parameterTypes[i], param));
|
|
115
|
+
for (const filter of querier.requestFilters) {
|
|
116
|
+
visitExpr(parameterInference, filter, ExpressionTypeInference.BOOLEAN);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return parameters;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function mergeType(a, b) {
|
|
123
|
+
return {
|
|
124
|
+
type: a.type.or(b.type),
|
|
125
|
+
originalType: a.originalType === b.originalType ? a.originalType : undefined
|
|
126
|
+
};
|
|
53
127
|
}
|
|
54
128
|
/**
|
|
55
129
|
* Infers the type of expressions, resolving column references against a fixed schema table.
|
|
@@ -119,5 +193,32 @@ class ExpressionTypeInference {
|
|
|
119
193
|
// We don't care about compatibility as these functions are only used to infer types.
|
|
120
194
|
static functions = generateSqlFunctions(CompatibilityContext.FULL_BACKWARDS_COMPATIBILITY);
|
|
121
195
|
static BOOLEAN = { type: ExpressionType.INTEGER, originalType: 'bool' };
|
|
196
|
+
static ANY = { type: ExpressionType.ANY };
|
|
197
|
+
}
|
|
198
|
+
class ParameterTypeInference extends RecursiveExpressionVisitor {
|
|
199
|
+
parameters;
|
|
200
|
+
constructor(parameters) {
|
|
201
|
+
super();
|
|
202
|
+
this.parameters = parameters;
|
|
203
|
+
}
|
|
204
|
+
defaultExpression(expr, expectedType) {
|
|
205
|
+
// Recognize the "->>($subscription, $parameterName)" pattern.
|
|
206
|
+
let foundParameter = null;
|
|
207
|
+
if (expr.type == 'function' && expr.function == '->>') {
|
|
208
|
+
const [source, key] = expr.parameters;
|
|
209
|
+
if (source.type == 'data' && source.source.request === 'subscription' && key.type == 'lit_string') {
|
|
210
|
+
foundParameter = key.value;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
if (foundParameter == null) {
|
|
214
|
+
// Not a parameter, recurse into inner expressions. Because this might be a function call or another complex
|
|
215
|
+
// expression, we can't pass the outer expectedType down without changes.
|
|
216
|
+
return super.visitChildren(expr, ExpressionTypeInference.ANY);
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
const existing = this.parameters[foundParameter];
|
|
220
|
+
this.parameters[foundParameter] = existing ? mergeType(existing, expectedType) : expectedType;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
122
223
|
}
|
|
123
224
|
//# sourceMappingURL=schema_inference.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema_inference.js","sourceRoot":"","sources":["../../src/sync_plan/schema_inference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAgC,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"schema_inference.js","sourceRoot":"","sources":["../../src/sync_plan/schema_inference.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ParameterLookupScope } from '../HydrationState.js';
|
|
2
2
|
import { SqlExpression } from './expression.js';
|
|
3
|
-
import {
|
|
3
|
+
import { ColumnSqlParameterValue, RequestSqlParameterValue, StreamOptions, SyncPlan, TableProcessorTableValuedFunction } from './plan.js';
|
|
4
4
|
/**
|
|
5
5
|
* Serializes a sync plan into a simple JSON object.
|
|
6
6
|
*
|
|
@@ -8,10 +8,10 @@ import { ColumnSource, ColumnSqlParameterValue, RequestSqlParameterValue, Stream
|
|
|
8
8
|
* queriers to bucket creators. To represent this efficiently, we assign numbers to referenced elements while
|
|
9
9
|
* serializing instead of duplicating definitions.
|
|
10
10
|
*/
|
|
11
|
-
export declare function serializeSyncPlan(plan: SyncPlan):
|
|
11
|
+
export declare function serializeSyncPlan(plan: SyncPlan): SerializedSyncPlanV1;
|
|
12
12
|
export declare function deserializeSyncPlan(serialized: unknown): SyncPlan;
|
|
13
|
-
interface
|
|
14
|
-
version:
|
|
13
|
+
interface SerializedSyncPlanV1 {
|
|
14
|
+
version: number;
|
|
15
15
|
dataSources: SerializedDataSource[];
|
|
16
16
|
buckets: SerializedBucketDataSource[];
|
|
17
17
|
parameterIndexes: SerializedParameterIndexLookupCreator[];
|
|
@@ -31,24 +31,29 @@ interface SerializedTableProcessorTableValuedFunctionOutput {
|
|
|
31
31
|
function: number;
|
|
32
32
|
outputName: string;
|
|
33
33
|
}
|
|
34
|
+
type SerializedTableProcessorData = ColumnSqlParameterValue | SerializedTableProcessorTableValuedFunctionOutput;
|
|
34
35
|
interface SerializedPartitionKey {
|
|
35
|
-
expr: SqlExpression<
|
|
36
|
+
expr: SqlExpression<SerializedTableProcessorData>;
|
|
36
37
|
}
|
|
38
|
+
type SerializedColumnSource = 'star' | {
|
|
39
|
+
expr: SqlExpression<SerializedTableProcessorData>;
|
|
40
|
+
alias: string;
|
|
41
|
+
};
|
|
37
42
|
interface SerializedDataSource {
|
|
38
43
|
table: SerializedTablePattern;
|
|
39
44
|
outputTableName?: string;
|
|
40
45
|
hash: number;
|
|
41
|
-
columns:
|
|
42
|
-
filters: SqlExpression<
|
|
46
|
+
columns: SerializedColumnSource[];
|
|
47
|
+
filters: SqlExpression<SerializedTableProcessorData>[];
|
|
43
48
|
tableValuedFunctions: TableProcessorTableValuedFunction[];
|
|
44
49
|
partitionBy: SerializedPartitionKey[];
|
|
45
50
|
}
|
|
46
51
|
interface SerializedParameterIndexLookupCreator {
|
|
47
52
|
table: SerializedTablePattern;
|
|
48
53
|
hash: number;
|
|
49
|
-
lookupScope: ParameterLookupScope
|
|
50
|
-
output: SqlExpression<
|
|
51
|
-
filters: SqlExpression<
|
|
54
|
+
lookupScope: Omit<ParameterLookupScope, 'source'>;
|
|
55
|
+
output: SqlExpression<SerializedTableProcessorData>[];
|
|
56
|
+
filters: SqlExpression<SerializedTableProcessorData>[];
|
|
52
57
|
tableValuedFunctions: TableProcessorTableValuedFunction[];
|
|
53
58
|
partitionBy: SerializedPartitionKey[];
|
|
54
59
|
}
|
|
@@ -21,6 +21,9 @@ export function serializeSyncPlan(plan) {
|
|
|
21
21
|
return value;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
|
+
function serializeTableProcessorDataExpr(expr) {
|
|
25
|
+
return visitExpr(replaceFunctionReferenceWithIndex, expr, null);
|
|
26
|
+
}
|
|
24
27
|
function serializeTablePattern(pattern) {
|
|
25
28
|
return {
|
|
26
29
|
connection: pattern.connectionTag,
|
|
@@ -36,7 +39,7 @@ export function serializeSyncPlan(plan) {
|
|
|
36
39
|
}
|
|
37
40
|
function translateParameters(source) {
|
|
38
41
|
return source.parameters.map((key) => {
|
|
39
|
-
return { expr:
|
|
42
|
+
return { expr: serializeTableProcessorDataExpr(key.expr) };
|
|
40
43
|
});
|
|
41
44
|
}
|
|
42
45
|
function serializeDataSources() {
|
|
@@ -46,10 +49,17 @@ export function serializeSyncPlan(plan) {
|
|
|
46
49
|
hash: source.hashCode,
|
|
47
50
|
table: serializeTablePattern(source.sourceTable),
|
|
48
51
|
outputTableName: source.outputTableName,
|
|
49
|
-
filters: source.filters,
|
|
50
52
|
tableValuedFunctions: serializeTableValued(source),
|
|
53
|
+
filters: source.filters.map(serializeTableProcessorDataExpr),
|
|
51
54
|
partitionBy: translateParameters(source),
|
|
52
|
-
columns: source.columns
|
|
55
|
+
columns: source.columns.map((c) => {
|
|
56
|
+
if (c == 'star') {
|
|
57
|
+
return 'star';
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
return { expr: serializeTableProcessorDataExpr(c.expr), alias: c.alias };
|
|
61
|
+
}
|
|
62
|
+
})
|
|
53
63
|
};
|
|
54
64
|
});
|
|
55
65
|
}
|
|
@@ -59,8 +69,8 @@ export function serializeSyncPlan(plan) {
|
|
|
59
69
|
return {
|
|
60
70
|
hash: source.hashCode,
|
|
61
71
|
table: serializeTablePattern(source.sourceTable),
|
|
62
|
-
filters: source.filters,
|
|
63
72
|
tableValuedFunctions: serializeTableValued(source),
|
|
73
|
+
filters: source.filters.map(serializeTableProcessorDataExpr),
|
|
64
74
|
partitionBy: translateParameters(source),
|
|
65
75
|
output: source.outputs.map((out) => visitExpr(replaceFunctionReferenceWithIndex, out, null)),
|
|
66
76
|
lookupScope: source.defaultLookupScope
|
|
@@ -115,7 +125,7 @@ export function serializeSyncPlan(plan) {
|
|
|
115
125
|
};
|
|
116
126
|
}
|
|
117
127
|
return {
|
|
118
|
-
version:
|
|
128
|
+
version: 1,
|
|
119
129
|
dataSources: serializeDataSources(),
|
|
120
130
|
buckets: plan.buckets.map((bkt, index) => {
|
|
121
131
|
bucketIndex.set(bkt, index);
|
|
@@ -133,8 +143,7 @@ export function serializeSyncPlan(plan) {
|
|
|
133
143
|
};
|
|
134
144
|
}
|
|
135
145
|
export function deserializeSyncPlan(serialized) {
|
|
136
|
-
|
|
137
|
-
if (serialized.version != 'unstable') {
|
|
146
|
+
if (serialized.version != 1) {
|
|
138
147
|
throw new Error('Unknown sync plan version passed to deserializeSyncPlan()');
|
|
139
148
|
}
|
|
140
149
|
function deserializeTablePattern(pattern) {
|
|
@@ -154,9 +163,12 @@ export function deserializeSyncPlan(serialized) {
|
|
|
154
163
|
return value;
|
|
155
164
|
}
|
|
156
165
|
});
|
|
166
|
+
function deserializeTableProcessorDataExpr(expr) {
|
|
167
|
+
return visitExpr(replaceFunctionIndexWithReference, expr, null);
|
|
168
|
+
}
|
|
157
169
|
function deserializeParameters(source) {
|
|
158
170
|
return source.map((serializedKey) => {
|
|
159
|
-
return { expr:
|
|
171
|
+
return { expr: deserializeTableProcessorDataExpr(serializedKey.expr) };
|
|
160
172
|
});
|
|
161
173
|
}
|
|
162
174
|
const plan = serialized;
|
|
@@ -167,9 +179,16 @@ export function deserializeSyncPlan(serialized) {
|
|
|
167
179
|
sourceTable: deserializeTablePattern(source.table),
|
|
168
180
|
tableValuedFunctions: functions,
|
|
169
181
|
outputTableName: source.outputTableName,
|
|
170
|
-
filters: source.filters,
|
|
182
|
+
filters: source.filters.map(deserializeTableProcessorDataExpr),
|
|
171
183
|
parameters: deserializeParameters(source.partitionBy),
|
|
172
|
-
columns: source.columns
|
|
184
|
+
columns: source.columns.map((c) => {
|
|
185
|
+
if (c == 'star') {
|
|
186
|
+
return 'star';
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
return { expr: deserializeTableProcessorDataExpr(c.expr), alias: c.alias };
|
|
190
|
+
}
|
|
191
|
+
})
|
|
173
192
|
};
|
|
174
193
|
});
|
|
175
194
|
const buckets = plan.buckets.map((bkt) => {
|
|
@@ -185,7 +204,7 @@ export function deserializeSyncPlan(serialized) {
|
|
|
185
204
|
hashCode: source.hash,
|
|
186
205
|
sourceTable: deserializeTablePattern(source.table),
|
|
187
206
|
tableValuedFunctions: functions,
|
|
188
|
-
filters: source.filters,
|
|
207
|
+
filters: source.filters.map(deserializeTableProcessorDataExpr),
|
|
189
208
|
parameters: deserializeParameters(source.partitionBy),
|
|
190
209
|
outputs: source.output.map((out) => visitExpr(replaceFunctionIndexWithReference, out, null)),
|
|
191
210
|
defaultLookupScope: source.lookupScope
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/sync_plan/serialize.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { RequestFunctionCall } from './request_functions.js';
|
|
|
7
7
|
import { SourceTableInterface } from './SourceTableInterface.js';
|
|
8
8
|
import { SyncRulesOptions } from './SqlSyncRules.js';
|
|
9
9
|
import { TablePattern } from './TablePattern.js';
|
|
10
|
+
import { BucketDataSource } from './BucketSource.js';
|
|
10
11
|
import { CustomSqliteValue } from './types/custom_sqlite_value.js';
|
|
11
12
|
export interface QueryParseOptions extends SyncRulesOptions {
|
|
12
13
|
accept_potentially_dangerous_queries?: boolean;
|
|
@@ -46,6 +47,8 @@ export interface EvaluatedRow {
|
|
|
46
47
|
id: string;
|
|
47
48
|
/** Must be JSON-serializable. */
|
|
48
49
|
data: SqliteJsonRow;
|
|
50
|
+
/** Source for the evaluated row. */
|
|
51
|
+
source: BucketDataSource;
|
|
49
52
|
}
|
|
50
53
|
/**
|
|
51
54
|
* Bucket data as evaluated by the BucketDataSource.
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAC;AAGpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAQ1D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAyFtE,MAAM,UAAU,iBAAiB,CAC/B,CAA8G;IAE9G,OAAO,OAAQ,CAAqB,CAAC,KAAK,IAAI,QAAQ,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAmB;IAChD,OAAO,OAAQ,CAAkB,CAAC,MAAM,IAAI,QAAQ,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,CAA2B;IAC9D,OAAO,OAAQ,CAA0B,CAAC,0BAA0B,IAAI,QAAQ,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,CAA4B;IAChE,OAAO,QAAQ,IAAI,CAAC,CAAC;AACvB,CAAC;AAYD,MAAM,OAAO,cAAc;IACzB;;;;OAIG;IACa,aAAa,CAAsB;IAEnD;;;;OAIG;IACa,UAAU,CAAkB;IAE5C,YAAY,aAAkC;QAC5C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,UAAU;QACZ,uEAAuE;QACvE,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;IACvC,CAAC;CACF;AA2BD,MAAM,OAAO,iBAAiB;IAC5B,kBAAkB,CAAgB;IAClC,qBAAqB,CAAgB;IACrC,cAAc,CAAgB;IAE9B;;OAEG;IACH,iBAAiB,CAAS;IAE1B,gBAAgB,CAAuB;IACvC,mBAAmB,CAAgB;IAEnC;;OAEG;IACH,eAAe,CAAS;IAExB,MAAM,CAAkB;IAKxB,YAAY,YAAmD,EAAE,gBAAsC;QACrG,IAAI,YAAY,YAAY,iBAAiB,EAAE,CAAC;YAC9C,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,kBAAkB,CAAC;YAC1D,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC,qBAAqB,CAAC;YAChE,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;YAClD,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC,iBAAiB,CAAC;YACxD,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,eAAe,CAAC;YACpD,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;YACtD,IAAI,CAAC,mBAAmB,GAAG,YAAY,CAAC,mBAAmB,CAAC;YAC5D,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;YAClC,OAAO;QACT,CAAC;QAED,iDAAiD;QACjD,MAAM,gBAAgB,GAAG,YAAY,CAAC,UAA6C,CAAC;QAEpF,MAAM,eAAe,GAAG;YACtB,GAAG,gBAAgB;YACnB,oDAAoD;YACpD,OAAO,EAAE,YAAY,CAAC,UAAU;SACjC,CAAC;QAEF,gHAAgH;QAChH,iBAAiB;QACjB,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,aAAa,CAAC;QACrD,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAChD,eAAe,EACf,oBAAoB,CAAC,4BAA4B,CAClD,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAErE,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC7D,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,gBAAiB,EAAE,oBAAoB,CAAC,4BAA4B,CAAC,CAAC;QAClH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,MAAc;QAClC,IAAI,KAAK,IAAI,kBAAkB,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,KAAK,IAAI,iBAAiB,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,KAAK,IAAI,yBAAyB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAC/E,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,yBAAyB,CAAC,MAA2B;QACnD,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC1C,KAAK,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAChC,KAAK,CAAC,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEtD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA6MD,MAAM,UAAU,gCAAgC,CAAC,MAAsB;IACrE,OAAQ,MAAyC,CAAC,KAAK,IAAI,IAAI,CAAC;AAClE,CAAC"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,9 +1,35 @@
|
|
|
1
1
|
import { Replacer } from '@powersync/service-jsonbig';
|
|
2
2
|
import { SelectFromStatement, Statement } from 'pgsql-ast-parser';
|
|
3
|
+
import { BucketDescription, BucketInclusionReason, BucketPriority, ResolvedBucket } from './BucketDescription.js';
|
|
4
|
+
import { BucketDataSource } from './BucketSource.js';
|
|
3
5
|
import { CompatibilityContext } from './compatibility.js';
|
|
4
6
|
import { BucketDataScope } from './HydrationState.js';
|
|
5
7
|
import { DatabaseInputRow, DatabaseInputValue, SqliteInputRow, SqliteInputValue, SqliteJsonRow, SqliteJsonValue, SqliteParameterValue, SqliteRow, SqliteValue } from './types.js';
|
|
6
8
|
export declare function isSelectStatement(q: Statement): q is SelectFromStatement;
|
|
9
|
+
export declare function bucketDescription(scope: BucketDataScope, serializedParameters: string, priority: BucketPriority): BucketDescription;
|
|
10
|
+
export declare function resolvedBucket(description: BucketDescription, options: {
|
|
11
|
+
definition: string;
|
|
12
|
+
inclusion_reasons: BucketInclusionReason[];
|
|
13
|
+
}): ResolvedBucket;
|
|
14
|
+
/**
|
|
15
|
+
* Resolves duplicate buckets in the given array, merging the inclusion reasons for duplicate.
|
|
16
|
+
*
|
|
17
|
+
* It's possible for duplicates to occur when a stream has multiple subscriptions, consider e.g.
|
|
18
|
+
*
|
|
19
|
+
* ```
|
|
20
|
+
* sync_streams:
|
|
21
|
+
* assets_by_category:
|
|
22
|
+
* query: select * from assets where category in (request.parameters() -> 'categories')
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Here, a client might subscribe once with `{"categories": [1]}` and once with `{"categories": [1, 2]}`. Since each
|
|
26
|
+
* subscription is evaluated independently, this would lead to three buckets, with a duplicate `assets_by_category[1]`
|
|
27
|
+
* bucket.
|
|
28
|
+
*/
|
|
29
|
+
export declare function mergeBuckets(buckets: ResolvedBucket[]): ResolvedBucket[];
|
|
30
|
+
export declare function withBucketSource<T extends object>(value: T, source: BucketDataSource): T & {
|
|
31
|
+
source: BucketDataSource;
|
|
32
|
+
};
|
|
7
33
|
export declare function buildBucketName(scope: BucketDataScope, serializedParameters: string): string;
|
|
8
34
|
export declare function serializeBucketParameters(bucketParameters: string[], params: Record<string, SqliteJsonValue>): string;
|
|
9
35
|
/**
|
|
@@ -52,7 +78,3 @@ export declare const JSONBucketNameSerialize: {
|
|
|
52
78
|
* Lookup serialization must be number-agnostic. I.e. normalize numbers, instead of preserving numbers.
|
|
53
79
|
*/
|
|
54
80
|
export declare function normalizeParameterValue(value: SqliteJsonValue): SqliteJsonValue;
|
|
55
|
-
/**
|
|
56
|
-
* Extracts and normalizes the ID column from a row.
|
|
57
|
-
*/
|
|
58
|
-
export declare function idFromData(data: SqliteJsonRow): string;
|
package/dist/utils.js
CHANGED
|
@@ -2,10 +2,62 @@ import { JSONBig, JsonContainer, stringifyRaw } from '@powersync/service-jsonbig
|
|
|
2
2
|
import { SyncRuleProcessingError as SyncRulesProcessingError } from './errors.js';
|
|
3
3
|
import { SQLITE_FALSE, SQLITE_TRUE } from './sql_support.js';
|
|
4
4
|
import { CustomArray, CustomObject, CustomSqliteValue } from './types/custom_sqlite_value.js';
|
|
5
|
-
import { castAsText } from './sql_functions.js';
|
|
6
5
|
export function isSelectStatement(q) {
|
|
7
6
|
return q.type == 'select';
|
|
8
7
|
}
|
|
8
|
+
export function bucketDescription(scope, serializedParameters, priority) {
|
|
9
|
+
const info = { bucket: scope.bucketPrefix + serializedParameters, priority };
|
|
10
|
+
return withBucketSource(info, scope.source);
|
|
11
|
+
}
|
|
12
|
+
export function resolvedBucket(description, options) {
|
|
13
|
+
const result = {
|
|
14
|
+
...description,
|
|
15
|
+
...options
|
|
16
|
+
};
|
|
17
|
+
return withBucketSource(result, description.source);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Resolves duplicate buckets in the given array, merging the inclusion reasons for duplicate.
|
|
21
|
+
*
|
|
22
|
+
* It's possible for duplicates to occur when a stream has multiple subscriptions, consider e.g.
|
|
23
|
+
*
|
|
24
|
+
* ```
|
|
25
|
+
* sync_streams:
|
|
26
|
+
* assets_by_category:
|
|
27
|
+
* query: select * from assets where category in (request.parameters() -> 'categories')
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* Here, a client might subscribe once with `{"categories": [1]}` and once with `{"categories": [1, 2]}`. Since each
|
|
31
|
+
* subscription is evaluated independently, this would lead to three buckets, with a duplicate `assets_by_category[1]`
|
|
32
|
+
* bucket.
|
|
33
|
+
*/
|
|
34
|
+
export function mergeBuckets(buckets) {
|
|
35
|
+
const byBucketId = {};
|
|
36
|
+
for (const bucket of buckets) {
|
|
37
|
+
if (Object.hasOwn(byBucketId, bucket.bucket)) {
|
|
38
|
+
byBucketId[bucket.bucket].inclusion_reasons.push(...bucket.inclusion_reasons);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// Clone so that we can modify the merged value without affecting the input value
|
|
42
|
+
byBucketId[bucket.bucket] = cloneResolvedBucket(bucket);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return Object.values(byBucketId);
|
|
46
|
+
}
|
|
47
|
+
function cloneResolvedBucket(bucket) {
|
|
48
|
+
let clone = structuredClone(bucket);
|
|
49
|
+
// The structured clone does not include the non-enumerable source - set it directly.
|
|
50
|
+
return withBucketSource(clone, bucket.source);
|
|
51
|
+
}
|
|
52
|
+
export function withBucketSource(value, source) {
|
|
53
|
+
Object.defineProperty(value, 'source', {
|
|
54
|
+
value: source,
|
|
55
|
+
// This is important. If the property is enumerable, it may end up in JSON output to the client,
|
|
56
|
+
// and will pollute tests.
|
|
57
|
+
enumerable: false
|
|
58
|
+
});
|
|
59
|
+
return value;
|
|
60
|
+
}
|
|
9
61
|
export function buildBucketName(scope, serializedParameters) {
|
|
10
62
|
return scope.bucketPrefix + serializedParameters;
|
|
11
63
|
}
|
|
@@ -217,20 +269,4 @@ export function normalizeParameterValue(value) {
|
|
|
217
269
|
}
|
|
218
270
|
return value;
|
|
219
271
|
}
|
|
220
|
-
/**
|
|
221
|
-
* Extracts and normalizes the ID column from a row.
|
|
222
|
-
*/
|
|
223
|
-
export function idFromData(data) {
|
|
224
|
-
let id = data.id;
|
|
225
|
-
if (typeof id != 'string') {
|
|
226
|
-
// While an explicit cast would be better, this covers against very common
|
|
227
|
-
// issues when initially testing out sync, for example when the id column is an
|
|
228
|
-
// auto-incrementing integer.
|
|
229
|
-
// If there is no id column, we use a blank id. This will result in the user syncing
|
|
230
|
-
// a single arbitrary row for this table - better than just not being able to sync
|
|
231
|
-
// anything.
|
|
232
|
-
id = castAsText(id) ?? '';
|
|
233
|
-
}
|
|
234
|
-
return id;
|
|
235
|
-
}
|
|
236
272
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAY,YAAY,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powersync/service-sync-rules",
|
|
3
3
|
"repository": "https://github.com/powersync-ja/powersync-service",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.33.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"license": "FSL-1.1-ALv2",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@types/node": "^22.16.2",
|
|
26
|
+
"ebnf": "^1.9.1",
|
|
26
27
|
"vitest": "^4.0.16"
|
|
27
28
|
},
|
|
28
29
|
"scripts": {
|
package/schema/sync_rules.json
CHANGED
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
"type": "integer",
|
|
168
168
|
"default": 1,
|
|
169
169
|
"minimum": 1,
|
|
170
|
-
"exclusiveMaximum":
|
|
170
|
+
"exclusiveMaximum": 4
|
|
171
171
|
},
|
|
172
172
|
"timestamp_max_precision": {
|
|
173
173
|
"type": "string",
|
|
@@ -178,9 +178,6 @@
|
|
|
178
178
|
"nanoseconds"
|
|
179
179
|
]
|
|
180
180
|
},
|
|
181
|
-
"sync_config_compiler": {
|
|
182
|
-
"type": "boolean"
|
|
183
|
-
},
|
|
184
181
|
"timestamps_iso8601": {
|
|
185
182
|
"type": "boolean",
|
|
186
183
|
"description": "Enabled by default starting from edition 2: Consistently renders timestamps with an ISO 8601-compatible format (previous versions used a space instead of a T to separate date and time)."
|