@quereus/sync 4.5.0 → 4.7.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 +14 -6
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/metadata/column-version.d.ts.map +1 -1
- package/dist/src/metadata/column-version.js +8 -9
- package/dist/src/metadata/column-version.js.map +1 -1
- package/dist/src/metadata/keys.d.ts +99 -39
- package/dist/src/metadata/keys.d.ts.map +1 -1
- package/dist/src/metadata/keys.js +213 -158
- package/dist/src/metadata/keys.js.map +1 -1
- package/dist/src/metadata/pk-identity.d.ts +19 -14
- package/dist/src/metadata/pk-identity.d.ts.map +1 -1
- package/dist/src/metadata/pk-identity.js +21 -28
- package/dist/src/metadata/pk-identity.js.map +1 -1
- package/dist/src/metadata/schema-migration.d.ts +33 -10
- package/dist/src/metadata/schema-migration.d.ts.map +1 -1
- package/dist/src/metadata/schema-migration.js +77 -18
- package/dist/src/metadata/schema-migration.js.map +1 -1
- package/dist/src/sync/change-applicator.d.ts +19 -3
- package/dist/src/sync/change-applicator.d.ts.map +1 -1
- package/dist/src/sync/change-applicator.js +253 -63
- package/dist/src/sync/change-applicator.js.map +1 -1
- package/dist/src/sync/maintenance.d.ts +8 -5
- package/dist/src/sync/maintenance.d.ts.map +1 -1
- package/dist/src/sync/maintenance.js +7 -4
- package/dist/src/sync/maintenance.js.map +1 -1
- package/dist/src/sync/manager.d.ts +46 -1
- package/dist/src/sync/manager.d.ts.map +1 -1
- package/dist/src/sync/protocol.d.ts +42 -3
- package/dist/src/sync/protocol.d.ts.map +1 -1
- package/dist/src/sync/protocol.js +40 -0
- package/dist/src/sync/protocol.js.map +1 -1
- package/dist/src/sync/snapshot-identity.d.ts.map +1 -1
- package/dist/src/sync/snapshot-identity.js +1 -9
- package/dist/src/sync/snapshot-identity.js.map +1 -1
- package/dist/src/sync/snapshot-stream.d.ts +11 -0
- package/dist/src/sync/snapshot-stream.d.ts.map +1 -1
- package/dist/src/sync/snapshot-stream.js +134 -67
- package/dist/src/sync/snapshot-stream.js.map +1 -1
- package/dist/src/sync/snapshot.d.ts.map +1 -1
- package/dist/src/sync/snapshot.js +15 -30
- package/dist/src/sync/snapshot.js.map +1 -1
- package/dist/src/sync/store-adapter.d.ts +5 -4
- package/dist/src/sync/store-adapter.d.ts.map +1 -1
- package/dist/src/sync/store-adapter.js +328 -108
- package/dist/src/sync/store-adapter.js.map +1 -1
- package/dist/src/sync/sync-manager-impl.d.ts +37 -4
- package/dist/src/sync/sync-manager-impl.d.ts.map +1 -1
- package/dist/src/sync/sync-manager-impl.js +110 -56
- package/dist/src/sync/sync-manager-impl.js.map +1 -1
- package/dist/src/sync/wire.d.ts +6 -0
- package/dist/src/sync/wire.d.ts.map +1 -1
- package/dist/src/sync/wire.js +3 -0
- package/dist/src/sync/wire.js.map +1 -1
- package/package.json +7 -7
|
@@ -7,18 +7,21 @@
|
|
|
7
7
|
* tx: - Transaction records
|
|
8
8
|
* ps: - Peer sync state (received watermark: highest HLC pulled from a peer)
|
|
9
9
|
* pt: - Peer sent state (sent watermark: highest HLC pushed to a peer and acked)
|
|
10
|
-
* sm: - Schema migrations
|
|
10
|
+
* sm: - Schema migrations (keyed by object KIND as well as name — see buildSchemaMigrationKey)
|
|
11
11
|
* si: - Site identity
|
|
12
12
|
* hc: - HLC clock state
|
|
13
13
|
* cl: - Change log (HLC-indexed for efficient delta queries)
|
|
14
14
|
* qt: - Quarantine (held out-of-basis straggler changes)
|
|
15
15
|
* bl: - Basis-table lifecycle (mapped/derivation-source/unreferenced/detached bookkeeping)
|
|
16
16
|
* fv: - Sync-metadata format version (single record; see SYNC_METADATA_FORMAT_VERSION)
|
|
17
|
+
* sc: - Snapshot checkpoints (resume position of an interrupted streaming snapshot apply)
|
|
17
18
|
*/
|
|
18
19
|
import { serializeKeyNullGrouping } from '@quereus/quereus';
|
|
19
20
|
import { assertNoUnpairedSurrogate } from '@quereus/store';
|
|
20
21
|
import { siteIdToBase64, siteIdFromBase64 } from '../clock/site.js';
|
|
21
22
|
const encoder = new TextEncoder();
|
|
23
|
+
/** Shared: the parsers below run once per key across whole-prefix scans. */
|
|
24
|
+
const decoder = new TextDecoder();
|
|
22
25
|
/** Key prefix bytes for sync metadata. */
|
|
23
26
|
export const SYNC_KEY_PREFIX = {
|
|
24
27
|
COLUMN_VERSION: encoder.encode('cv:'),
|
|
@@ -33,19 +36,38 @@ export const SYNC_KEY_PREFIX = {
|
|
|
33
36
|
QUARANTINE: encoder.encode('qt:'),
|
|
34
37
|
BASIS_LIFECYCLE: encoder.encode('bl:'),
|
|
35
38
|
FORMAT_VERSION: encoder.encode('fv:'),
|
|
39
|
+
SNAPSHOT_CHECKPOINT: encoder.encode('sc:'),
|
|
36
40
|
};
|
|
37
41
|
/**
|
|
38
42
|
* Current sync-metadata storage format version, persisted under the `fv:` key.
|
|
39
43
|
*
|
|
44
|
+
* Version 5: schema migration RECORDS (`sm:` values) carry a length-prefixed
|
|
45
|
+
* `fromTable` slot between the migration type and the DDL (see
|
|
46
|
+
* `metadata/schema-migration.ts`), so a `rename_table` migration can name the
|
|
47
|
+
* table it renamed. The DDL was previously "rest of buffer", so the slot could
|
|
48
|
+
* not be appended — version-4 records are unreadable under this layout.
|
|
49
|
+
*
|
|
50
|
+
* Version 4: schema migration keys (`sm:`) carry the object KIND (`table` /
|
|
51
|
+
* `index`) alongside the object name, so a table and a same-named index no
|
|
52
|
+
* longer share one version counter and suppress each other's migrations
|
|
53
|
+
* (version 3 keyed only `(schema, name)`).
|
|
54
|
+
*
|
|
55
|
+
* Version 3: EVERY variable-length key component — schema, table, pk identity,
|
|
56
|
+
* column — is length-prefixed via {@link joinKeyParts}, so no character is
|
|
57
|
+
* reserved as a delimiter and a name containing `:` or `.` cannot shift the
|
|
58
|
+
* split (version 2 packed schema/table as `{schema}.{table}:`, which mis-parsed
|
|
59
|
+
* a table named `a:b` as table `a`) — retained in version 4.
|
|
60
|
+
*
|
|
40
61
|
* Version 2: per-row records (`cv:`/`tb:`/`cl:`) are keyed by the pk IDENTITY
|
|
41
62
|
* (collation- and semantic-transform-normalized, via {@link encodePkIdentity})
|
|
42
|
-
* and carry the raw pk in the record VALUE
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* snapshot (see docs/sync.md
|
|
63
|
+
* and carry the raw pk in the record VALUE — retained since.
|
|
64
|
+
*
|
|
65
|
+
* Older metadata is unreadable under this layout; a replica whose stored version
|
|
66
|
+
* mismatches must re-bootstrap from a peer snapshot (see docs/sync.md
|
|
67
|
+
* § Metadata format version).
|
|
46
68
|
*/
|
|
47
|
-
export const SYNC_METADATA_FORMAT_VERSION =
|
|
48
|
-
/** Separator between
|
|
69
|
+
export const SYNC_METADATA_FORMAT_VERSION = 5;
|
|
70
|
+
/** Separator between a component's length and the component itself. */
|
|
49
71
|
const SEPARATOR = ':';
|
|
50
72
|
/**
|
|
51
73
|
* Raise when any of `names` (schema/table/column identifiers) carries an unpaired
|
|
@@ -62,6 +84,58 @@ function assertKeyableIdentifiers(...names) {
|
|
|
62
84
|
assertNoUnpairedSurrogate(name, `the identifier "${name}"`);
|
|
63
85
|
}
|
|
64
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Join variable-length key components, each prefixed with its own length in
|
|
89
|
+
* string code units: `{len}:{part}{len}:{part}…`.
|
|
90
|
+
*
|
|
91
|
+
* This is the ONLY encoding used for schema names, table names, pk identities
|
|
92
|
+
* and column names in metadata keys. Every one of those is arbitrary text — a
|
|
93
|
+
* quoted SQL identifier may contain `.` or `:`, and a pk identity freely
|
|
94
|
+
* contains `:` (type tags) and `\0` (member separator) — so no separator
|
|
95
|
+
* character can be reserved, and an explicit length is the only split that
|
|
96
|
+
* cannot shift. Two distinct component tuples can therefore never produce the
|
|
97
|
+
* same key.
|
|
98
|
+
*
|
|
99
|
+
* The length is in code units of the DECODED key string, which the byte
|
|
100
|
+
* encoding preserves: `TextEncoder` folds an unpaired surrogate to U+FFFD, one
|
|
101
|
+
* code unit for one code unit, and paired surrogates survive intact.
|
|
102
|
+
*/
|
|
103
|
+
export function joinKeyParts(...parts) {
|
|
104
|
+
return parts.map(part => `${part.length}${SEPARATOR}${part}`).join('');
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Split one length-prefixed component (`{len}:{part}`) off the front of `rest`.
|
|
108
|
+
* Returns null on a malformed length or an out-of-bounds slice.
|
|
109
|
+
*/
|
|
110
|
+
function splitKeyPart(rest) {
|
|
111
|
+
const lenColon = rest.indexOf(SEPARATOR);
|
|
112
|
+
if (lenColon <= 0)
|
|
113
|
+
return null;
|
|
114
|
+
const lenStr = rest.slice(0, lenColon);
|
|
115
|
+
if (!/^\d+$/.test(lenStr))
|
|
116
|
+
return null;
|
|
117
|
+
const len = parseInt(lenStr, 10);
|
|
118
|
+
const start = lenColon + 1;
|
|
119
|
+
if (start + len > rest.length)
|
|
120
|
+
return null;
|
|
121
|
+
return { part: rest.slice(start, start + len), remainder: rest.slice(start + len) };
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Split exactly `count` length-prefixed components off the front of `rest` — the
|
|
125
|
+
* inverse of {@link joinKeyParts}. Returns null if any component is malformed.
|
|
126
|
+
*/
|
|
127
|
+
function splitKeyParts(rest, count) {
|
|
128
|
+
const parts = [];
|
|
129
|
+
let remainder = rest;
|
|
130
|
+
for (let i = 0; i < count; i++) {
|
|
131
|
+
const split = splitKeyPart(remainder);
|
|
132
|
+
if (!split)
|
|
133
|
+
return null;
|
|
134
|
+
parts.push(split.part);
|
|
135
|
+
remainder = split.remainder;
|
|
136
|
+
}
|
|
137
|
+
return { parts, remainder };
|
|
138
|
+
}
|
|
65
139
|
const IDENTITY_NORMALIZER = (s) => s;
|
|
66
140
|
/**
|
|
67
141
|
* Keying that applies NO collation and NO semantic transform — raw value
|
|
@@ -96,27 +170,21 @@ export function encodeRawPkIdentity(pk) {
|
|
|
96
170
|
}
|
|
97
171
|
/**
|
|
98
172
|
* Build a column version key.
|
|
99
|
-
* Format: cv:{schema}
|
|
173
|
+
* Format: cv:{n}:{schema}{n}:{table}{n}:{identity}{n}:{column}
|
|
100
174
|
*
|
|
101
|
-
*
|
|
102
|
-
* it freely contains `:` (type tags) and `\0` (member separator) — no separator
|
|
103
|
-
* character is guaranteed absent, so an explicit length is the only unambiguous
|
|
104
|
-
* split between identity and column.
|
|
175
|
+
* Every component is length-prefixed — see {@link joinKeyParts}.
|
|
105
176
|
*/
|
|
106
177
|
export function buildColumnVersionKey(schemaName, tableName, identity, column) {
|
|
107
178
|
assertKeyableIdentifiers(schemaName, tableName, column);
|
|
108
|
-
|
|
109
|
-
return encoder.encode(key);
|
|
179
|
+
return encoder.encode(`cv:${joinKeyParts(schemaName, tableName, identity, column)}`);
|
|
110
180
|
}
|
|
111
181
|
/**
|
|
112
182
|
* Build a tombstone key.
|
|
113
|
-
* Format: tb:{schema}
|
|
114
|
-
* (No length prefix — the identity is the final component.)
|
|
183
|
+
* Format: tb:{n}:{schema}{n}:{table}{n}:{identity}
|
|
115
184
|
*/
|
|
116
185
|
export function buildTombstoneKey(schemaName, tableName, identity) {
|
|
117
186
|
assertKeyableIdentifiers(schemaName, tableName);
|
|
118
|
-
|
|
119
|
-
return encoder.encode(key);
|
|
187
|
+
return encoder.encode(`tb:${joinKeyParts(schemaName, tableName, identity)}`);
|
|
120
188
|
}
|
|
121
189
|
/**
|
|
122
190
|
* Build a transaction record key.
|
|
@@ -146,7 +214,7 @@ export function buildPeerSentStateKey(siteId) {
|
|
|
146
214
|
* Returns null for a key outside those prefixes or with a malformed suffix.
|
|
147
215
|
*/
|
|
148
216
|
export function parsePeerStateKey(key) {
|
|
149
|
-
const keyStr =
|
|
217
|
+
const keyStr = decoder.decode(key);
|
|
150
218
|
if (!keyStr.startsWith('ps:') && !keyStr.startsWith('pt:'))
|
|
151
219
|
return null;
|
|
152
220
|
try {
|
|
@@ -156,67 +224,81 @@ export function parsePeerStateKey(key) {
|
|
|
156
224
|
return null;
|
|
157
225
|
}
|
|
158
226
|
}
|
|
227
|
+
/**
|
|
228
|
+
* The key prefix shared by every migration of one schema object:
|
|
229
|
+
* `sm:{n}:{schema}{n}:{kind}{n}:{object}`.
|
|
230
|
+
*
|
|
231
|
+
* The kind sits BEFORE the object name so one object's migrations stay a single
|
|
232
|
+
* exact prefix (and stay contiguous by version within it). Kept separate from
|
|
233
|
+
* {@link buildTablePrefix}, which the two-component `cv:`/`tb:`/`qt:`/`bl:`
|
|
234
|
+
* families share.
|
|
235
|
+
*/
|
|
236
|
+
function buildSchemaMigrationPrefix(schemaName, kind, objectName) {
|
|
237
|
+
return `sm:${joinKeyParts(schemaName, kind, objectName)}`;
|
|
238
|
+
}
|
|
159
239
|
/**
|
|
160
240
|
* Build a schema migration key.
|
|
161
|
-
* Format: sm:{schema}
|
|
241
|
+
* Format: sm:{n}:{schema}{n}:{kind}{n}:{object}{version_padded_10}
|
|
242
|
+
*
|
|
243
|
+
* `kind` distinguishes the two things `objectName` can be: for an index
|
|
244
|
+
* migration it is the INDEX name, for every other migration type the TABLE name.
|
|
245
|
+
* Without it a table `orders` and an index `orders` share one version counter,
|
|
246
|
+
* and a concurrent migration of one silently suppresses the other on the
|
|
247
|
+
* receiving replica.
|
|
248
|
+
*
|
|
249
|
+
* The version is fixed-width zero-padded (not length-prefixed) so migrations of
|
|
250
|
+
* one object sort by version within that object's prefix.
|
|
162
251
|
*/
|
|
163
|
-
export function buildSchemaMigrationKey(schemaName,
|
|
164
|
-
assertKeyableIdentifiers(schemaName,
|
|
165
|
-
|
|
252
|
+
export function buildSchemaMigrationKey(schemaName, kind, objectName, version) {
|
|
253
|
+
assertKeyableIdentifiers(schemaName, objectName);
|
|
254
|
+
const versionPart = version.toString().padStart(10, '0');
|
|
255
|
+
return encoder.encode(`${buildSchemaMigrationPrefix(schemaName, kind, objectName)}${versionPart}`);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Build a prefix over one `(schema, table)` under `prefix`. Exact: each
|
|
259
|
+
* component's length is carried by the component itself, so no other
|
|
260
|
+
* `(schema, table)` pair can share these bytes (see {@link joinKeyParts}).
|
|
261
|
+
*/
|
|
262
|
+
function buildTablePrefix(prefix, schemaName, tableName) {
|
|
263
|
+
return encoder.encode(`${prefix}${joinKeyParts(schemaName, tableName)}`);
|
|
264
|
+
}
|
|
265
|
+
/** Scan bounds over an exact byte prefix. */
|
|
266
|
+
function prefixBounds(prefix) {
|
|
267
|
+
return { gte: prefix, lt: incrementLastByte(prefix) };
|
|
166
268
|
}
|
|
167
269
|
/**
|
|
168
270
|
* Build scan bounds for all column versions of a table.
|
|
169
|
-
* Returns keys to scan cv:{schema}
|
|
271
|
+
* Returns keys to scan cv:{n}:{schema}{n}:{table}*
|
|
170
272
|
*/
|
|
171
273
|
export function buildTableColumnVersionScanBounds(schemaName, tableName) {
|
|
172
|
-
|
|
173
|
-
return {
|
|
174
|
-
gte: encoder.encode(prefix),
|
|
175
|
-
lt: incrementLastByte(encoder.encode(prefix)),
|
|
176
|
-
};
|
|
274
|
+
return prefixBounds(buildTablePrefix('cv:', schemaName, tableName));
|
|
177
275
|
}
|
|
178
276
|
/**
|
|
179
277
|
* The key prefix shared by every column version of one row:
|
|
180
|
-
* `cv:{schema}
|
|
181
|
-
*
|
|
182
|
-
* Exported so a row scan can recover each entry's column name by stripping this
|
|
183
|
-
* exact prefix, rather than splitting the key at its last `:` — the column name
|
|
184
|
-
* is the only unbounded, separator-bearing component, so only the prefix is
|
|
185
|
-
* unambiguous (see {@link parseColumnVersionKey}, which has no pk to anchor on).
|
|
278
|
+
* `cv:{n}:{schema}{n}:{table}{n}:{identity}`.
|
|
186
279
|
*/
|
|
187
|
-
|
|
188
|
-
return `cv:${schemaName
|
|
280
|
+
function buildColumnVersionRowPrefix(schemaName, tableName, identity) {
|
|
281
|
+
return `cv:${joinKeyParts(schemaName, tableName, identity)}`;
|
|
189
282
|
}
|
|
190
283
|
/**
|
|
191
284
|
* Build scan bounds for all column versions of a row.
|
|
192
|
-
* Returns keys to scan cv:{schema}
|
|
285
|
+
* Returns keys to scan cv:{n}:{schema}{n}:{table}{n}:{identity}*
|
|
193
286
|
*/
|
|
194
287
|
export function buildColumnVersionScanBounds(schemaName, tableName, identity) {
|
|
195
|
-
|
|
196
|
-
return {
|
|
197
|
-
gte: encoder.encode(prefix),
|
|
198
|
-
lt: incrementLastByte(encoder.encode(prefix)),
|
|
199
|
-
};
|
|
288
|
+
return prefixBounds(encoder.encode(buildColumnVersionRowPrefix(schemaName, tableName, identity)));
|
|
200
289
|
}
|
|
201
290
|
/**
|
|
202
291
|
* Build scan bounds for all tombstones in a table.
|
|
203
292
|
*/
|
|
204
293
|
export function buildTombstoneScanBounds(schemaName, tableName) {
|
|
205
|
-
|
|
206
|
-
return {
|
|
207
|
-
gte: encoder.encode(prefix),
|
|
208
|
-
lt: incrementLastByte(encoder.encode(prefix)),
|
|
209
|
-
};
|
|
294
|
+
return prefixBounds(buildTablePrefix('tb:', schemaName, tableName));
|
|
210
295
|
}
|
|
211
296
|
/**
|
|
212
|
-
* Build scan bounds for all schema migrations of a table
|
|
297
|
+
* Build scan bounds for all schema migrations of one object — a table's or an
|
|
298
|
+
* index's, per `kind`. A table and a same-named index have disjoint bounds.
|
|
213
299
|
*/
|
|
214
|
-
export function buildSchemaMigrationScanBounds(schemaName,
|
|
215
|
-
|
|
216
|
-
return {
|
|
217
|
-
gte: encoder.encode(prefix),
|
|
218
|
-
lt: incrementLastByte(encoder.encode(prefix)),
|
|
219
|
-
};
|
|
300
|
+
export function buildSchemaMigrationScanBounds(schemaName, kind, objectName) {
|
|
301
|
+
return prefixBounds(encoder.encode(buildSchemaMigrationPrefix(schemaName, kind, objectName)));
|
|
220
302
|
}
|
|
221
303
|
/**
|
|
222
304
|
* Increment the last byte of a key to create an exclusive upper bound.
|
|
@@ -260,101 +342,60 @@ export function buildAllSchemaMigrationsScanBounds() {
|
|
|
260
342
|
lt: incrementLastByte(SYNC_KEY_PREFIX.SCHEMA_MIGRATION),
|
|
261
343
|
};
|
|
262
344
|
}
|
|
263
|
-
/**
|
|
264
|
-
* Split a length-prefixed identity component off `rest` (the key text after the
|
|
265
|
-
* table's separator): `{identity_length}:{identity}` followed by `remainder`.
|
|
266
|
-
* Returns null on a malformed length or out-of-bounds slice.
|
|
267
|
-
*/
|
|
268
|
-
function splitLengthPrefixedIdentity(rest) {
|
|
269
|
-
const lenColon = rest.indexOf(SEPARATOR);
|
|
270
|
-
if (lenColon <= 0)
|
|
271
|
-
return null;
|
|
272
|
-
const lenStr = rest.slice(0, lenColon);
|
|
273
|
-
if (!/^\d+$/.test(lenStr))
|
|
274
|
-
return null;
|
|
275
|
-
const len = parseInt(lenStr, 10);
|
|
276
|
-
const start = lenColon + 1;
|
|
277
|
-
if (start + len > rest.length)
|
|
278
|
-
return null;
|
|
279
|
-
return { identity: rest.slice(start, start + len), remainder: rest.slice(start + len) };
|
|
280
|
-
}
|
|
281
345
|
/**
|
|
282
346
|
* Parse a column version key to extract components.
|
|
283
|
-
* Key format: cv:{schema}
|
|
347
|
+
* Key format: cv:{n}:{schema}{n}:{table}{n}:{identity}{n}:{column}
|
|
284
348
|
*
|
|
285
349
|
* Returns the pk IDENTITY string — the identity is lossy and cannot be decoded
|
|
286
350
|
* back to values; the raw pk lives in the record VALUE (`ColumnVersion.pk`).
|
|
287
|
-
* The length
|
|
288
|
-
* what characters
|
|
351
|
+
* The per-component length prefixes make every split unambiguous regardless of
|
|
352
|
+
* what characters any component contains.
|
|
289
353
|
*/
|
|
290
354
|
export function parseColumnVersionKey(key) {
|
|
291
|
-
const keyStr =
|
|
355
|
+
const keyStr = decoder.decode(key);
|
|
292
356
|
if (!keyStr.startsWith('cv:'))
|
|
293
357
|
return null;
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
const firstDot = rest.indexOf('.');
|
|
297
|
-
if (firstDot === -1)
|
|
298
|
-
return null;
|
|
299
|
-
const schema = rest.slice(0, firstDot);
|
|
300
|
-
const afterDot = rest.slice(firstDot + 1);
|
|
301
|
-
const firstColon = afterDot.indexOf(':');
|
|
302
|
-
if (firstColon === -1)
|
|
303
|
-
return null;
|
|
304
|
-
const table = afterDot.slice(0, firstColon);
|
|
305
|
-
const split = splitLengthPrefixedIdentity(afterDot.slice(firstColon + 1));
|
|
306
|
-
if (!split || !split.remainder.startsWith(SEPARATOR))
|
|
358
|
+
const split = splitKeyParts(keyStr.slice(3), 4);
|
|
359
|
+
if (!split || split.remainder.length !== 0)
|
|
307
360
|
return null;
|
|
308
|
-
|
|
361
|
+
const [schema, table, identity, column] = split.parts;
|
|
362
|
+
return { schema, table, identity, column };
|
|
309
363
|
}
|
|
310
364
|
/**
|
|
311
365
|
* Parse a tombstone key to extract components.
|
|
312
|
-
* Key format: tb:{schema}
|
|
366
|
+
* Key format: tb:{n}:{schema}{n}:{table}{n}:{identity}
|
|
313
367
|
*
|
|
314
368
|
* Returns the pk IDENTITY string; the raw pk lives in the record VALUE
|
|
315
369
|
* (`Tombstone.pk`).
|
|
316
370
|
*/
|
|
317
371
|
export function parseTombstoneKey(key) {
|
|
318
|
-
const keyStr =
|
|
372
|
+
const keyStr = decoder.decode(key);
|
|
319
373
|
if (!keyStr.startsWith('tb:'))
|
|
320
374
|
return null;
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
const firstDot = rest.indexOf('.');
|
|
324
|
-
if (firstDot === -1)
|
|
375
|
+
const split = splitKeyParts(keyStr.slice(3), 3);
|
|
376
|
+
if (!split || split.remainder.length !== 0)
|
|
325
377
|
return null;
|
|
326
|
-
const schema =
|
|
327
|
-
|
|
328
|
-
const firstColon = afterDot.indexOf(':');
|
|
329
|
-
if (firstColon === -1)
|
|
330
|
-
return null;
|
|
331
|
-
const table = afterDot.slice(0, firstColon);
|
|
332
|
-
return { schema, table, identity: afterDot.slice(firstColon + 1) };
|
|
378
|
+
const [schema, table, identity] = split.parts;
|
|
379
|
+
return { schema, table, identity };
|
|
333
380
|
}
|
|
334
381
|
/**
|
|
335
382
|
* Parse a schema migration key to extract components.
|
|
336
|
-
* Key format: sm:{schema}
|
|
383
|
+
* Key format: sm:{n}:{schema}{n}:{kind}{n}:{object}{version_padded_10}
|
|
384
|
+
*
|
|
385
|
+
* `table` carries the object name whatever its kind — for an `index` key it is
|
|
386
|
+
* the index name, not the table the index is on (which the key never held).
|
|
337
387
|
*/
|
|
338
388
|
export function parseSchemaMigrationKey(key) {
|
|
339
|
-
const keyStr =
|
|
389
|
+
const keyStr = decoder.decode(key);
|
|
340
390
|
if (!keyStr.startsWith('sm:'))
|
|
341
391
|
return null;
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
const firstDot = rest.indexOf('.');
|
|
345
|
-
if (firstDot === -1)
|
|
392
|
+
const split = splitKeyParts(keyStr.slice(3), 3);
|
|
393
|
+
if (!split || !/^\d+$/.test(split.remainder))
|
|
346
394
|
return null;
|
|
347
|
-
const schema =
|
|
348
|
-
|
|
349
|
-
const firstColon = afterDot.indexOf(':');
|
|
350
|
-
if (firstColon === -1)
|
|
395
|
+
const [schema, kind, table] = split.parts;
|
|
396
|
+
if (kind !== 'table' && kind !== 'index')
|
|
351
397
|
return null;
|
|
352
|
-
|
|
353
|
-
const versionStr = afterDot.slice(firstColon + 1);
|
|
354
|
-
const version = parseInt(versionStr, 10);
|
|
355
|
-
if (isNaN(version))
|
|
356
|
-
return null;
|
|
357
|
-
return { schema, table, version };
|
|
398
|
+
return { schema, kind, table, version: parseInt(split.remainder, 10) };
|
|
358
399
|
}
|
|
359
400
|
/**
|
|
360
401
|
* Serialize an HLC to a sortable key component (30 bytes, big-endian).
|
|
@@ -387,20 +428,22 @@ export function deserializeHLCFromKey(buffer) {
|
|
|
387
428
|
}
|
|
388
429
|
/**
|
|
389
430
|
* Build a change log key.
|
|
390
|
-
* Format: cl:{hlc_bytes}{type_byte}{schema}
|
|
431
|
+
* Format: cl:{hlc_bytes}{type_byte}{n}:{schema}{n}:{table}{n}:{identity}[{n}:{column}]
|
|
391
432
|
*
|
|
392
433
|
* The HLC comes first to enable efficient range scans by time.
|
|
393
434
|
* type_byte: 0x01 for column change, 0x02 for delete
|
|
394
|
-
*
|
|
435
|
+
* Every text component is length-prefixed — see {@link joinKeyParts}.
|
|
395
436
|
*/
|
|
396
437
|
export function buildChangeLogKey(hlc, entryType, schemaName, tableName, identity, column) {
|
|
397
438
|
assertKeyableIdentifiers(schemaName, tableName, ...(column !== undefined ? [column] : []));
|
|
398
439
|
const hlcBytes = serializeHLCForKey(hlc);
|
|
399
440
|
const typeByte = entryType === 'column' ? 0x01 : 0x02;
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
441
|
+
// `!== undefined`, not truthiness: a zero-length column name must still emit its
|
|
442
|
+
// (empty) component, or the builder would write 3 parts where `parseChangeLogKey`
|
|
443
|
+
// demands 4 for a `column` entry and the record would read back as unparseable.
|
|
444
|
+
const suffix = column !== undefined
|
|
445
|
+
? joinKeyParts(schemaName, tableName, identity, column)
|
|
446
|
+
: joinKeyParts(schemaName, tableName, identity);
|
|
404
447
|
const suffixBytes = encoder.encode(suffix);
|
|
405
448
|
// cl: (3) + hlc (30) + type (1) + suffix
|
|
406
449
|
const key = new Uint8Array(3 + 30 + 1 + suffixBytes.length);
|
|
@@ -456,40 +499,28 @@ export function parseChangeLogKey(key) {
|
|
|
456
499
|
// Minimum: cl: (3) + hlc (30) + type (1) + some suffix
|
|
457
500
|
if (key.length < 35)
|
|
458
501
|
return null;
|
|
459
|
-
const prefixStr =
|
|
502
|
+
const prefixStr = decoder.decode(key.slice(0, 3));
|
|
460
503
|
if (prefixStr !== 'cl:')
|
|
461
504
|
return null;
|
|
462
505
|
const hlcBytes = key.slice(3, 33);
|
|
463
506
|
const hlc = deserializeHLCFromKey(hlcBytes);
|
|
464
507
|
const typeByte = key[33];
|
|
465
508
|
const entryType = typeByte === 0x01 ? 'column' : 'delete';
|
|
466
|
-
const suffixStr =
|
|
467
|
-
// Parse suffix: {schema}
|
|
468
|
-
const
|
|
469
|
-
if (
|
|
470
|
-
return null;
|
|
471
|
-
const schema = suffixStr.slice(0, firstDot);
|
|
472
|
-
const afterDot = suffixStr.slice(firstDot + 1);
|
|
473
|
-
const firstColon = afterDot.indexOf(':');
|
|
474
|
-
if (firstColon === -1)
|
|
475
|
-
return null;
|
|
476
|
-
const table = afterDot.slice(0, firstColon);
|
|
477
|
-
const split = splitLengthPrefixedIdentity(afterDot.slice(firstColon + 1));
|
|
478
|
-
if (!split)
|
|
509
|
+
const suffixStr = decoder.decode(key.slice(34));
|
|
510
|
+
// Parse suffix: {n}:{schema}{n}:{table}{n}:{identity}[{n}:{column}]
|
|
511
|
+
const split = splitKeyParts(suffixStr, entryType === 'column' ? 4 : 3);
|
|
512
|
+
if (!split || split.remainder.length !== 0)
|
|
479
513
|
return null;
|
|
514
|
+
const [schema, table, identity] = split.parts;
|
|
480
515
|
if (entryType === 'column') {
|
|
481
|
-
|
|
482
|
-
return null;
|
|
483
|
-
return { hlc, entryType, schema, table, identity: split.identity, column: split.remainder.slice(1) };
|
|
516
|
+
return { hlc, entryType, schema, table, identity, column: split.parts[3] };
|
|
484
517
|
}
|
|
485
518
|
// Delete entry - no column
|
|
486
|
-
|
|
487
|
-
return null;
|
|
488
|
-
return { hlc, entryType, schema, table, identity: split.identity };
|
|
519
|
+
return { hlc, entryType, schema, table, identity };
|
|
489
520
|
}
|
|
490
521
|
/**
|
|
491
522
|
* Build a quarantine key for a held out-of-basis straggler change.
|
|
492
|
-
* Format: qt:{schema}
|
|
523
|
+
* Format: qt:{n}:{schema}{n}:{table} + hlc_bytes(30) + type_byte(1) + {n}:{raw_identity}[{n}:{column}]
|
|
493
524
|
*
|
|
494
525
|
* Unlike the change log (`cl:`), the table prefix comes BEFORE the HLC so the
|
|
495
526
|
* range scans by `(schema, table)` for operator inspection. The HLC + type + pk
|
|
@@ -507,13 +538,13 @@ export function parseChangeLogKey(key) {
|
|
|
507
538
|
*/
|
|
508
539
|
export function buildQuarantineKey(schemaName, tableName, hlc, entryType, pk, column) {
|
|
509
540
|
assertKeyableIdentifiers(schemaName, tableName, ...(column !== undefined ? [column] : []));
|
|
510
|
-
const prefixBytes =
|
|
541
|
+
const prefixBytes = buildTablePrefix('qt:', schemaName, tableName);
|
|
511
542
|
const hlcBytes = serializeHLCForKey(hlc);
|
|
512
543
|
const typeByte = entryType === 'column' ? 0x01 : 0x02;
|
|
513
544
|
const rawIdentity = encodeRawPkIdentity(pk);
|
|
514
|
-
const suffix = column
|
|
515
|
-
?
|
|
516
|
-
:
|
|
545
|
+
const suffix = column !== undefined
|
|
546
|
+
? joinKeyParts(rawIdentity, column)
|
|
547
|
+
: joinKeyParts(rawIdentity);
|
|
517
548
|
const suffixBytes = encoder.encode(suffix);
|
|
518
549
|
const key = new Uint8Array(prefixBytes.length + 30 + 1 + suffixBytes.length);
|
|
519
550
|
let offset = 0;
|
|
@@ -529,17 +560,17 @@ export function buildQuarantineKey(schemaName, tableName, hlc, entryType, pk, co
|
|
|
529
560
|
/**
|
|
530
561
|
* Build scan bounds over quarantine entries.
|
|
531
562
|
* - both `schemaName` and `tableName`: a single table's held changes.
|
|
532
|
-
* - `schemaName` only: all held changes in that schema
|
|
563
|
+
* - `schemaName` only: all held changes in that schema — `qt:{n}:{schema}` is
|
|
564
|
+
* exact, since the schema's own length prefix terminates it (a different
|
|
565
|
+
* schema differs in either that length or its text).
|
|
533
566
|
* - neither: every quarantine entry (the GC sweep).
|
|
534
567
|
*/
|
|
535
568
|
export function buildQuarantineScanBounds(schemaName, tableName) {
|
|
536
569
|
if (schemaName !== undefined && tableName !== undefined) {
|
|
537
|
-
|
|
538
|
-
return { gte: prefix, lt: incrementLastByte(prefix) };
|
|
570
|
+
return prefixBounds(buildTablePrefix('qt:', schemaName, tableName));
|
|
539
571
|
}
|
|
540
572
|
if (schemaName !== undefined) {
|
|
541
|
-
|
|
542
|
-
return { gte: prefix, lt: incrementLastByte(prefix) };
|
|
573
|
+
return prefixBounds(encoder.encode(`qt:${joinKeyParts(schemaName)}`));
|
|
543
574
|
}
|
|
544
575
|
return {
|
|
545
576
|
gte: SYNC_KEY_PREFIX.QUARANTINE,
|
|
@@ -548,7 +579,7 @@ export function buildQuarantineScanBounds(schemaName, tableName) {
|
|
|
548
579
|
}
|
|
549
580
|
/**
|
|
550
581
|
* Build a basis-table lifecycle key.
|
|
551
|
-
* Format: bl:{schema}
|
|
582
|
+
* Format: bl:{n}:{schema}{n}:{table} (both lowercased — basis relations are keyed
|
|
552
583
|
* lowercased throughout the lens deployment snapshot, so the lifecycle key
|
|
553
584
|
* matches `relationBacking` / `derivation.sourceTables` keys exactly).
|
|
554
585
|
*
|
|
@@ -558,7 +589,7 @@ export function buildQuarantineScanBounds(schemaName, tableName) {
|
|
|
558
589
|
*/
|
|
559
590
|
export function buildBasisLifecycleKey(schemaName, tableName) {
|
|
560
591
|
assertKeyableIdentifiers(schemaName, tableName);
|
|
561
|
-
return
|
|
592
|
+
return buildTablePrefix('bl:', schemaName.toLowerCase(), tableName.toLowerCase());
|
|
562
593
|
}
|
|
563
594
|
/**
|
|
564
595
|
* Build scan bounds over all basis-table lifecycle records (operator
|
|
@@ -571,4 +602,28 @@ export function buildAllBasisLifecycleScanBounds() {
|
|
|
571
602
|
lt: incrementLastByte(SYNC_KEY_PREFIX.BASIS_LIFECYCLE),
|
|
572
603
|
};
|
|
573
604
|
}
|
|
605
|
+
/**
|
|
606
|
+
* Build a snapshot checkpoint key — the resume position of one streaming
|
|
607
|
+
* snapshot apply.
|
|
608
|
+
* Format: sc:{snapshotId}
|
|
609
|
+
*
|
|
610
|
+
* Unlike `cv:` / `tb:` / `cl:`, this suffix is NOT length-prefixed and has no
|
|
611
|
+
* `parse…Key` counterpart: it is a single UUID, which cannot contain the `:`
|
|
612
|
+
* separator, so nothing can shift the split. Callers that need the id back read
|
|
613
|
+
* the `snapshotId` field of the record VALUE (see `snapshot-stream.ts`).
|
|
614
|
+
*/
|
|
615
|
+
export function buildSnapshotCheckpointKey(snapshotId) {
|
|
616
|
+
return encoder.encode(`sc:${snapshotId}`);
|
|
617
|
+
}
|
|
618
|
+
/**
|
|
619
|
+
* Build scan bounds over every saved snapshot checkpoint. A non-empty scan means
|
|
620
|
+
* a streaming snapshot apply cleared local metadata and never reached its footer,
|
|
621
|
+
* so this replica's data is partial (see `listSnapshotCheckpoints`).
|
|
622
|
+
*/
|
|
623
|
+
export function buildAllSnapshotCheckpointScanBounds() {
|
|
624
|
+
return {
|
|
625
|
+
gte: SYNC_KEY_PREFIX.SNAPSHOT_CHECKPOINT,
|
|
626
|
+
lt: incrementLastByte(SYNC_KEY_PREFIX.SNAPSHOT_CHECKPOINT),
|
|
627
|
+
};
|
|
628
|
+
}
|
|
574
629
|
//# sourceMappingURL=keys.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/metadata/keys.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/metadata/keys.ts"],"names":[],"mappings":"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"}
|