@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.
Files changed (83) hide show
  1. package/dist/HydratedSyncConfig.d.ts +9 -2
  2. package/dist/HydratedSyncConfig.js +12 -1
  3. package/dist/HydratedSyncConfig.js.map +1 -1
  4. package/dist/HydrationState.d.ts +2 -0
  5. package/dist/HydrationState.js.map +1 -1
  6. package/dist/StorageVersion.js +2 -1
  7. package/dist/StorageVersion.js.map +1 -1
  8. package/dist/SyncConfig.d.ts +4 -3
  9. package/dist/SyncConfig.js +10 -11
  10. package/dist/SyncConfig.js.map +1 -1
  11. package/dist/compiler/bucket_resolver.d.ts +1 -0
  12. package/dist/compiler/bucket_resolver.js +22 -12
  13. package/dist/compiler/bucket_resolver.js.map +1 -1
  14. package/dist/compiler/compatibility.d.ts +38 -9
  15. package/dist/compiler/compatibility.js +81 -11
  16. package/dist/compiler/compatibility.js.map +1 -1
  17. package/dist/compiler/compiler.d.ts +81 -13
  18. package/dist/compiler/compiler.js +111 -15
  19. package/dist/compiler/compiler.js.map +1 -1
  20. package/dist/compiler/expression.d.ts +17 -15
  21. package/dist/compiler/expression.js +21 -12
  22. package/dist/compiler/expression.js.map +1 -1
  23. package/dist/compiler/filter.d.ts +4 -4
  24. package/dist/compiler/filter.js +5 -4
  25. package/dist/compiler/filter.js.map +1 -1
  26. package/dist/compiler/ir_to_sync_plan.d.ts +4 -2
  27. package/dist/compiler/ir_to_sync_plan.js +40 -36
  28. package/dist/compiler/ir_to_sync_plan.js.map +1 -1
  29. package/dist/compiler/querier_graph.js +43 -24
  30. package/dist/compiler/querier_graph.js.map +1 -1
  31. package/dist/compiler/rows.d.ts +23 -29
  32. package/dist/compiler/rows.js +83 -59
  33. package/dist/compiler/rows.js.map +1 -1
  34. package/dist/compiler/table.d.ts +3 -2
  35. package/dist/compiler/table.js +5 -6
  36. package/dist/compiler/table.js.map +1 -1
  37. package/dist/events/CompiledEventSourceQuery.d.ts +51 -0
  38. package/dist/events/CompiledEventSourceQuery.js +119 -0
  39. package/dist/events/CompiledEventSourceQuery.js.map +1 -0
  40. package/dist/events/EventDescriptor.d.ts +26 -0
  41. package/dist/events/EventDescriptor.js +2 -0
  42. package/dist/events/EventDescriptor.js.map +1 -0
  43. package/dist/from_yaml.js +24 -20
  44. package/dist/from_yaml.js.map +1 -1
  45. package/dist/index.d.ts +2 -2
  46. package/dist/index.js +2 -2
  47. package/dist/index.js.map +1 -1
  48. package/dist/json_schema.js +1 -1
  49. package/dist/json_schema.js.map +1 -1
  50. package/dist/schema-generators/RustSchemaGenerator.d.ts +22 -0
  51. package/dist/schema-generators/RustSchemaGenerator.js +120 -0
  52. package/dist/schema-generators/RustSchemaGenerator.js.map +1 -0
  53. package/dist/schema-generators/generators.d.ts +2 -0
  54. package/dist/schema-generators/generators.js +2 -0
  55. package/dist/schema-generators/generators.js.map +1 -1
  56. package/dist/schema-generators/schema-generators.d.ts +1 -0
  57. package/dist/schema-generators/schema-generators.js +1 -0
  58. package/dist/schema-generators/schema-generators.js.map +1 -1
  59. package/dist/sync_plan/evaluator/bucket_data_source.js +11 -53
  60. package/dist/sync_plan/evaluator/bucket_data_source.js.map +1 -1
  61. package/dist/sync_plan/evaluator/index.d.ts +2 -7
  62. package/dist/sync_plan/evaluator/index.js +6 -7
  63. package/dist/sync_plan/evaluator/index.js.map +1 -1
  64. package/dist/sync_plan/evaluator/parameter_evaluator.js +11 -7
  65. package/dist/sync_plan/evaluator/parameter_evaluator.js.map +1 -1
  66. package/dist/sync_plan/evaluator/row_projection.d.ts +22 -0
  67. package/dist/sync_plan/evaluator/row_projection.js +71 -0
  68. package/dist/sync_plan/evaluator/row_projection.js.map +1 -0
  69. package/dist/sync_plan/plan.d.ts +36 -5
  70. package/dist/sync_plan/plan_equality_serialized.d.ts +12 -2
  71. package/dist/sync_plan/plan_equality_serialized.js +56 -0
  72. package/dist/sync_plan/plan_equality_serialized.js.map +1 -1
  73. package/dist/sync_plan/serialize.d.ts +35 -4
  74. package/dist/sync_plan/serialize.js +93 -16
  75. package/dist/sync_plan/serialize.js.map +1 -1
  76. package/package.json +1 -1
  77. package/schema/sync_rules.json +3 -2
  78. package/dist/events/SqlEventDescriptor.d.ts +0 -20
  79. package/dist/events/SqlEventDescriptor.js +0 -51
  80. package/dist/events/SqlEventDescriptor.js.map +0 -1
  81. package/dist/events/SqlEventSourceQuery.d.ts +0 -20
  82. package/dist/events/SqlEventSourceQuery.js +0 -125
  83. package/dist/events/SqlEventSourceQuery.js.map +0 -1
@@ -1,27 +1,32 @@
1
1
  import { parse } from 'pgsql-ast-parser';
2
+ import { SqlRuleError } from '../errors.js';
2
3
  import { DangerousParameterDetector } from './detect_dangerous_parameters.js';
3
4
  import { HashSet } from './equality.js';
4
5
  import { NodeLocations } from './expression.js';
6
+ import { RowExpression, SingleDependencyExpression } from './filter.js';
5
7
  import { CompilerModelToSyncPlan } from './ir_to_sync_plan.js';
6
8
  import { StreamQueryParser } from './parser.js';
7
9
  import { QuerierGraphBuilder } from './querier_graph.js';
10
+ import { EventRowEvaluator } from './rows.js';
8
11
  import { SqlScope } from './scope.js';
9
12
  /**
10
- * State for compiling sync streams.
13
+ * State for compiling sync streams and replication events into a sync plan.
11
14
  *
12
- * The output of compiling all sync streams is a {@link SyncPlan}, a declarative description of the sync process that
13
- * can be serialized to bucket storage. The compiler stores a mutable intermediate representation that is essentially a
14
- * copy of the sync plan, except that we're using JavaScript classes with methods to compute hash codes and equality
15
- * relations. This allows the compiler to efficiently de-duplicate parameters and buckets.
15
+ * The compiler stores a mutable intermediate representation that is essentially a copy of the resulting
16
+ * {@link SyncPlan}. Stream compilation uses JavaScript classes with behavioral equality, while events use plain
17
+ * compiler records. Stream queries and event definitions remain separate within that model.
16
18
  *
17
- * Overall, the compilation process is as follows: Each data query for a stream is first parsed by
19
+ * The stream compilation process is as follows: Each data query for a stream is first parsed by
18
20
  * {@link StreamQueryParser} into a canonicalized intermediate representation (see that class for details).
19
21
  * Then, {@link QuerierGraphBuilder} analyzes a chain of `AND` expressions to identify parameters (as partition keys)
20
22
  * and their instantiation, as well as static filters that need to be added to reach row.
21
23
  */
22
24
  export class SyncStreamsCompiler {
23
25
  options;
24
- output = new CompiledStreamQueries();
26
+ output = {
27
+ streams: new CompiledStreamQueries(),
28
+ events: []
29
+ };
25
30
  locations = new NodeLocations();
26
31
  constructor(options) {
27
32
  this.options = options;
@@ -94,10 +99,108 @@ export class SyncStreamsCompiler {
94
99
  }
95
100
  };
96
101
  }
102
+ /**
103
+ * Compiles the payload queries for a named replication event.
104
+ *
105
+ * Event queries intentionally support a smaller surface than stream queries: They must project and filter a single
106
+ * physical source table and cannot depend on request parameters, joins, subqueries or table-valued functions.
107
+ */
108
+ event(name) {
109
+ const event = { name, sourceQueries: [] };
110
+ this.output.events.push(event);
111
+ return {
112
+ addSourceQuery: (sql, errors) => {
113
+ const stmt = tryParse(sql, errors);
114
+ if (stmt == null) {
115
+ return;
116
+ }
117
+ let statementToCompile = stmt;
118
+ if (this.options.compileEventPayloadFilters === false && stmt.type == 'select' && stmt.where != null) {
119
+ errors.report('`WHERE` clauses in legacy event payload queries are ignored. Redeploy this sync config with edition 3 to validate and enable them.', stmt.where, { isWarning: true });
120
+ statementToCompile = { ...stmt, where: undefined };
121
+ }
122
+ const parser = new StreamQueryParser({
123
+ compiler: this,
124
+ originalText: sql,
125
+ locations: this.locations,
126
+ parentScope: new SqlScope({}),
127
+ errors
128
+ });
129
+ const query = parser.parse(statementToCompile);
130
+ if (query == null) {
131
+ return;
132
+ }
133
+ if (query.joined.length != 0) {
134
+ errors.report('Event payload queries must SELECT from a single physical source table.', query.span.location);
135
+ return;
136
+ }
137
+ const variants = [];
138
+ let valid = true;
139
+ for (const variant of query.where.terms) {
140
+ const filters = [];
141
+ for (const term of variant.terms) {
142
+ if (!(term instanceof SingleDependencyExpression) ||
143
+ term.dependsOnConnection ||
144
+ (term.resultSet != null && term.resultSet !== query.sourceTable)) {
145
+ errors.report('Event payload queries cannot depend on request parameters or other tables.', term instanceof SingleDependencyExpression ? term.expression.location.location : term.location);
146
+ valid = false;
147
+ continue;
148
+ }
149
+ filters.push(new RowExpression(term));
150
+ }
151
+ variants.push(new EventRowEvaluator({
152
+ columns: query.resultColumns,
153
+ syntacticSource: query.sourceTable,
154
+ filters,
155
+ partitionBy: [],
156
+ addedFunctions: []
157
+ }));
158
+ }
159
+ if (valid) {
160
+ event.sourceQueries.push({ sql, sourceTable: query.sourceTable, variants });
161
+ }
162
+ }
163
+ };
164
+ }
165
+ /**
166
+ * @returns A sync plan representing an immutable snapshot of the compiler output.
167
+ */
168
+ toSyncPlan() {
169
+ const translator = new CompilerModelToSyncPlan();
170
+ return translator.translate(this.output);
171
+ }
172
+ }
173
+ /**
174
+ * Compiles raw event definitions from legacy sync plans into the current plan representation.
175
+ *
176
+ * All definitions share one compiler to match normal sync-config compilation. Callers should reject fatal errors
177
+ * rather than carrying invalid legacy event evaluators into a {@link SyncPlan}.
178
+ */
179
+ export function compileEventDefinitions(definitions, options) {
180
+ const compiler = new SyncStreamsCompiler(options);
181
+ const errors = [];
182
+ for (const [name, queries] of Object.entries(definitions)) {
183
+ const event = compiler.event(name);
184
+ for (const sql of queries) {
185
+ event.addSourceQuery(sql, {
186
+ report(message, location, reportOptions) {
187
+ const error = new SqlRuleError(message, sql, location);
188
+ error.type = reportOptions?.isWarning ? 'warning' : 'fatal';
189
+ errors.push(error);
190
+ }
191
+ });
192
+ }
193
+ }
194
+ return { events: compiler.toSyncPlan().events, errors };
97
195
  }
98
196
  function tryParse(sql, errors) {
99
197
  try {
100
- const [stmt] = parse(sql, { locationTracking: true });
198
+ const statements = parse(sql, { locationTracking: true });
199
+ if (statements.length != 1) {
200
+ errors.report('Only a single SELECT statement is supported', statements[1]?._location ?? { start: 0, end: sql.length });
201
+ return null;
202
+ }
203
+ const [stmt] = statements;
101
204
  return stmt;
102
205
  }
103
206
  catch (e) {
@@ -132,12 +235,5 @@ export class CompiledStreamQueries {
132
235
  canonicalizePointLookup(lookup) {
133
236
  return this._pointLookups.getOrInsert(lookup)[0];
134
237
  }
135
- /**
136
- * @returns A sync plan representing an immutable snapshot of this intermediate representation.
137
- */
138
- toSyncPlan() {
139
- const translator = new CompilerModelToSyncPlan();
140
- return translator.translate(this);
141
- }
142
238
  }
143
239
  //# sourceMappingURL=compiler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/compiler/compiler.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { Expr, NodeLocation, PGNode } from 'pgsql-ast-parser';
2
2
  import { SqlExpression } from '../sync_plan/expression.js';
3
3
  import { ConnectionParameterSource } from '../sync_plan/plan.js';
4
- import { EqualsIgnoringResultSet } from './compatibility.js';
4
+ import { EqualsIgnoringPrimaryResultSet, TableValuedFunctionEquality } from './compatibility.js';
5
5
  import { ParsingErrorListener } from './compiler.js';
6
- import { StableHasher } from './equality.js';
6
+ import { Equatable, StableHasher } from './equality.js';
7
7
  import { SourceResultSet } from './table.js';
8
8
  /**
9
9
  * An analyzed SQL expression tracking dependencies on non-static data (i.e. rows or connection sources).
@@ -16,7 +16,7 @@ import { SourceResultSet } from './table.js';
16
16
  * Once in this form, it's easy to reason about dependencies in expressions (used to later generate parameter match
17
17
  * clauses) and to evaluate expressions at runtime (by preparing them as a statement and binding external values).
18
18
  */
19
- export declare class SyncExpression implements EqualsIgnoringResultSet {
19
+ export declare class SyncExpression implements EqualsIgnoringPrimaryResultSet {
20
20
  #private;
21
21
  /**
22
22
  * The AST node backing {@link sql}.
@@ -46,26 +46,26 @@ export declare class SyncExpression implements EqualsIgnoringResultSet {
46
46
  * We use this to be able to compose expressions, e.g. to possibly merge them.
47
47
  */
48
48
  node: SqlExpression<ExpressionInput>, locations: NodeLocations);
49
- equalsAssumingSameResultSet(other: EqualsIgnoringResultSet): boolean;
50
- assumingSameResultSetEqualityHashCode(hasher: StableHasher): void;
49
+ equalsAssumingSamePrimaryResultSet(other: EqualsIgnoringPrimaryResultSet, tableValued: TableValuedFunctionEquality): boolean;
50
+ assumingSamePrimaryResultSetEqualityHashCode(tableValued: TableValuedFunctionEquality, hasher: StableHasher): void;
51
51
  }
52
52
  export type ExpressionInput = ColumnInRow | RowMetadata | ConnectionParameter;
53
53
  /**
54
54
  * An expression input resolved against a row of a result set: either a column value or metadata about the row's
55
55
  * source table.
56
56
  */
57
- export declare abstract class RowReference implements EqualsIgnoringResultSet {
57
+ export declare abstract class RowReference implements EqualsIgnoringPrimaryResultSet {
58
58
  readonly syntacticOrigin: Expr;
59
59
  readonly resultSet: SourceResultSet;
60
60
  constructor(syntacticOrigin: Expr, resultSet: SourceResultSet);
61
- abstract equalsAssumingSameResultSet(other: EqualsIgnoringResultSet): boolean;
62
- abstract assumingSameResultSetEqualityHashCode(hasher: StableHasher): void;
61
+ abstract equalsAssumingSamePrimaryResultSet(other: EqualsIgnoringPrimaryResultSet, tableValued: TableValuedFunctionEquality): boolean;
62
+ abstract assumingSamePrimaryResultSetEqualityHashCode(tableValued: TableValuedFunctionEquality, hasher: StableHasher): void;
63
63
  }
64
64
  export declare class ColumnInRow extends RowReference {
65
65
  readonly column: string;
66
66
  constructor(syntacticOrigin: Expr, resultSet: SourceResultSet, column: string);
67
- equalsAssumingSameResultSet(other: EqualsIgnoringResultSet): boolean;
68
- assumingSameResultSetEqualityHashCode(hasher: StableHasher): void;
67
+ equalsAssumingSamePrimaryResultSet(other: EqualsIgnoringPrimaryResultSet, tableValued: TableValuedFunctionEquality): boolean;
68
+ assumingSamePrimaryResultSetEqualityHashCode(tableValued: TableValuedFunctionEquality, hasher: StableHasher): void;
69
69
  }
70
70
  export type RowMetadataKind = 'schema' | 'table_name' | 'table_suffix';
71
71
  /**
@@ -76,15 +76,17 @@ export type RowMetadataKind = 'schema' | 'table_name' | 'table_suffix';
76
76
  export declare class RowMetadata extends RowReference {
77
77
  readonly kind: RowMetadataKind;
78
78
  constructor(syntacticOrigin: Expr, resultSet: SourceResultSet, kind: RowMetadataKind);
79
- equalsAssumingSameResultSet(other: EqualsIgnoringResultSet): boolean;
80
- assumingSameResultSetEqualityHashCode(hasher: StableHasher): void;
79
+ equalsAssumingSamePrimaryResultSet(other: EqualsIgnoringPrimaryResultSet): boolean;
80
+ assumingSamePrimaryResultSetEqualityHashCode(_tableValued: TableValuedFunctionEquality, hasher: StableHasher): void;
81
81
  }
82
- export declare class ConnectionParameter implements EqualsIgnoringResultSet {
82
+ export declare class ConnectionParameter implements EqualsIgnoringPrimaryResultSet, Equatable {
83
83
  readonly syntacticOrigin: Expr;
84
84
  readonly source: ConnectionParameterSource;
85
85
  constructor(syntacticOrigin: Expr, source: ConnectionParameterSource);
86
- equalsAssumingSameResultSet(other: EqualsIgnoringResultSet): boolean;
87
- assumingSameResultSetEqualityHashCode(hasher: StableHasher): void;
86
+ equals(other: unknown): boolean;
87
+ buildHash(hasher: StableHasher): void;
88
+ equalsAssumingSamePrimaryResultSet(other: EqualsIgnoringPrimaryResultSet): boolean;
89
+ assumingSamePrimaryResultSetEqualityHashCode(_tableValued: TableValuedFunctionEquality, hasher: StableHasher): void;
88
90
  }
89
91
  /**
90
92
  * Tracks the original source location for translated {@link SqlExpression} nodes.
@@ -1,7 +1,6 @@
1
1
  import { getLocation } from '../errors.js';
2
2
  import { ExpressionToSqlite } from '../sync_plan/expression_to_sql.js';
3
3
  import { RecursiveExpressionVisitor } from '../sync_plan/expression_visitor.js';
4
- import { equalsIgnoringResultSetList } from './compatibility.js';
5
4
  /**
6
5
  * An analyzed SQL expression tracking dependencies on non-static data (i.e. rows or connection sources).
7
6
  *
@@ -53,14 +52,14 @@ export class SyncExpression {
53
52
  this.node = node;
54
53
  this.locations = locations;
55
54
  }
56
- equalsAssumingSameResultSet(other) {
55
+ equalsAssumingSamePrimaryResultSet(other, tableValued) {
57
56
  return (other instanceof SyncExpression &&
58
57
  other.sql == this.sql &&
59
- equalsIgnoringResultSetList.equals(other.instantiation, this.instantiation));
58
+ tableValued.listEquality.equals(other.instantiation, this.instantiation));
60
59
  }
61
- assumingSameResultSetEqualityHashCode(hasher) {
60
+ assumingSamePrimaryResultSetEqualityHashCode(tableValued, hasher) {
62
61
  hasher.addString(this.sql);
63
- equalsIgnoringResultSetList.hash(hasher, this.instantiation);
62
+ tableValued.listEquality.hash(hasher, this.instantiation);
64
63
  }
65
64
  }
66
65
  class FindExternalData extends RecursiveExpressionVisitor {
@@ -90,11 +89,14 @@ export class ColumnInRow extends RowReference {
90
89
  super(syntacticOrigin, resultSet);
91
90
  this.column = column;
92
91
  }
93
- equalsAssumingSameResultSet(other) {
94
- return other instanceof ColumnInRow && other.column == this.column;
92
+ equalsAssumingSamePrimaryResultSet(other, tableValued) {
93
+ return (other instanceof ColumnInRow &&
94
+ other.column == this.column &&
95
+ tableValued.resultSetEquals(other.resultSet, this.resultSet));
95
96
  }
96
- assumingSameResultSetEqualityHashCode(hasher) {
97
+ assumingSamePrimaryResultSetEqualityHashCode(tableValued, hasher) {
97
98
  hasher.addString(this.column);
99
+ tableValued.hashResultSet(hasher, this.resultSet);
98
100
  }
99
101
  }
100
102
  /**
@@ -108,10 +110,11 @@ export class RowMetadata extends RowReference {
108
110
  super(syntacticOrigin, resultSet);
109
111
  this.kind = kind;
110
112
  }
111
- equalsAssumingSameResultSet(other) {
113
+ equalsAssumingSamePrimaryResultSet(other) {
114
+ // Row metadata is always on the primary result set, so no need to hash the result set here.
112
115
  return other instanceof RowMetadata && other.kind == this.kind;
113
116
  }
114
- assumingSameResultSetEqualityHashCode(hasher) {
117
+ assumingSamePrimaryResultSetEqualityHashCode(_tableValued, hasher) {
115
118
  hasher.addString(`table.${this.kind}`);
116
119
  }
117
120
  }
@@ -122,12 +125,18 @@ export class ConnectionParameter {
122
125
  this.syntacticOrigin = syntacticOrigin;
123
126
  this.source = source;
124
127
  }
125
- equalsAssumingSameResultSet(other) {
128
+ equals(other) {
126
129
  return other instanceof ConnectionParameter && other.source == this.source;
127
130
  }
128
- assumingSameResultSetEqualityHashCode(hasher) {
131
+ buildHash(hasher) {
129
132
  hasher.addString(this.source);
130
133
  }
134
+ equalsAssumingSamePrimaryResultSet(other) {
135
+ return this.equals(other);
136
+ }
137
+ assumingSamePrimaryResultSetEqualityHashCode(_tableValued, hasher) {
138
+ return this.buildHash(hasher);
139
+ }
131
140
  }
132
141
  /**
133
142
  * Tracks the original source location for translated {@link SqlExpression} nodes.
@@ -1 +1 @@
1
- {"version":3,"file":"expression.js","sourceRoot":"","sources":["../../src/compiler/expression.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expression.js","sourceRoot":"","sources":["../../src/compiler/expression.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { NodeLocation } from 'pgsql-ast-parser';
2
- import { EqualsIgnoringResultSet } from './compatibility.js';
2
+ import { EqualsIgnoringPrimaryResultSet, TableValuedFunctionEquality } from './compatibility.js';
3
3
  import { StableHasher } from './equality.js';
4
4
  import { ExpressionInput, SyncExpression } from './expression.js';
5
5
  import { SourceResultSet } from './table.js';
@@ -21,7 +21,7 @@ export declare function isBaseTerm(value: unknown): value is BaseTerm;
21
21
  /**
22
22
  * A {@link SyncExpression} that only depends on a single result set or connection data.
23
23
  */
24
- export declare class SingleDependencyExpression implements EqualsIgnoringResultSet {
24
+ export declare class SingleDependencyExpression implements EqualsIgnoringPrimaryResultSet {
25
25
  readonly expression: SyncExpression;
26
26
  /**
27
27
  * The single result set on which the expression depends on.
@@ -34,8 +34,8 @@ export declare class SingleDependencyExpression implements EqualsIgnoringResultS
34
34
  */
35
35
  readonly dependsOnConnection: boolean;
36
36
  constructor(expression: SyncExpression | SingleDependencyExpression);
37
- equalsAssumingSameResultSet(other: EqualsIgnoringResultSet): boolean;
38
- assumingSameResultSetEqualityHashCode(hasher: StableHasher): void;
37
+ equalsAssumingSamePrimaryResultSet(other: EqualsIgnoringPrimaryResultSet, tableValued: TableValuedFunctionEquality): boolean;
38
+ assumingSamePrimaryResultSetEqualityHashCode(tableValued: TableValuedFunctionEquality, hasher: StableHasher): void;
39
39
  /**
40
40
  * If all inputs have a single dependency, returns either the result set they all depend on or `null` and whether they
41
41
  * depend on connection data.
@@ -35,11 +35,12 @@ export class SingleDependencyExpression {
35
35
  this.dependsOnConnection = expression.dependsOnConnection;
36
36
  }
37
37
  }
38
- equalsAssumingSameResultSet(other) {
39
- return other instanceof SingleDependencyExpression && other.expression.equalsAssumingSameResultSet(this.expression);
38
+ equalsAssumingSamePrimaryResultSet(other, tableValued) {
39
+ return (other instanceof SingleDependencyExpression &&
40
+ other.expression.equalsAssumingSamePrimaryResultSet(this.expression, tableValued));
40
41
  }
41
- assumingSameResultSetEqualityHashCode(hasher) {
42
- this.expression.assumingSameResultSetEqualityHashCode(hasher);
42
+ assumingSamePrimaryResultSetEqualityHashCode(tableValued, hasher) {
43
+ this.expression.assumingSamePrimaryResultSetEqualityHashCode(tableValued, hasher);
43
44
  }
44
45
  /**
45
46
  * If all inputs have a single dependency, returns either the result set they all depend on or `null` and whether they
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/compiler/filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/compiler/filter.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as plan from '../sync_plan/plan.js';
2
- import { CompiledStreamQueries } from './compiler.js';
2
+ import type { SyncPlanCompilerModel } from './compiler.js';
3
3
  export declare class CompilerModelToSyncPlan {
4
4
  private static readonly evaluatorHash;
5
5
  private mappedObjects;
@@ -25,11 +25,12 @@ export declare class CompilerModelToSyncPlan {
25
25
  */
26
26
  private evaluatorsToBuckets;
27
27
  private translateStatefulObject;
28
- translate(source: CompiledStreamQueries): plan.SyncPlan;
28
+ translate(source: SyncPlanCompilerModel): plan.SyncPlan;
29
29
  private createBucketSource;
30
30
  private translatePartitionKey;
31
31
  private translateAddedTableValuedFunctions;
32
32
  private translateRowEvaluator;
33
+ private translateRowProjection;
33
34
  private translatePointLookup;
34
35
  /**
35
36
  * @param expression The expression to translate.
@@ -42,4 +43,5 @@ export declare class CompilerModelToSyncPlan {
42
43
  private translateStreamResolver;
43
44
  private translateExpandingLookup;
44
45
  private translateParameterValue;
46
+ private translateCompiledEvent;
45
47
  }
@@ -36,10 +36,10 @@ export class CompilerModelToSyncPlan {
36
36
  return mapped;
37
37
  }
38
38
  translate(source) {
39
- const queriersByStream = Object.groupBy(source.resolvers, (r) => r.options.name);
39
+ const queriersByStream = Object.groupBy(source.streams.resolvers, (r) => r.options.name);
40
40
  return {
41
- dataSources: source.evaluators.map((e) => this.translateRowEvaluator(e)),
42
- parameterIndexes: source.pointLookups.map((p, i) => this.translatePointLookup(p, i)),
41
+ dataSources: source.streams.evaluators.map((e) => this.translateRowEvaluator(e)),
42
+ parameterIndexes: source.streams.pointLookups.map((p, i) => this.translatePointLookup(p, i)),
43
43
  // Note: data sources and parameter indexes must be translated first because we reference them in stream
44
44
  // resolvers.
45
45
  streams: Object.values(queriersByStream).map((resolvers) => {
@@ -48,7 +48,8 @@ export class CompilerModelToSyncPlan {
48
48
  queriers: resolvers.map((e) => this.translateStreamResolver(e))
49
49
  };
50
50
  }),
51
- buckets: this.buckets
51
+ buckets: this.buckets,
52
+ events: source.events.map((e) => this.translateCompiledEvent(e))
52
53
  };
53
54
  }
54
55
  createBucketSource(evaluators, uniqueName) {
@@ -64,20 +65,8 @@ export class CompilerModelToSyncPlan {
64
65
  });
65
66
  }
66
67
  translatePartitionKey(value, context) {
67
- let sourceExpression;
68
- // TODO: Unify scalar and table-valued partition keys in compiler IR?
69
- if (value instanceof rows.ScalarPartitionKey) {
70
- sourceExpression = value.expression.expression;
71
- return { expr: this.translateExpression(value.expression.expression, context.syntacticSource) };
72
- }
73
- else if (value instanceof rows.TableValuedPartitionKey) {
74
- sourceExpression = value.output.expression;
75
- }
76
- else {
77
- throw new Error('Unhandled partition key');
78
- }
79
68
  return {
80
- expr: this.translateExpression(sourceExpression, context.syntacticSource, context.addedFunctions)
69
+ expr: this.translateExpression(value.expression.expression, context.syntacticSource, context.addedFunctions)
81
70
  };
82
71
  }
83
72
  translateAddedTableValuedFunctions(input, context) {
@@ -92,30 +81,35 @@ export class CompilerModelToSyncPlan {
92
81
  }
93
82
  translateRowEvaluator(value) {
94
83
  return this.translateStatefulObject(value, () => {
95
- const hasher = new StableHasher();
96
- value.buildBehaviorHashCode(hasher);
97
84
  const mapped = {
98
- sourceTable: value.tablePattern,
99
- hashCode: hasher.buildHashCode(),
100
- tableValuedFunctions: this.translateAddedTableValuedFunctions(value.addedFunctions, value),
101
- columns: value.columns.map((e) => {
102
- if (e instanceof rows.StarColumnSource) {
103
- return 'star';
104
- }
105
- else {
106
- return {
107
- expr: this.translateExpression(e.expression.expression, value.syntacticSource, value.addedFunctions),
108
- alias: e.alias ?? null
109
- };
110
- }
111
- }),
112
- outputTableName: value.outputName,
113
- filters: value.filters.map((e) => this.translateExpression(e.expression, value.syntacticSource, value.addedFunctions)),
114
- parameters: value.partitionBy.map((e) => this.translatePartitionKey(e, value))
85
+ ...this.translateRowProjection(value),
86
+ outputTableName: value.outputName
115
87
  };
116
88
  return mapped;
117
89
  });
118
90
  }
91
+ translateRowProjection(value) {
92
+ const hasher = new StableHasher();
93
+ value.buildBehaviorHashCode(hasher);
94
+ return {
95
+ sourceTable: value.tablePattern,
96
+ hashCode: hasher.buildHashCode(),
97
+ tableValuedFunctions: this.translateAddedTableValuedFunctions(value.addedFunctions, value),
98
+ columns: value.columns.map((e) => {
99
+ if (e instanceof rows.StarColumnSource) {
100
+ return 'star';
101
+ }
102
+ else {
103
+ return {
104
+ expr: this.translateExpression(e.expression.expression, value.syntacticSource, value.addedFunctions),
105
+ alias: e.alias ?? null
106
+ };
107
+ }
108
+ }),
109
+ filters: value.filters.map((e) => this.translateExpression(e.expression, value.syntacticSource, value.addedFunctions)),
110
+ parameters: value.partitionBy.map((e) => this.translatePartitionKey(e, value))
111
+ };
112
+ }
119
113
  translatePointLookup(value, index) {
120
114
  return this.translateStatefulObject(value, () => {
121
115
  const hasher = new StableHasher();
@@ -217,5 +211,15 @@ export class CompilerModelToSyncPlan {
217
211
  return { type: 'intersection', values: value.inner.map((e) => this.translateParameterValue(e)) };
218
212
  }
219
213
  }
214
+ translateCompiledEvent(event) {
215
+ return {
216
+ name: event.name,
217
+ sourceQueries: event.sourceQueries.map((query) => ({
218
+ sql: query.sql,
219
+ sourceTable: query.sourceTable.tablePattern,
220
+ variants: query.variants.map((variant) => this.translateRowProjection(variant))
221
+ }))
222
+ };
223
+ }
220
224
  }
221
225
  //# sourceMappingURL=ir_to_sync_plan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ir_to_sync_plan.js","sourceRoot":"","sources":["../../src/compiler/ir_to_sync_plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ir_to_sync_plan.js","sourceRoot":"","sources":["../../src/compiler/ir_to_sync_plan.ts"],"names":[],"mappings":"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"}