@powersync/service-sync-rules 0.35.0 → 0.37.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/README.md +3 -3
- package/dist/BaseSqlDataQuery.d.ts +4 -4
- package/dist/BaseSqlDataQuery.js.map +1 -1
- package/dist/BucketDescription.d.ts +1 -1
- package/dist/BucketParameterQuerier.d.ts +23 -1
- package/dist/BucketParameterQuerier.js +24 -0
- package/dist/BucketParameterQuerier.js.map +1 -1
- package/dist/BucketSource.d.ts +36 -29
- package/dist/BucketSource.js +12 -28
- package/dist/BucketSource.js.map +1 -1
- package/dist/HydratedSyncConfig.d.ts +80 -0
- package/dist/HydratedSyncConfig.js +207 -0
- package/dist/HydratedSyncConfig.js.map +1 -0
- package/dist/HydrationState.d.ts +29 -6
- package/dist/HydrationState.js +17 -5
- package/dist/HydrationState.js.map +1 -1
- package/dist/SourceTableRef.d.ts +9 -0
- package/dist/SourceTableRef.js +4 -0
- package/dist/SourceTableRef.js.map +1 -0
- package/dist/SqlBucketDescriptor.d.ts +5 -4
- package/dist/SqlBucketDescriptor.js +3 -0
- package/dist/SqlBucketDescriptor.js.map +1 -1
- package/dist/SqlDataQuery.d.ts +2 -2
- package/dist/SqlDataQuery.js.map +1 -1
- package/dist/SqlParameterQuery.d.ts +8 -7
- package/dist/SqlParameterQuery.js +8 -4
- package/dist/SqlParameterQuery.js.map +1 -1
- package/dist/SqlSyncRules.d.ts +1 -1
- package/dist/StaticSqlParameterQuery.d.ts +2 -2
- package/dist/StaticSqlParameterQuery.js.map +1 -1
- package/dist/StorageVersion.d.ts +27 -0
- package/dist/StorageVersion.js +17 -0
- package/dist/StorageVersion.js.map +1 -0
- package/dist/SyncConfig.d.ts +17 -11
- package/dist/SyncConfig.js +17 -19
- package/dist/SyncConfig.js.map +1 -1
- package/dist/TablePattern.d.ts +8 -2
- package/dist/TablePattern.js +8 -0
- package/dist/TablePattern.js.map +1 -1
- package/dist/TableValuedFunctionSqlParameterQuery.d.ts +2 -2
- package/dist/TableValuedFunctionSqlParameterQuery.js.map +1 -1
- package/dist/TableValuedFunctions.js +16 -10
- package/dist/TableValuedFunctions.js.map +1 -1
- package/dist/cast.js +7 -5
- package/dist/cast.js.map +1 -1
- package/dist/compatibility.d.ts +3 -1
- package/dist/compatibility.js +12 -3
- package/dist/compatibility.js.map +1 -1
- package/dist/compiler/compiler.d.ts +2 -2
- package/dist/compiler/equality.d.ts +2 -0
- package/dist/compiler/equality.js +36 -0
- package/dist/compiler/equality.js.map +1 -1
- package/dist/compiler/parser.d.ts +1 -1
- package/dist/compiler/parser.js +7 -5
- package/dist/compiler/parser.js.map +1 -1
- package/dist/compiler/querier_graph.js +13 -2
- package/dist/compiler/querier_graph.js.map +1 -1
- package/dist/compiler/scope.d.ts +2 -2
- package/dist/compiler/scope.js +2 -1
- package/dist/compiler/scope.js.map +1 -1
- package/dist/compiler/sqlite.d.ts +4 -0
- package/dist/compiler/sqlite.js.map +1 -1
- package/dist/compiler/table.d.ts +26 -0
- package/dist/compiler/table.js +76 -0
- package/dist/compiler/table.js.map +1 -1
- package/dist/events/SqlEventDescriptor.d.ts +3 -3
- package/dist/events/SqlEventDescriptor.js +1 -1
- package/dist/events/SqlEventDescriptor.js.map +1 -1
- package/dist/events/SqlEventSourceQuery.d.ts +2 -2
- package/dist/events/SqlEventSourceQuery.js.map +1 -1
- package/dist/from_yaml.js +83 -19
- package/dist/from_yaml.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/json_schema.js +7 -0
- package/dist/json_schema.js.map +1 -1
- package/dist/sql_functions.d.ts +4 -4
- package/dist/sql_functions.js +12 -6
- package/dist/sql_functions.js.map +1 -1
- package/dist/streams/filter.d.ts +8 -7
- package/dist/streams/filter.js +5 -3
- package/dist/streams/filter.js.map +1 -1
- package/dist/streams/stream.d.ts +5 -4
- package/dist/streams/stream.js +3 -0
- package/dist/streams/stream.js.map +1 -1
- package/dist/streams/variant.js +2 -2
- package/dist/streams/variant.js.map +1 -1
- package/dist/sync_plan/engine/factory.d.ts +4 -0
- package/dist/sync_plan/engine/factory.js +13 -0
- package/dist/sync_plan/engine/factory.js.map +1 -0
- package/dist/sync_plan/engine/javascript.js +0 -1
- package/dist/sync_plan/engine/javascript.js.map +1 -1
- package/dist/sync_plan/engine/scalar_expression_engine.d.ts +0 -4
- package/dist/sync_plan/engine/scalar_expression_engine.js +2 -2
- package/dist/sync_plan/engine/scalar_expression_engine.js.map +1 -1
- package/dist/sync_plan/engine/sqlite.d.ts +26 -5
- package/dist/sync_plan/engine/sqlite.js +38 -23
- package/dist/sync_plan/engine/sqlite.js.map +1 -1
- package/dist/sync_plan/evaluator/bucket_data_source.d.ts +6 -7
- package/dist/sync_plan/evaluator/bucket_data_source.js +67 -57
- package/dist/sync_plan/evaluator/bucket_data_source.js.map +1 -1
- package/dist/sync_plan/evaluator/bucket_source.d.ts +2 -2
- package/dist/sync_plan/evaluator/bucket_source.js +4 -4
- package/dist/sync_plan/evaluator/bucket_source.js.map +1 -1
- package/dist/sync_plan/evaluator/index.d.ts +0 -2
- package/dist/sync_plan/evaluator/index.js.map +1 -1
- package/dist/sync_plan/evaluator/parameter_evaluator.d.ts +52 -3
- package/dist/sync_plan/evaluator/parameter_evaluator.js +238 -25
- package/dist/sync_plan/evaluator/parameter_evaluator.js.map +1 -1
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.d.ts +9 -11
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js +63 -32
- package/dist/sync_plan/evaluator/parameter_index_lookup_creator.js.map +1 -1
- package/dist/sync_plan/expression.js +1 -1
- package/dist/sync_plan/expression.js.map +1 -1
- package/dist/sync_plan/expression_to_sql.js +1 -1
- package/dist/sync_plan/expression_to_sql.js.map +1 -1
- package/dist/sync_plan/expression_visitor.d.ts +4 -1
- package/dist/sync_plan/expression_visitor.js +21 -12
- package/dist/sync_plan/expression_visitor.js.map +1 -1
- package/dist/sync_plan/plan.d.ts +3 -3
- package/dist/sync_plan/serialize.d.ts +2 -2
- package/dist/types/custom_sqlite_value.d.ts +1 -1
- package/dist/types/custom_sqlite_value.js +1 -1
- package/dist/types.d.ts +13 -3
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +2 -1
- package/dist/utils.js +14 -1
- package/dist/utils.js.map +1 -1
- package/package.json +6 -6
- package/schema/sync_rules.json +13 -0
- package/dist/HydratedSyncRules.d.ts +0 -46
- package/dist/HydratedSyncRules.js +0 -88
- package/dist/HydratedSyncRules.js.map +0 -1
- package/dist/SourceTableInterface.d.ts +0 -5
- package/dist/SourceTableInterface.js +0 -2
- package/dist/SourceTableInterface.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ScopedParameterLookup, UnscopedParameterLookup } from '../../BucketParameterQuerier.js';
|
|
2
|
-
import {
|
|
2
|
+
import { HashMap, listEquality, StableHasher } from '../../compiler/equality.js';
|
|
3
3
|
import { isValidParameterValue } from '../../utils.js';
|
|
4
4
|
import { mapExternalDataToInstantiation } from '../engine/scalar_expression_engine.js';
|
|
5
5
|
import { MapSourceVisitor, visitExpr } from '../expression_visitor.js';
|
|
@@ -42,9 +42,10 @@ import { MapSourceVisitor, visitExpr } from '../expression_visitor.js';
|
|
|
42
42
|
* queriers by indicating that no lookups will be used.
|
|
43
43
|
*/
|
|
44
44
|
export class RequestParameterEvaluators {
|
|
45
|
+
stream;
|
|
45
46
|
lookupStages;
|
|
46
47
|
parameterValues;
|
|
47
|
-
constructor(
|
|
48
|
+
constructor(stream,
|
|
48
49
|
/**
|
|
49
50
|
* Pending lookup stages, or their cached outputs.
|
|
50
51
|
*/
|
|
@@ -53,6 +54,7 @@ export class RequestParameterEvaluators {
|
|
|
53
54
|
* Pending parameter values, or their cached outputs.
|
|
54
55
|
*/
|
|
55
56
|
parameterValues) {
|
|
57
|
+
this.stream = stream;
|
|
56
58
|
this.lookupStages = lookupStages;
|
|
57
59
|
this.parameterValues = parameterValues;
|
|
58
60
|
}
|
|
@@ -87,7 +89,7 @@ export class RequestParameterEvaluators {
|
|
|
87
89
|
return lookup;
|
|
88
90
|
}
|
|
89
91
|
}
|
|
90
|
-
return new RequestParameterEvaluators(this.lookupStages.map((stage) => stage.map(cloneLookup)), this.parameterValues.map(cloneValue));
|
|
92
|
+
return new RequestParameterEvaluators(this.stream, this.lookupStages.map((stage) => stage.map(cloneLookup)), this.parameterValues.map(cloneValue));
|
|
91
93
|
}
|
|
92
94
|
/**
|
|
93
95
|
* Evaluates those lookups and parameter values that be evaluated without looking up parameter indexes.
|
|
@@ -102,7 +104,7 @@ export class RequestParameterEvaluators {
|
|
|
102
104
|
this.lookupStages.forEach((stage, stageIndex) => {
|
|
103
105
|
stage.forEach((_, indexInStage) => helper.expandingLookupSync(stageIndex, indexInStage));
|
|
104
106
|
});
|
|
105
|
-
return helper.tryResolveInstantiation(this.parameterValues);
|
|
107
|
+
return helper.tryResolveInstantiation(this.parameterValues)?.map(withoutProvenance);
|
|
106
108
|
}
|
|
107
109
|
/**
|
|
108
110
|
* Resolves and caches all lookup stages and parameter values.
|
|
@@ -117,24 +119,26 @@ export class RequestParameterEvaluators {
|
|
|
117
119
|
}
|
|
118
120
|
// At this point, all lookups have been resolved and we can synchronously evaluate parameters which might depend on
|
|
119
121
|
// those lookups.
|
|
120
|
-
return helper.resolveInstantiation(this.parameterValues);
|
|
122
|
+
return helper.resolveInstantiation(this.parameterValues).map(withoutProvenance);
|
|
121
123
|
}
|
|
122
124
|
/**
|
|
123
125
|
* Prepares evaluators for a description of parameter values obtained from a compiled querier in the sync plan.
|
|
124
126
|
*
|
|
127
|
+
* @param stream Used to show the name of the stream for debugging purposes.
|
|
125
128
|
* @param lookupStages The {@link plan.StreamQuerier.lookupStages} of the querier to compile.
|
|
126
129
|
* @param values The {@link plan.StreamQuerier.sourceInstantiation} of the querier to compile.
|
|
127
130
|
* @param input Access to bucket and parameter sources generated for buckets and parameter lookups referenced by the
|
|
128
131
|
* querier.
|
|
132
|
+
* @param engine The scalar SQL engine used to evaluate operators and functions on request data.
|
|
129
133
|
*/
|
|
130
|
-
static prepare(lookupStages, values, input) {
|
|
134
|
+
static prepare(stream, lookupStages, values, input, engine) {
|
|
131
135
|
const mappedStages = [];
|
|
132
136
|
const lookupToStage = new Map();
|
|
133
137
|
function mapParameterValue(value) {
|
|
134
138
|
if (value.type == 'request') {
|
|
135
139
|
// Prepare an expression evaluating the expression derived from request data.
|
|
136
140
|
const mapper = mapExternalDataToInstantiation();
|
|
137
|
-
const prepared =
|
|
141
|
+
const prepared = engine.prepareEvaluator({ filters: [], outputs: [mapper.transform(value.expr)] });
|
|
138
142
|
const instantiation = mapper.instantiation;
|
|
139
143
|
return {
|
|
140
144
|
type: 'request',
|
|
@@ -179,7 +183,7 @@ export class RequestParameterEvaluators {
|
|
|
179
183
|
function: fn,
|
|
180
184
|
column
|
|
181
185
|
}));
|
|
182
|
-
const prepared =
|
|
186
|
+
const prepared = engine.prepareEvaluator({
|
|
183
187
|
tableValuedFunctions: [fn],
|
|
184
188
|
outputs: lookup.outputs.map((e) => visitExpr(mapOutputs, e, null)),
|
|
185
189
|
filters: lookup.filters.map((e) => visitExpr(mapOutputs, e, null))
|
|
@@ -195,7 +199,7 @@ export class RequestParameterEvaluators {
|
|
|
195
199
|
}
|
|
196
200
|
}
|
|
197
201
|
}
|
|
198
|
-
return new RequestParameterEvaluators(mappedStages, mapParameterValues(values));
|
|
202
|
+
return new RequestParameterEvaluators(stream, mappedStages, mapParameterValues(values));
|
|
199
203
|
}
|
|
200
204
|
}
|
|
201
205
|
class PartialInstantiator {
|
|
@@ -242,7 +246,7 @@ class PartialInstantiator {
|
|
|
242
246
|
}
|
|
243
247
|
return cached;
|
|
244
248
|
});
|
|
245
|
-
yield*
|
|
249
|
+
yield* mergeValueCombinations(parameterValues);
|
|
246
250
|
}
|
|
247
251
|
/**
|
|
248
252
|
* If possible, evaluates an element in an array of parameter values and replaces the parameter with a marker
|
|
@@ -254,18 +258,112 @@ class PartialInstantiator {
|
|
|
254
258
|
return current.values;
|
|
255
259
|
}
|
|
256
260
|
else if (current.type === 'intersection') {
|
|
257
|
-
|
|
261
|
+
const columns = [];
|
|
258
262
|
for (let i = 0; i < current.values.length; i++) {
|
|
259
263
|
const evaluated = this.parameterSync(current.values, i);
|
|
260
264
|
if (evaluated == null) {
|
|
261
265
|
return undefined; // Can't evaluate sub-parameter
|
|
262
266
|
}
|
|
267
|
+
columns.push(evaluated);
|
|
268
|
+
}
|
|
269
|
+
// For the most part, this just needs to find an intersection of values present in all columns. It gets more
|
|
270
|
+
// complicated for rows with provenance, however. For those. we need to ensure we find an intersection of values
|
|
271
|
+
// with compatible source rows. For example, consider an intersection of the same parameter lookup with columns
|
|
272
|
+
// `c1` and `c2`, and assume that we had the following rows:
|
|
273
|
+
//
|
|
274
|
+
// 1. Row {c1: 'a', c2: 'a'}
|
|
275
|
+
// 2. Row {c1: 'a', c2: 'b'}
|
|
276
|
+
//
|
|
277
|
+
// The intersection of this has one value: `a`, with a provenance of Row 1. To achieve this, we re-create rows
|
|
278
|
+
// by tracking a canonical value per row. If we see another value in the same row, we know that row can't
|
|
279
|
+
// contribute to the intersection because it has different values for `c1` and `c2`.
|
|
280
|
+
const poison = Symbol('poison');
|
|
281
|
+
const valuesByResultSet = new Map();
|
|
282
|
+
const completedRows = new Map();
|
|
283
|
+
function markRowAsCompleted(resultSet, rowid) {
|
|
284
|
+
let rowids = completedRows.get(resultSet);
|
|
285
|
+
if (rowids == null) {
|
|
286
|
+
rowids = new Set();
|
|
287
|
+
completedRows.set(resultSet, rowids);
|
|
288
|
+
}
|
|
289
|
+
rowids.add(rowid);
|
|
290
|
+
}
|
|
291
|
+
// Eliminate rows with conflicting values.
|
|
292
|
+
for (const column of columns) {
|
|
293
|
+
nextValue: for (const value of column) {
|
|
294
|
+
const row = value.directOrigin;
|
|
295
|
+
if (row) {
|
|
296
|
+
let forResultSet = valuesByResultSet.get(row.resultSet);
|
|
297
|
+
if (forResultSet == null) {
|
|
298
|
+
forResultSet = new Map();
|
|
299
|
+
valuesByResultSet.set(row.resultSet, forResultSet);
|
|
300
|
+
}
|
|
301
|
+
const existingValue = forResultSet.get(row.row);
|
|
302
|
+
if (existingValue != null && existingValue != value.value) {
|
|
303
|
+
forResultSet.set(row.row, poison);
|
|
304
|
+
markRowAsCompleted(row.resultSet, row.row);
|
|
305
|
+
continue nextValue;
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
forResultSet.set(row.row, value.value);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
function shouldSkipValue(value) {
|
|
314
|
+
if (value.directOrigin) {
|
|
315
|
+
const { resultSet, row } = value.directOrigin;
|
|
316
|
+
const ignoredRowIds = completedRows.get(resultSet);
|
|
317
|
+
if (ignoredRowIds?.has(row))
|
|
318
|
+
return true;
|
|
319
|
+
const valuesForResultSet = valuesByResultSet.get(resultSet);
|
|
320
|
+
if (valuesForResultSet == null)
|
|
321
|
+
return false;
|
|
322
|
+
if (valuesForResultSet.get(row) != value.value)
|
|
323
|
+
return true;
|
|
324
|
+
}
|
|
325
|
+
return false;
|
|
326
|
+
}
|
|
327
|
+
let intersection = null;
|
|
328
|
+
for (const column of columns) {
|
|
263
329
|
if (intersection == null) {
|
|
264
|
-
intersection = new
|
|
330
|
+
intersection = new Map();
|
|
331
|
+
for (const value of column) {
|
|
332
|
+
if (shouldSkipValue(value))
|
|
333
|
+
continue;
|
|
334
|
+
const existing = intersection.get(value.value);
|
|
335
|
+
if (existing != null) {
|
|
336
|
+
existing.push(value.provenance);
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
intersection.set(value.value, [value.provenance]);
|
|
340
|
+
}
|
|
341
|
+
for (const { resultSet, row } of value.provenance) {
|
|
342
|
+
// Any other value derived from this row must have the same value (otherwise we would have eliminated it).
|
|
343
|
+
// So we don't have to consider this row again.
|
|
344
|
+
markRowAsCompleted(resultSet, row);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
265
347
|
}
|
|
266
348
|
else {
|
|
267
|
-
|
|
268
|
-
|
|
349
|
+
const unmatchedValues = new Set(intersection.keys());
|
|
350
|
+
for (const value of column) {
|
|
351
|
+
const existing = intersection.get(value.value);
|
|
352
|
+
if (existing == null) {
|
|
353
|
+
// Value not in intersection, ignore.
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
unmatchedValues.delete(value.value);
|
|
357
|
+
if (!shouldSkipValue(value)) {
|
|
358
|
+
// An intersection value is derived from all inputs, so we track them all as provenance.
|
|
359
|
+
existing.push(value.provenance);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
for (const unmatched of unmatchedValues) {
|
|
364
|
+
// Values in intersection before, but not in evaluated
|
|
365
|
+
intersection.delete(unmatched);
|
|
366
|
+
}
|
|
269
367
|
}
|
|
270
368
|
if (intersection.size == 0) {
|
|
271
369
|
// Empty intersection, we don't even need to evaluate the rest.
|
|
@@ -274,7 +372,11 @@ class PartialInstantiator {
|
|
|
274
372
|
}
|
|
275
373
|
let values = [];
|
|
276
374
|
if (intersection) {
|
|
277
|
-
|
|
375
|
+
intersection.forEach((provenances, value) => {
|
|
376
|
+
for (const provenance of provenances) {
|
|
377
|
+
values.push({ value, provenance });
|
|
378
|
+
}
|
|
379
|
+
});
|
|
278
380
|
}
|
|
279
381
|
parent[index] = { type: 'cached', values };
|
|
280
382
|
return values;
|
|
@@ -289,7 +391,14 @@ class PartialInstantiator {
|
|
|
289
391
|
}
|
|
290
392
|
else if (current.type === 'request') {
|
|
291
393
|
const value = current.read(this.input.request);
|
|
292
|
-
const values = isValidParameterValue(value)
|
|
394
|
+
const values = isValidParameterValue(value)
|
|
395
|
+
? [
|
|
396
|
+
{
|
|
397
|
+
value,
|
|
398
|
+
provenance: []
|
|
399
|
+
}
|
|
400
|
+
]
|
|
401
|
+
: [];
|
|
293
402
|
parent[index] = { type: 'cached', values };
|
|
294
403
|
return values;
|
|
295
404
|
}
|
|
@@ -299,7 +408,12 @@ class PartialInstantiator {
|
|
|
299
408
|
const lookup = this.evaluators.lookupStages[stage][index];
|
|
300
409
|
if (lookup.type == 'table_valued') {
|
|
301
410
|
// We can evaluate this table-valued function already.
|
|
302
|
-
const
|
|
411
|
+
const resultSetMarker = Symbol();
|
|
412
|
+
const values = lookup.read(this.input.request).map((values, rowid) => {
|
|
413
|
+
const directOrigin = { resultSet: resultSetMarker, row: rowid };
|
|
414
|
+
const provenance = [directOrigin];
|
|
415
|
+
return values.map((value) => ({ value, provenance, directOrigin }));
|
|
416
|
+
});
|
|
303
417
|
this.evaluators.lookupStages[stage][index] = { type: 'cached', values };
|
|
304
418
|
return values;
|
|
305
419
|
}
|
|
@@ -321,15 +435,56 @@ class FullInstantiator extends PartialInstantiator {
|
|
|
321
435
|
const lookup = this.evaluators.lookupStages[stage][index];
|
|
322
436
|
if (lookup.type == 'parameter') {
|
|
323
437
|
const scope = this.input.hydrationState.getParameterIndexLookupScope(lookup.lookup);
|
|
324
|
-
const
|
|
325
|
-
//
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
438
|
+
const resolvedLookup = lookup.lookup;
|
|
439
|
+
// It's possible that we'll have the same logical lookup with multiple provenance values. For instance, if the
|
|
440
|
+
// outputs of another lookup with two columns (where only one column is an input to this lookup) are passed into
|
|
441
|
+
// this, we can have two lookups with identical keys but different provenances. This hash map de-duplicates keys.
|
|
442
|
+
const pendingLookups = new HashMap(FullInstantiator.parameterArrayEquality);
|
|
443
|
+
for (const values of this.resolveInputs(lookup.instantiation)) {
|
|
444
|
+
const provenance = [];
|
|
445
|
+
for (const value of values) {
|
|
446
|
+
provenance.push(...value.provenance);
|
|
331
447
|
}
|
|
332
|
-
|
|
448
|
+
const directValues = withoutProvenance(values);
|
|
449
|
+
pendingLookups.setOrUpdate(directValues, (old) => {
|
|
450
|
+
if (old == null) {
|
|
451
|
+
return {
|
|
452
|
+
lookup: ScopedParameterLookup.normalized(scope, UnscopedParameterLookup.normalized(directValues)),
|
|
453
|
+
provenance: [{ origin: provenance, symbol: Symbol(`lookup ${stage}.${index}`) }]
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
else {
|
|
457
|
+
old.provenance.push({ origin: provenance, symbol: Symbol(`lookup ${stage}.${index}`) });
|
|
458
|
+
return old;
|
|
459
|
+
}
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
const lookupsToProvenance = new Map();
|
|
463
|
+
for (const [_, { lookup, provenance }] of pendingLookups.entries) {
|
|
464
|
+
lookupsToProvenance.set(lookup, provenance);
|
|
465
|
+
}
|
|
466
|
+
const outputs = await this.input.source.getParameterSets([...lookupsToProvenance.keys()], `Stream ${this.evaluators.stream.name} evaluating parameter on ${resolvedLookup.sourceTable.name}`);
|
|
467
|
+
// Stream parameters generate an output row like {0: <expr>, 1: <expr>, ...}.
|
|
468
|
+
const values = outputs.flatMap(({ lookup, rows }) => {
|
|
469
|
+
return lookupsToProvenance.get(lookup).flatMap(({ symbol, origin }) => {
|
|
470
|
+
return rows.map((row, rowid) => {
|
|
471
|
+
const length = Object.entries(row).length;
|
|
472
|
+
const asArray = [];
|
|
473
|
+
for (let i = 0; i < length; i++) {
|
|
474
|
+
const value = row[i.toString()];
|
|
475
|
+
const directOrigin = length > 1 ? { resultSet: symbol, row: rowid } : undefined;
|
|
476
|
+
asArray.push({
|
|
477
|
+
value,
|
|
478
|
+
// Note: Not tracking provenance for parameters with just a single output is purely a performance
|
|
479
|
+
// optimization. If there's just a single value, we don't need to correlate it with other columns in the
|
|
480
|
+
// row. Not adding provenance saves some work in mergeValueCombinations.
|
|
481
|
+
provenance: directOrigin != null ? [...origin, directOrigin] : origin,
|
|
482
|
+
directOrigin
|
|
483
|
+
});
|
|
484
|
+
}
|
|
485
|
+
return asArray;
|
|
486
|
+
});
|
|
487
|
+
});
|
|
333
488
|
});
|
|
334
489
|
this.evaluators.lookupStages[stage][index] = { type: 'cached', values };
|
|
335
490
|
return values;
|
|
@@ -340,6 +495,10 @@ class FullInstantiator extends PartialInstantiator {
|
|
|
340
495
|
}
|
|
341
496
|
return other;
|
|
342
497
|
}
|
|
498
|
+
static parameterArrayEquality = listEquality(StableHasher.parameterValueEquality);
|
|
499
|
+
}
|
|
500
|
+
function withoutProvenance(source) {
|
|
501
|
+
return source.map(({ value }) => value);
|
|
343
502
|
}
|
|
344
503
|
export function isValidParameterValueRow(row) {
|
|
345
504
|
for (const value of row) {
|
|
@@ -373,4 +532,58 @@ function* filterParameterRows(rows) {
|
|
|
373
532
|
}
|
|
374
533
|
}
|
|
375
534
|
}
|
|
535
|
+
/**
|
|
536
|
+
* Builds a cartesian product of parameter instantiations, taking {@link ParameterValueWithRow.provenance} into account
|
|
537
|
+
* to avoid combining values from different rows of the same result set.
|
|
538
|
+
*
|
|
539
|
+
* @param valuesByParameter An array containing possible instantiations for each parameter.
|
|
540
|
+
* @returns All allowed instantiations.
|
|
541
|
+
*/
|
|
542
|
+
function* mergeValueCombinations(valuesByParameter) {
|
|
543
|
+
// Partial backtracking results, the current instantiation is fixed for 0..nextParameter in generateCombinations.
|
|
544
|
+
const partialResults = new Array(valuesByParameter.length);
|
|
545
|
+
// A map from result sets to rows used in the partial instantiation.
|
|
546
|
+
const usedRows = new Map();
|
|
547
|
+
function installRowIfNoConflict(value) {
|
|
548
|
+
const addedResultSets = [];
|
|
549
|
+
for (const origin of value.provenance) {
|
|
550
|
+
const { resultSet, row } = origin;
|
|
551
|
+
const existingRow = usedRows.get(resultSet);
|
|
552
|
+
if (existingRow === undefined) {
|
|
553
|
+
addedResultSets.push(resultSet);
|
|
554
|
+
usedRows.set(resultSet, row);
|
|
555
|
+
}
|
|
556
|
+
else if (existingRow == row) {
|
|
557
|
+
continue;
|
|
558
|
+
}
|
|
559
|
+
else {
|
|
560
|
+
// The current instantiation already contains a value from the same result set but derived from a different
|
|
561
|
+
// row. So we must ignore this parameter value.
|
|
562
|
+
return [false, addedResultSets];
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
return [true, addedResultSets];
|
|
566
|
+
}
|
|
567
|
+
function uninstallResultSets(resultSets) {
|
|
568
|
+
for (const rs of resultSets) {
|
|
569
|
+
usedRows.delete(rs);
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
function* generateCombinations(nextParameter) {
|
|
573
|
+
if (nextParameter >= valuesByParameter.length) {
|
|
574
|
+
yield [...partialResults];
|
|
575
|
+
return;
|
|
576
|
+
}
|
|
577
|
+
const availableValues = valuesByParameter[nextParameter];
|
|
578
|
+
for (const available of availableValues) {
|
|
579
|
+
const [canUse, addedResultSets] = installRowIfNoConflict(available);
|
|
580
|
+
if (canUse) {
|
|
581
|
+
partialResults[nextParameter] = available;
|
|
582
|
+
yield* generateCombinations(nextParameter + 1);
|
|
583
|
+
}
|
|
584
|
+
uninstallResultSets(addedResultSets);
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
yield* generateCombinations(0);
|
|
588
|
+
}
|
|
376
589
|
//# sourceMappingURL=parameter_evaluator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameter_evaluator.js","sourceRoot":"","sources":["../../../src/sync_plan/evaluator/parameter_evaluator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parameter_evaluator.js","sourceRoot":"","sources":["../../../src/sync_plan/evaluator/parameter_evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
import { ParameterIndexLookupCreator } from '../../BucketSource.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { HydrationInput, ParameterIndexLookupCreator, ParameterIndexLookupEvaluator } from '../../BucketSource.js';
|
|
2
|
+
import { ParameterLookupDefinitionId } from '../../HydrationState.js';
|
|
3
|
+
import { SourceTableRef } from '../../SourceTableRef.js';
|
|
4
4
|
import { TablePattern } from '../../TablePattern.js';
|
|
5
|
-
import { SqliteRow, UnscopedEvaluatedParametersResult } from '../../types.js';
|
|
6
5
|
import * as plan from '../plan.js';
|
|
7
6
|
import { StreamEvaluationContext } from './index.js';
|
|
8
7
|
export declare class PreparedParameterIndexLookupCreator implements ParameterIndexLookupCreator {
|
|
9
|
-
|
|
10
|
-
readonly
|
|
11
|
-
private readonly evaluator;
|
|
12
|
-
private readonly sourceTable;
|
|
8
|
+
readonly sourceId: ParameterLookupDefinitionId;
|
|
9
|
+
readonly sourceTable: TablePattern;
|
|
13
10
|
private readonly evaluatorInputs;
|
|
11
|
+
private readonly statement;
|
|
14
12
|
private readonly numberOfOutputs;
|
|
15
13
|
private readonly numberOfParameters;
|
|
16
|
-
constructor(source: plan.StreamParameterIndexLookupCreator, {
|
|
14
|
+
constructor(source: plan.StreamParameterIndexLookupCreator, { defaultSchema }: StreamEvaluationContext);
|
|
17
15
|
getSourceTables(): Set<TablePattern>;
|
|
18
|
-
|
|
19
|
-
tableSyncsParameters(table:
|
|
16
|
+
createEvaluator({ scalarExpressions }: HydrationInput): ParameterIndexLookupEvaluator;
|
|
17
|
+
tableSyncsParameters(table: SourceTableRef): boolean;
|
|
20
18
|
}
|
|
@@ -2,18 +2,15 @@ import { UnscopedParameterLookup } from '../../BucketParameterQuerier.js';
|
|
|
2
2
|
import { isValidParameterValueRow } from './parameter_evaluator.js';
|
|
3
3
|
import { TableProcessorToSqlHelper } from './table_processor_to_sql.js';
|
|
4
4
|
export class PreparedParameterIndexLookupCreator {
|
|
5
|
-
|
|
6
|
-
defaultLookupScope;
|
|
7
|
-
evaluator;
|
|
5
|
+
sourceId;
|
|
8
6
|
sourceTable;
|
|
9
7
|
evaluatorInputs;
|
|
8
|
+
statement;
|
|
10
9
|
numberOfOutputs;
|
|
11
10
|
numberOfParameters;
|
|
12
|
-
constructor(source, {
|
|
13
|
-
this.
|
|
14
|
-
|
|
15
|
-
...source.defaultLookupScope,
|
|
16
|
-
source: this
|
|
11
|
+
constructor(source, { defaultSchema }) {
|
|
12
|
+
this.sourceId = {
|
|
13
|
+
...source.defaultLookupScope
|
|
17
14
|
};
|
|
18
15
|
const translationHelper = new TableProcessorToSqlHelper(source);
|
|
19
16
|
const expressions = source.outputs.map((o) => translationHelper.mapper.transform(o));
|
|
@@ -22,11 +19,11 @@ export class PreparedParameterIndexLookupCreator {
|
|
|
22
19
|
expressions.push(translationHelper.mapper.transform(parameter.expr));
|
|
23
20
|
}
|
|
24
21
|
this.numberOfParameters = source.parameters.length;
|
|
25
|
-
this.
|
|
22
|
+
this.statement = {
|
|
26
23
|
outputs: expressions,
|
|
27
24
|
filters: translationHelper.filterExpressions,
|
|
28
25
|
tableValuedFunctions: translationHelper.tableValuedFunctions
|
|
29
|
-
}
|
|
26
|
+
};
|
|
30
27
|
this.sourceTable = source.sourceTable.toTablePattern(defaultSchema);
|
|
31
28
|
this.evaluatorInputs = translationHelper.mapper.instantiation;
|
|
32
29
|
}
|
|
@@ -35,31 +32,65 @@ export class PreparedParameterIndexLookupCreator {
|
|
|
35
32
|
set.add(this.sourceTable);
|
|
36
33
|
return set;
|
|
37
34
|
}
|
|
38
|
-
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
35
|
+
createEvaluator({ scalarExpressions }) {
|
|
36
|
+
const evaluator = scalarExpressions.prepareEvaluator(this.statement);
|
|
37
|
+
return {
|
|
38
|
+
evaluateParameterRow: (sourceTable, row) => {
|
|
39
|
+
const results = [];
|
|
40
|
+
if (!this.sourceTable.matches(sourceTable)) {
|
|
41
|
+
return results;
|
|
42
|
+
}
|
|
43
|
+
function parametersEqual(a, b) {
|
|
44
|
+
if (a.length != b.length)
|
|
45
|
+
return false;
|
|
46
|
+
return a.every((val, idx) => val === b[idx]);
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
const inputInstantiation = this.evaluatorInputs.map((input) => row[input.column]);
|
|
50
|
+
// In almost all cases, lookups generate at most one output with exactly one bucket parameter. This is the case
|
|
51
|
+
// for all lookups without a table-valued function, e.g. `SELECT foo.* FROM foo, bar ON foo.x = bar.x AND
|
|
52
|
+
// bar.y = auth.user_id()` which generates a lookup from `bar.y` to `bar.x`. However, it's also possible for:
|
|
53
|
+
//
|
|
54
|
+
// - a single row with one partition value to generate multiple outputs, which would yield a lookup with multiple
|
|
55
|
+
// entries in bucketParameters.
|
|
56
|
+
// - a single row to generate multiple partition values, which would yield multiple lookup entries.
|
|
57
|
+
// - a combination of those two, if multiple table-valued functions are used in the parameter result set.
|
|
58
|
+
const lookups = [];
|
|
59
|
+
function resolveLookup(entries) {
|
|
60
|
+
// The lookups array could be a hash map, but since we don't expect rows to generate many lookups, a hash map
|
|
61
|
+
// would likely be more expensive than this linear search.
|
|
62
|
+
for (const existing of lookups) {
|
|
63
|
+
if (parametersEqual(existing.partitionValues, entries)) {
|
|
64
|
+
return existing;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const created = { partitionValues: entries, bucketParameters: [] };
|
|
68
|
+
lookups.push(created);
|
|
69
|
+
return created;
|
|
70
|
+
}
|
|
71
|
+
for (const outputRow of evaluator.evaluate(inputInstantiation)) {
|
|
72
|
+
if (!isValidParameterValueRow(outputRow)) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const outputs = {};
|
|
76
|
+
for (let i = 0; i < this.numberOfOutputs; i++) {
|
|
77
|
+
outputs[i.toString()] = outputRow[i];
|
|
78
|
+
}
|
|
79
|
+
// source is [...outputs, ...partitionValues]
|
|
80
|
+
const partitionValues = outputRow.splice(this.numberOfOutputs, this.numberOfParameters);
|
|
81
|
+
const pendingLookup = resolveLookup(partitionValues);
|
|
82
|
+
pendingLookup.bucketParameters.push(outputs);
|
|
83
|
+
}
|
|
84
|
+
for (const { partitionValues, bucketParameters } of lookups) {
|
|
85
|
+
results.push({ lookup: UnscopedParameterLookup.normalized(partitionValues), bucketParameters });
|
|
86
|
+
}
|
|
48
87
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
outputs[i.toString()] = outputRow[i];
|
|
88
|
+
catch (e) {
|
|
89
|
+
results.push({ error: e.message });
|
|
52
90
|
}
|
|
53
|
-
|
|
54
|
-
const partitionValues = outputRow.splice(this.numberOfOutputs, this.numberOfParameters);
|
|
55
|
-
const lookup = UnscopedParameterLookup.normalized(partitionValues);
|
|
56
|
-
results.push({ lookup, bucketParameters: [outputs] });
|
|
91
|
+
return results;
|
|
57
92
|
}
|
|
58
|
-
}
|
|
59
|
-
catch (e) {
|
|
60
|
-
results.push({ error: e.message });
|
|
61
|
-
}
|
|
62
|
-
return results;
|
|
93
|
+
};
|
|
63
94
|
}
|
|
64
95
|
tableSyncsParameters(table) {
|
|
65
96
|
return this.sourceTable.matches(table);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameter_index_lookup_creator.js","sourceRoot":"","sources":["../../../src/sync_plan/evaluator/parameter_index_lookup_creator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAS1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,MAAM,OAAO,mCAAmC;
|
|
1
|
+
{"version":3,"file":"parameter_index_lookup_creator.js","sourceRoot":"","sources":["../../../src/sync_plan/evaluator/parameter_index_lookup_creator.ts"],"names":[],"mappings":"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"}
|