@powersync/service-sync-rules 0.31.0 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SqlSyncRules.d.ts +0 -7
- package/dist/SqlSyncRules.js +0 -1
- package/dist/SqlSyncRules.js.map +1 -1
- package/dist/SyncConfig.d.ts +5 -2
- package/dist/SyncConfig.js +6 -9
- package/dist/SyncConfig.js.map +1 -1
- package/dist/compatibility.d.ts +2 -1
- package/dist/compatibility.js +1 -0
- package/dist/compatibility.js.map +1 -1
- package/dist/compiler/bucket_resolver.d.ts +3 -3
- package/dist/compiler/bucket_resolver.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 +8 -0
- package/dist/compiler/ir_to_sync_plan.js +64 -12
- package/dist/compiler/ir_to_sync_plan.js.map +1 -1
- package/dist/compiler/parser.js +44 -12
- package/dist/compiler/parser.js.map +1 -1
- package/dist/compiler/querier_graph.d.ts +2 -1
- package/dist/compiler/querier_graph.js +88 -26
- package/dist/compiler/querier_graph.js.map +1 -1
- package/dist/compiler/rows.d.ts +32 -3
- package/dist/compiler/rows.js +59 -2
- package/dist/compiler/rows.js.map +1 -1
- package/dist/compiler/scope.d.ts +4 -1
- package/dist/compiler/scope.js +13 -2
- package/dist/compiler/scope.js.map +1 -1
- package/dist/compiler/sqlite.d.ts +3 -11
- package/dist/compiler/sqlite.js +115 -79
- package/dist/compiler/sqlite.js.map +1 -1
- package/dist/compiler/table.d.ts +24 -7
- package/dist/compiler/table.js +58 -2
- package/dist/compiler/table.js.map +1 -1
- package/dist/from_yaml.d.ts +0 -4
- package/dist/from_yaml.js +18 -10
- package/dist/from_yaml.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/json_schema.js +1 -4
- package/dist/json_schema.js.map +1 -1
- package/dist/schema-generators/DartSchemaGenerator.d.ts +0 -9
- package/dist/schema-generators/DartSchemaGenerator.js +0 -55
- package/dist/schema-generators/DartSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/DotNetSchemaGenerator.js +21 -28
- package/dist/schema-generators/DotNetSchemaGenerator.js.map +1 -1
- package/dist/schema-generators/generators.d.ts +1 -2
- package/dist/schema-generators/generators.js +1 -2
- package/dist/schema-generators/generators.js.map +1 -1
- package/dist/sync_plan/engine/javascript.js +13 -2
- package/dist/sync_plan/engine/javascript.js.map +1 -1
- package/dist/sync_plan/engine/scalar_expression_engine.d.ts +4 -2
- package/dist/sync_plan/engine/scalar_expression_engine.js +18 -0
- package/dist/sync_plan/engine/scalar_expression_engine.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 +8 -6
- package/dist/sync_plan/evaluator/bucket_data_source.js.map +1 -1
- package/dist/sync_plan/evaluator/bucket_source.js +1 -1
- package/dist/sync_plan/evaluator/bucket_source.js.map +1 -1
- package/dist/sync_plan/evaluator/index.d.ts +3 -1
- package/dist/sync_plan/evaluator/index.js +3 -1
- package/dist/sync_plan/evaluator/index.js.map +1 -1
- package/dist/sync_plan/evaluator/parameter_evaluator.js +22 -2
- package/dist/sync_plan/evaluator/parameter_evaluator.js.map +1 -1
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js +7 -6
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js.map +1 -1
- package/dist/sync_plan/evaluator/table_processor_to_sql.d.ts +20 -0
- package/dist/sync_plan/evaluator/table_processor_to_sql.js +28 -0
- package/dist/sync_plan/evaluator/table_processor_to_sql.js.map +1 -0
- package/dist/sync_plan/plan.d.ts +51 -9
- package/dist/sync_plan/serialize.d.ts +24 -10
- package/dist/sync_plan/serialize.js +75 -15
- package/dist/sync_plan/serialize.js.map +1 -1
- package/package.json +2 -1
- package/schema/sync_rules.json +1 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"querier_graph.js","sourceRoot":"","sources":["../../src/compiler/querier_graph.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"querier_graph.js","sourceRoot":"","sources":["../../src/compiler/querier_graph.ts"],"names":[],"mappings":"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"}
|
package/dist/compiler/rows.d.ts
CHANGED
|
@@ -1,20 +1,34 @@
|
|
|
1
1
|
import { StableHasher } from './equality.js';
|
|
2
2
|
import { EqualsIgnoringResultSet } from './compatibility.js';
|
|
3
3
|
import { RowExpression } from './filter.js';
|
|
4
|
-
import { PhysicalSourceResultSet } from './table.js';
|
|
4
|
+
import { PhysicalSourceResultSet, TableValuedResultSet } from './table.js';
|
|
5
5
|
import { ImplicitSchemaTablePattern } from '../TablePattern.js';
|
|
6
6
|
/**
|
|
7
7
|
* A key describing how buckets or parameter lookups are parameterized.
|
|
8
8
|
*
|
|
9
9
|
* When constructing buckets, a value needs to be passed for each such key.
|
|
10
|
-
*
|
|
10
|
+
* When invoking parameter lookups, values need to be passed as inputs.
|
|
11
11
|
*/
|
|
12
|
-
export declare class PartitionKey implements EqualsIgnoringResultSet {
|
|
12
|
+
export declare abstract class PartitionKey implements EqualsIgnoringResultSet {
|
|
13
|
+
abstract equalsAssumingSameResultSet(other: EqualsIgnoringResultSet): boolean;
|
|
14
|
+
abstract assumingSameResultSetEqualityHashCode(hasher: StableHasher): void;
|
|
15
|
+
}
|
|
16
|
+
export declare class ScalarPartitionKey extends PartitionKey {
|
|
13
17
|
readonly expression: RowExpression;
|
|
14
18
|
constructor(expression: RowExpression);
|
|
15
19
|
equalsAssumingSameResultSet(other: EqualsIgnoringResultSet): boolean;
|
|
16
20
|
assumingSameResultSetEqualityHashCode(hasher: StableHasher): void;
|
|
17
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* A partition key derived from the output of a table-valued function added to a {@link SourceRowProcessor}.
|
|
24
|
+
*/
|
|
25
|
+
export declare class TableValuedPartitionKey extends PartitionKey {
|
|
26
|
+
readonly fromFunction: SourceRowProcessorAddedTableValuedFunction;
|
|
27
|
+
readonly output: RowExpression;
|
|
28
|
+
constructor(fromFunction: SourceRowProcessorAddedTableValuedFunction, output: RowExpression);
|
|
29
|
+
equalsAssumingSameResultSet(other: EqualsIgnoringResultSet): boolean;
|
|
30
|
+
assumingSameResultSetEqualityHashCode(hasher: StableHasher): void;
|
|
31
|
+
}
|
|
18
32
|
/**
|
|
19
33
|
* Something that processes source rows during replication.
|
|
20
34
|
*
|
|
@@ -26,6 +40,7 @@ interface SourceProcessorOptions {
|
|
|
26
40
|
readonly syntacticSource: PhysicalSourceResultSet;
|
|
27
41
|
readonly filters: RowExpression[];
|
|
28
42
|
readonly partitionBy: PartitionKey[];
|
|
43
|
+
readonly addedFunctions: SourceRowProcessorAddedTableValuedFunction[];
|
|
29
44
|
}
|
|
30
45
|
declare abstract class BaseSourceRowProcessor {
|
|
31
46
|
/**
|
|
@@ -39,6 +54,7 @@ declare abstract class BaseSourceRowProcessor {
|
|
|
39
54
|
*/
|
|
40
55
|
readonly filters: RowExpression[];
|
|
41
56
|
readonly partitionBy: PartitionKey[];
|
|
57
|
+
readonly addedFunctions: SourceRowProcessorAddedTableValuedFunction[];
|
|
42
58
|
constructor(options: SourceProcessorOptions);
|
|
43
59
|
/**
|
|
44
60
|
* A hash code for the equivalence relation formed by {@link behavesIdenticalTo}.
|
|
@@ -96,6 +112,19 @@ export declare class PointLookup extends BaseSourceRowProcessor {
|
|
|
96
112
|
buildBehaviorHashCode(hasher: StableHasher): void;
|
|
97
113
|
behavesIdenticalTo(other: PointLookup): boolean;
|
|
98
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* A table-valued function attached to a source processor.
|
|
117
|
+
*
|
|
118
|
+
* When processing source rows, all attached table-valued functions are expanded as well.
|
|
119
|
+
*/
|
|
120
|
+
export declare class SourceRowProcessorAddedTableValuedFunction implements EqualsIgnoringResultSet {
|
|
121
|
+
readonly syntacticSource: TableValuedResultSet;
|
|
122
|
+
readonly functionName: string;
|
|
123
|
+
readonly inputs: RowExpression[];
|
|
124
|
+
constructor(syntacticSource: TableValuedResultSet, functionName: string, inputs: RowExpression[]);
|
|
125
|
+
equalsAssumingSameResultSet(other: EqualsIgnoringResultSet): boolean;
|
|
126
|
+
assumingSameResultSetEqualityHashCode(hasher: StableHasher): void;
|
|
127
|
+
}
|
|
99
128
|
export type ColumnSource = StarColumnSource | ExpressionColumnSource;
|
|
100
129
|
export declare class StarColumnSource implements EqualsIgnoringResultSet {
|
|
101
130
|
private constructor();
|
package/dist/compiler/rows.js
CHANGED
|
@@ -4,21 +4,47 @@ import { equalsIgnoringResultSetList, equalsIgnoringResultSetUnordered } from '.
|
|
|
4
4
|
* A key describing how buckets or parameter lookups are parameterized.
|
|
5
5
|
*
|
|
6
6
|
* When constructing buckets, a value needs to be passed for each such key.
|
|
7
|
-
*
|
|
7
|
+
* When invoking parameter lookups, values need to be passed as inputs.
|
|
8
8
|
*/
|
|
9
9
|
export class PartitionKey {
|
|
10
|
+
}
|
|
11
|
+
export class ScalarPartitionKey extends PartitionKey {
|
|
10
12
|
expression;
|
|
11
13
|
constructor(expression) {
|
|
14
|
+
super();
|
|
12
15
|
this.expression = expression;
|
|
13
16
|
}
|
|
14
17
|
equalsAssumingSameResultSet(other) {
|
|
15
|
-
return (other instanceof
|
|
18
|
+
return (other instanceof ScalarPartitionKey &&
|
|
16
19
|
other.expression.expression.equalsAssumingSameResultSet(this.expression.expression));
|
|
17
20
|
}
|
|
18
21
|
assumingSameResultSetEqualityHashCode(hasher) {
|
|
19
22
|
this.expression.expression.assumingSameResultSetEqualityHashCode(hasher);
|
|
20
23
|
}
|
|
21
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* A partition key derived from the output of a table-valued function added to a {@link SourceRowProcessor}.
|
|
27
|
+
*/
|
|
28
|
+
export class TableValuedPartitionKey extends PartitionKey {
|
|
29
|
+
fromFunction;
|
|
30
|
+
output;
|
|
31
|
+
constructor(fromFunction, output) {
|
|
32
|
+
super();
|
|
33
|
+
this.fromFunction = fromFunction;
|
|
34
|
+
this.output = output;
|
|
35
|
+
}
|
|
36
|
+
equalsAssumingSameResultSet(other) {
|
|
37
|
+
if (!(other instanceof TableValuedPartitionKey)) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
return (other.fromFunction.equalsAssumingSameResultSet(this.fromFunction) &&
|
|
41
|
+
other.output.equalsAssumingSameResultSet(this.output));
|
|
42
|
+
}
|
|
43
|
+
assumingSameResultSetEqualityHashCode(hasher) {
|
|
44
|
+
this.fromFunction.assumingSameResultSetEqualityHashCode(hasher);
|
|
45
|
+
this.output.assumingSameResultSetEqualityHashCode(hasher);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
22
48
|
class BaseSourceRowProcessor {
|
|
23
49
|
/**
|
|
24
50
|
* The table names being matched, along with an AST reference describing its syntactic source.
|
|
@@ -31,10 +57,12 @@ class BaseSourceRowProcessor {
|
|
|
31
57
|
*/
|
|
32
58
|
filters;
|
|
33
59
|
partitionBy;
|
|
60
|
+
addedFunctions;
|
|
34
61
|
constructor(options) {
|
|
35
62
|
this.syntacticSource = options.syntacticSource;
|
|
36
63
|
this.filters = options.filters;
|
|
37
64
|
this.partitionBy = options.partitionBy;
|
|
65
|
+
this.addedFunctions = options.addedFunctions;
|
|
38
66
|
}
|
|
39
67
|
get behaviorHashCode() {
|
|
40
68
|
const hasher = new StableHasher();
|
|
@@ -51,6 +79,7 @@ class BaseSourceRowProcessor {
|
|
|
51
79
|
hasher.add(this.tablePattern);
|
|
52
80
|
equalsIgnoringResultSetUnordered.hash(hasher, this.filters.map((f) => f.expression));
|
|
53
81
|
equalsIgnoringResultSetList.hash(hasher, this.partitionBy);
|
|
82
|
+
equalsIgnoringResultSetUnordered.hash(hasher, this.addedFunctions);
|
|
54
83
|
}
|
|
55
84
|
baseMatchesOther(other) {
|
|
56
85
|
if (!other.tablePattern.equals(this.tablePattern)) {
|
|
@@ -62,6 +91,9 @@ class BaseSourceRowProcessor {
|
|
|
62
91
|
if (!equalsIgnoringResultSetUnordered.equals(other.filters, this.filters)) {
|
|
63
92
|
return false;
|
|
64
93
|
}
|
|
94
|
+
if (!equalsIgnoringResultSetUnordered.equals(other.addedFunctions, this.addedFunctions)) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
65
97
|
return true;
|
|
66
98
|
}
|
|
67
99
|
}
|
|
@@ -128,6 +160,31 @@ export class PointLookup extends BaseSourceRowProcessor {
|
|
|
128
160
|
return this.baseMatchesOther(other) && equalsIgnoringResultSetList.equals(other.result, this.result);
|
|
129
161
|
}
|
|
130
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* A table-valued function attached to a source processor.
|
|
165
|
+
*
|
|
166
|
+
* When processing source rows, all attached table-valued functions are expanded as well.
|
|
167
|
+
*/
|
|
168
|
+
export class SourceRowProcessorAddedTableValuedFunction {
|
|
169
|
+
syntacticSource;
|
|
170
|
+
functionName;
|
|
171
|
+
inputs;
|
|
172
|
+
constructor(syntacticSource, functionName, inputs) {
|
|
173
|
+
this.syntacticSource = syntacticSource;
|
|
174
|
+
this.functionName = functionName;
|
|
175
|
+
this.inputs = inputs;
|
|
176
|
+
}
|
|
177
|
+
equalsAssumingSameResultSet(other) {
|
|
178
|
+
if (!(other instanceof SourceRowProcessorAddedTableValuedFunction)) {
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
return other.functionName == this.functionName && equalsIgnoringResultSetList.equals(other.inputs, this.inputs);
|
|
182
|
+
}
|
|
183
|
+
assumingSameResultSetEqualityHashCode(hasher) {
|
|
184
|
+
hasher.addString(this.functionName);
|
|
185
|
+
equalsIgnoringResultSetList.hash(hasher, this.inputs);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
131
188
|
export class StarColumnSource {
|
|
132
189
|
constructor() { }
|
|
133
190
|
equalsAssumingSameResultSet(other) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rows.js","sourceRoot":"","sources":["../../src/compiler/rows.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAEL,2BAA2B,EAC3B,gCAAgC,EACjC,MAAM,oBAAoB,CAAC;AAK5B;;;;;GAKG;AACH,MAAM,OAAO,YAAY;
|
|
1
|
+
{"version":3,"file":"rows.js","sourceRoot":"","sources":["../../src/compiler/rows.ts"],"names":[],"mappings":"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"}
|
package/dist/compiler/scope.d.ts
CHANGED
|
@@ -14,7 +14,10 @@ export declare class SqlScope {
|
|
|
14
14
|
parent?: SqlScope;
|
|
15
15
|
});
|
|
16
16
|
get rootScope(): SqlScope;
|
|
17
|
-
|
|
17
|
+
/**
|
|
18
|
+
* The default result set that unqualified references resolve to.
|
|
19
|
+
*/
|
|
20
|
+
get defaultResultSet(): SyntacticResultSetSource | null;
|
|
18
21
|
registerResultSet(errors: ParsingErrorListener, name: string, source: SyntacticResultSetSource): void;
|
|
19
22
|
resolveResultSetForReference(name: string): SyntacticResultSetSource | undefined;
|
|
20
23
|
registerCommonTableExpression(name: string, subquery: PreparedSubquery): void;
|
package/dist/compiler/scope.js
CHANGED
|
@@ -17,8 +17,19 @@ export class SqlScope {
|
|
|
17
17
|
}
|
|
18
18
|
return maybeRoot;
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
/**
|
|
21
|
+
* The default result set that unqualified references resolve to.
|
|
22
|
+
*/
|
|
23
|
+
get defaultResultSet() {
|
|
24
|
+
if (this.nameToResultSet.size == 0) {
|
|
25
|
+
return this.parent?.defaultResultSet ?? null;
|
|
26
|
+
}
|
|
27
|
+
else if (this.nameToResultSet.size == 1) {
|
|
28
|
+
return this.nameToResultSet.values().next().value;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
22
33
|
}
|
|
23
34
|
registerResultSet(errors, name, source) {
|
|
24
35
|
const lower = name.toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/compiler/scope.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,OAAO,QAAQ;IACV,MAAM,CAAY;IACV,eAAe,GAAG,IAAI,GAAG,EAAoC,CAAC;IAC9D,sBAAsB,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE9E,YAAY,OAA8B;QACxC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,IAAI,SAAS,GAAa,IAAI,CAAC;QAC/B,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC;YACxB,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,
|
|
1
|
+
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/compiler/scope.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,OAAO,QAAQ;IACV,MAAM,CAAY;IACV,eAAe,GAAG,IAAI,GAAG,EAAoC,CAAC;IAC9D,sBAAsB,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE9E,YAAY,OAA8B;QACxC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACX,IAAI,SAAS,GAAa,IAAI,CAAC;QAC/B,OAAO,SAAS,CAAC,MAAM,EAAE,CAAC;YACxB,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAI,gBAAgB;QAClB,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,MAAM,EAAE,gBAAgB,IAAI,IAAI,CAAC;QAC/C,CAAC;aAAM,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,MAA4B,EAAE,IAAY,EAAE,MAAgC;QAC5F,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,mBAAmB,IAAI,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAChF,OAAO;QACT,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,4BAA4B,CAAC,IAAY;QACvC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACzG,CAAC;IAED,6BAA6B,CAAC,IAAY,EAAE,QAA0B;QACpE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED,4BAA4B,CAAC,IAAY;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACxE,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,CAAC;CACF"}
|
|
@@ -61,17 +61,9 @@ export declare class PostgresToSqlite {
|
|
|
61
61
|
private translateNodeWithLocation;
|
|
62
62
|
private translateToNode;
|
|
63
63
|
private invalidExpression;
|
|
64
|
-
private
|
|
64
|
+
private translateInOrOverlapOperator;
|
|
65
65
|
private desugarInValues;
|
|
66
|
-
private
|
|
67
|
-
/**
|
|
68
|
-
* Desugar `$left IN $right`, where `$right` is a scalar expression. This is not valid SQL, but in PowerSync we
|
|
69
|
-
* interpret that as `left IN (SELECT value FROM json_each(right))`.
|
|
70
|
-
*/
|
|
71
|
-
private desugarInScalar;
|
|
72
|
-
/**
|
|
73
|
-
* Desugar `$left IN cteName` to `$left IN (SELECT cteName.onlyColumn FROM cteName)`.
|
|
74
|
-
*/
|
|
75
|
-
private desugarInCte;
|
|
66
|
+
private negate;
|
|
76
67
|
private translateRequestParameter;
|
|
68
|
+
private sourceLocation;
|
|
77
69
|
}
|
package/dist/compiler/sqlite.js
CHANGED
|
@@ -17,7 +17,7 @@ export class PostgresToSqlite {
|
|
|
17
17
|
}
|
|
18
18
|
translateNodeWithLocation(expr) {
|
|
19
19
|
const translated = this.translateToNode(expr);
|
|
20
|
-
this.options.locations.sourceForNode.set(translated, expr);
|
|
20
|
+
this.options.locations.sourceForNode.set(translated, this.sourceLocation(expr));
|
|
21
21
|
return translated;
|
|
22
22
|
}
|
|
23
23
|
translateToNode(expr) {
|
|
@@ -146,7 +146,10 @@ export class PostgresToSqlite {
|
|
|
146
146
|
}
|
|
147
147
|
case 'binary': {
|
|
148
148
|
if (expr.op === 'IN' || expr.op === 'NOT IN') {
|
|
149
|
-
return this.
|
|
149
|
+
return this.translateInOrOverlapOperator(expr, 'in', expr.op === 'NOT IN');
|
|
150
|
+
}
|
|
151
|
+
if (expr.op === '&&') {
|
|
152
|
+
return this.translateInOrOverlapOperator(expr, 'overlap', false);
|
|
150
153
|
}
|
|
151
154
|
const left = this.translateNodeWithLocation(expr.left);
|
|
152
155
|
const right = this.translateNodeWithLocation(expr.right);
|
|
@@ -157,18 +160,12 @@ export class PostgresToSqlite {
|
|
|
157
160
|
return { type: 'function', function: 'like', parameters: [left, right] };
|
|
158
161
|
}
|
|
159
162
|
else if (expr.op === 'NOT LIKE') {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
operator: 'not',
|
|
163
|
-
operand: { type: 'function', function: 'like', parameters: [left, right] }
|
|
164
|
-
};
|
|
163
|
+
this.options.errors.report('LIKE expressions are not currently supported.', expr);
|
|
164
|
+
return this.negate(expr, { type: 'function', function: 'like', parameters: [left, right] });
|
|
165
165
|
}
|
|
166
166
|
else if (expr.op === '!=') {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
operator: 'not',
|
|
170
|
-
operand: { type: 'binary', left, right, operator: '=' }
|
|
171
|
-
};
|
|
167
|
+
const equals = { type: 'binary', left, right, operator: '=' };
|
|
168
|
+
return this.negate(expr, equals);
|
|
172
169
|
}
|
|
173
170
|
const supported = supportedBinaryOperators[expr.op];
|
|
174
171
|
if (supported == null) {
|
|
@@ -187,7 +184,7 @@ export class PostgresToSqlite {
|
|
|
187
184
|
case '+':
|
|
188
185
|
return { type: 'unary', operator: expr.op, operand: this.translateNodeWithLocation(expr.operand) };
|
|
189
186
|
case 'NOT':
|
|
190
|
-
return
|
|
187
|
+
return this.negate(expr, this.translateToNode(expr.operand));
|
|
191
188
|
case 'IS NOT NULL':
|
|
192
189
|
not = true;
|
|
193
190
|
case 'IS NULL': // fallthrough
|
|
@@ -210,7 +207,12 @@ export class PostgresToSqlite {
|
|
|
210
207
|
operator: 'is',
|
|
211
208
|
right: rightHandSideOfIs
|
|
212
209
|
};
|
|
213
|
-
|
|
210
|
+
if (not) {
|
|
211
|
+
return this.negate(expr, mappedIs);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
return mappedIs;
|
|
215
|
+
}
|
|
214
216
|
}
|
|
215
217
|
case 'cast': {
|
|
216
218
|
const to = expr.to?.name?.toLowerCase();
|
|
@@ -228,7 +230,7 @@ export class PostgresToSqlite {
|
|
|
228
230
|
low: this.translateNodeWithLocation(expr.lo),
|
|
229
231
|
high: this.translateNodeWithLocation(expr.hi)
|
|
230
232
|
};
|
|
231
|
-
return expr.op === 'BETWEEN' ?
|
|
233
|
+
return expr.op === 'NOT BETWEEN' ? this.negate(expr, between) : between;
|
|
232
234
|
}
|
|
233
235
|
case 'case': {
|
|
234
236
|
return {
|
|
@@ -269,83 +271,114 @@ export class PostgresToSqlite {
|
|
|
269
271
|
this.options.errors.report(message, source);
|
|
270
272
|
return { type: 'lit_null' };
|
|
271
273
|
}
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
274
|
+
translateInOrOverlapOperator(original, type, negated) {
|
|
275
|
+
let translatedLeft;
|
|
276
|
+
let translatedRight;
|
|
277
|
+
let additionalFilters = [];
|
|
278
|
+
const expand = (expr, acceptScalarArray) => {
|
|
279
|
+
if (expr.type === 'select') {
|
|
280
|
+
const resolved = this.options.joinSubqueryExpression(expr);
|
|
281
|
+
if (resolved == null) {
|
|
282
|
+
// An error would have been logged.
|
|
283
|
+
const bogusValue = { type: 'lit_null' };
|
|
284
|
+
this.options.locations.sourceForNode.set(bogusValue, this.sourceLocation(expr));
|
|
285
|
+
return { expr: bogusValue, isScalar: false };
|
|
286
|
+
}
|
|
287
|
+
additionalFilters.push(...resolved.filters);
|
|
288
|
+
return { expr: resolved.output, isScalar: false };
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
if (expr.type == 'ref' && expr.table == null) {
|
|
292
|
+
// This might be a reference to a common table expression, e.g. in WHERE x IN $cte.
|
|
293
|
+
const cte = this.options.scope.resolveCommonTableExpression(expr.name);
|
|
294
|
+
if (cte) {
|
|
295
|
+
// Translate $cte to (SELECT $onlyColumn FROM $cte)
|
|
296
|
+
const columns = Object.keys(cte.resultColumns);
|
|
297
|
+
if (columns.length != 1) {
|
|
298
|
+
const bogus = this.invalidExpression(expr, 'Common-table expression must return a single column');
|
|
299
|
+
this.options.locations.sourceForNode.set(bogus, this.sourceLocation(expr));
|
|
300
|
+
return { expr: bogus, isScalar: false };
|
|
301
|
+
}
|
|
302
|
+
return expand({
|
|
303
|
+
type: 'select',
|
|
304
|
+
columns: [
|
|
305
|
+
{ expr: { type: 'ref', name: columns[0], table: { name: expr.name }, _location: expr._location } }
|
|
306
|
+
],
|
|
307
|
+
from: [{ type: 'table', name: { name: expr.name } }]
|
|
308
|
+
}, false);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
// This is a scalar expression. Is this acceptable?
|
|
312
|
+
if (acceptScalarArray) {
|
|
313
|
+
return { expr: this.translateNodeWithLocation(expr), isScalar: true };
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
// No, then translate `x IN a` to `x IN (SELECT value FROM json_each(a))`.
|
|
317
|
+
const name = this.options.generateTableAlias();
|
|
318
|
+
return expand({
|
|
319
|
+
type: 'select',
|
|
320
|
+
columns: [{ expr: { type: 'ref', name: 'value', table: { name }, _location: expr._location } }],
|
|
321
|
+
from: [{ type: 'call', function: { name: 'json_each' }, args: [expr], alias: { name } }]
|
|
322
|
+
}, false);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
};
|
|
326
|
+
if (type === 'overlap') {
|
|
327
|
+
translatedLeft = expand(original.left, false).expr;
|
|
283
328
|
}
|
|
284
329
|
else {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
330
|
+
// For IN expressions, the left side is always a scalar.
|
|
331
|
+
translatedLeft = this.translateNodeWithLocation(original.left);
|
|
332
|
+
// Additionally, we support IN ARRAY[...] and IN ROW(...) expressions which are always scalar.
|
|
333
|
+
// TODO: We might be able to simplify expressions by translating them into json_array() invocations in expand()?
|
|
334
|
+
if (original.right.type == 'array') {
|
|
335
|
+
return this.desugarInValues(negated, original, translatedLeft, original.right.expressions);
|
|
336
|
+
}
|
|
337
|
+
else if (original.right.type == 'call' && original.right.function.name.toLowerCase() == 'row') {
|
|
338
|
+
return this.desugarInValues(negated, original, translatedLeft, original.right.args);
|
|
291
339
|
}
|
|
292
|
-
return this.desugarInScalar(negated, expr, right);
|
|
293
340
|
}
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
341
|
+
// Generally, we try to transform `x IN y` operators to `SELECT ... FROM x, y WHERE x = y.value`. This doesn't work
|
|
342
|
+
// for `NOT IN` operators though. We don't support the general case of `NOT IN` operators, but we want to be able to
|
|
343
|
+
// support `NOT IN` for scalar expression on the right-hand side. We use the scalar `json_contains` function
|
|
344
|
+
// available when evaluating sync plans for that. This is also how the `IN` operator is implemented with the old
|
|
345
|
+
// system before sync plans, we use it as a fallback for NOT IN here.
|
|
346
|
+
const translateRightResult = expand(original.right, type == 'in' && negated);
|
|
347
|
+
if (translateRightResult.isScalar) {
|
|
348
|
+
return this.negate(original, {
|
|
349
|
+
type: 'function',
|
|
350
|
+
function: 'ps_json_contains',
|
|
351
|
+
parameters: [translatedLeft, translateRightResult.expr]
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
translatedRight = translateRightResult.expr;
|
|
309
356
|
}
|
|
310
357
|
let replacement = {
|
|
311
358
|
type: 'binary',
|
|
312
359
|
operator: '=',
|
|
313
|
-
left:
|
|
314
|
-
right:
|
|
360
|
+
left: translatedLeft,
|
|
361
|
+
right: translatedRight
|
|
315
362
|
};
|
|
316
|
-
this.options.locations.sourceForNode.set(replacement,
|
|
317
|
-
replacement =
|
|
363
|
+
this.options.locations.sourceForNode.set(replacement, this.sourceLocation(original));
|
|
364
|
+
replacement = additionalFilters.reduce((left, right) => ({ type: 'binary', operator: 'and', left, right }), replacement);
|
|
318
365
|
if (negated) {
|
|
319
|
-
replacement =
|
|
366
|
+
replacement = this.negate(original, replacement);
|
|
320
367
|
}
|
|
321
368
|
return replacement;
|
|
322
369
|
}
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
return this.
|
|
330
|
-
type: 'select',
|
|
331
|
-
columns: [{ expr: { type: 'ref', name: 'value', table: { name } } }],
|
|
332
|
-
from: [{ type: 'call', function: { name: 'json_each' }, args: [right], alias: { name } }]
|
|
333
|
-
});
|
|
370
|
+
desugarInValues(negated, source, left, right) {
|
|
371
|
+
const scalarIn = {
|
|
372
|
+
type: 'scalar_in',
|
|
373
|
+
target: left,
|
|
374
|
+
in: right.map((e) => this.translateNodeWithLocation(e))
|
|
375
|
+
};
|
|
376
|
+
return negated ? this.negate(source, scalarIn) : scalarIn;
|
|
334
377
|
}
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
const columns = Object.keys(cte.resultColumns);
|
|
340
|
-
if (columns.length != 1) {
|
|
341
|
-
return this.invalidExpression(binary.right, 'Common-table expression must return a single column');
|
|
342
|
-
}
|
|
343
|
-
const name = columns[0];
|
|
344
|
-
return this.desugarInSubquery(negated, binary, {
|
|
345
|
-
type: 'select',
|
|
346
|
-
columns: [{ expr: { type: 'ref', name, table: { name: cteName } } }],
|
|
347
|
-
from: [{ type: 'table', name: { name: cteName } }]
|
|
348
|
-
});
|
|
378
|
+
/// Generates a `NOT` wrapper around the `inner` expression, using `source` as a syntactic location.
|
|
379
|
+
negate(source, inner) {
|
|
380
|
+
this.options.locations.sourceForNode.set(inner, this.sourceLocation(source));
|
|
381
|
+
return { type: 'unary', operator: 'not', operand: inner };
|
|
349
382
|
}
|
|
350
383
|
translateRequestParameter(source, expr) {
|
|
351
384
|
const parameter = new ConnectionParameter(expr, source);
|
|
@@ -353,7 +386,7 @@ export class PostgresToSqlite {
|
|
|
353
386
|
type: 'data',
|
|
354
387
|
source: parameter
|
|
355
388
|
};
|
|
356
|
-
this.options.locations.sourceForNode.set(replacement, expr.function);
|
|
389
|
+
this.options.locations.sourceForNode.set(replacement, this.sourceLocation(expr.function));
|
|
357
390
|
switch (expr.function.name.toLowerCase()) {
|
|
358
391
|
case 'parameters':
|
|
359
392
|
return replacement;
|
|
@@ -385,6 +418,9 @@ export class PostgresToSqlite {
|
|
|
385
418
|
return this.invalidExpression(expr.function, 'Unknown request function');
|
|
386
419
|
}
|
|
387
420
|
}
|
|
421
|
+
sourceLocation(location) {
|
|
422
|
+
return { location, errors: this.options.errors };
|
|
423
|
+
}
|
|
388
424
|
}
|
|
389
425
|
const supportedBinaryOperators = {
|
|
390
426
|
OR: 'or',
|