@rocicorp/zero 0.12.2025012902 → 0.12.2025013000

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 (51) hide show
  1. package/out/advanced.js +1 -1
  2. package/out/{chunk-HQA4Z25K.js → chunk-UEPZPKPV.js} +125 -171
  3. package/out/{chunk-HQA4Z25K.js.map → chunk-UEPZPKPV.js.map} +4 -4
  4. package/out/{chunk-QAAJZ32T.js → chunk-ZVLXEWWB.js} +71 -11
  5. package/out/chunk-ZVLXEWWB.js.map +7 -0
  6. package/out/solid.js +2 -2
  7. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  8. package/out/zero-cache/src/services/change-source/pg/change-source.js +86 -117
  9. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  10. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  11. package/out/zero-cache/src/services/change-streamer/storer.js +3 -2
  12. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  13. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +1 -1
  14. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  15. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  16. package/out/zero-cache/src/services/view-syncer/view-syncer.js +26 -2
  17. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  18. package/out/zero.js +2 -2
  19. package/out/zql/src/ivm/change.d.ts +4 -4
  20. package/out/zql/src/ivm/change.d.ts.map +1 -1
  21. package/out/zql/src/ivm/change.js +1 -4
  22. package/out/zql/src/ivm/change.js.map +1 -1
  23. package/out/zql/src/ivm/data.d.ts +2 -1
  24. package/out/zql/src/ivm/data.d.ts.map +1 -1
  25. package/out/zql/src/ivm/data.js +7 -0
  26. package/out/zql/src/ivm/data.js.map +1 -1
  27. package/out/zql/src/ivm/exists.d.ts +3 -2
  28. package/out/zql/src/ivm/exists.d.ts.map +1 -1
  29. package/out/zql/src/ivm/exists.js +55 -64
  30. package/out/zql/src/ivm/exists.js.map +1 -1
  31. package/out/zql/src/ivm/filter-push.js +1 -1
  32. package/out/zql/src/ivm/filter-push.js.map +1 -1
  33. package/out/zql/src/ivm/filter.d.ts +2 -3
  34. package/out/zql/src/ivm/filter.d.ts.map +1 -1
  35. package/out/zql/src/ivm/filter.js +12 -7
  36. package/out/zql/src/ivm/filter.js.map +1 -1
  37. package/out/zql/src/ivm/join.d.ts +4 -1
  38. package/out/zql/src/ivm/join.d.ts.map +1 -1
  39. package/out/zql/src/ivm/join.js +32 -25
  40. package/out/zql/src/ivm/join.js.map +1 -1
  41. package/out/zql/src/ivm/skip.d.ts.map +1 -1
  42. package/out/zql/src/ivm/skip.js +1 -2
  43. package/out/zql/src/ivm/skip.js.map +1 -1
  44. package/out/zql/src/ivm/take.d.ts.map +1 -1
  45. package/out/zql/src/ivm/take.js +4 -3
  46. package/out/zql/src/ivm/take.js.map +1 -1
  47. package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
  48. package/out/zql/src/ivm/view-apply-change.js +4 -10
  49. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  50. package/package.json +2 -1
  51. package/out/chunk-QAAJZ32T.js.map +0 -7
@@ -64,6 +64,64 @@ function must(v, msg) {
64
64
  return v;
65
65
  }
66
66
 
67
+ // ../zql/src/ivm/data.ts
68
+ import { compareUTF8 } from "compare-utf8";
69
+ function compareValues(a, b) {
70
+ a = normalizeUndefined(a);
71
+ b = normalizeUndefined(b);
72
+ if (a === b) {
73
+ return 0;
74
+ }
75
+ if (a === null) {
76
+ return -1;
77
+ }
78
+ if (b === null) {
79
+ return 1;
80
+ }
81
+ if (typeof a === "boolean") {
82
+ assertBoolean(b);
83
+ return a ? 1 : -1;
84
+ }
85
+ if (typeof a === "number") {
86
+ assertNumber(b);
87
+ return a - b;
88
+ }
89
+ if (typeof a === "string") {
90
+ assertString(b);
91
+ return compareUTF8(a, b);
92
+ }
93
+ throw new Error(`Unsupported type: ${a}`);
94
+ }
95
+ function normalizeUndefined(v) {
96
+ return v ?? null;
97
+ }
98
+ function makeComparator(order, reverse) {
99
+ return (a, b) => {
100
+ for (const ord of order) {
101
+ const field = ord[0];
102
+ const comp = compareValues(a[field], b[field]);
103
+ if (comp !== 0) {
104
+ const result = ord[1] === "asc" ? comp : -comp;
105
+ return reverse ? -result : result;
106
+ }
107
+ }
108
+ return 0;
109
+ };
110
+ }
111
+ function valuesEqual(a, b) {
112
+ if (a == null || b == null) {
113
+ return false;
114
+ }
115
+ return a === b;
116
+ }
117
+ function drainStreams(node) {
118
+ for (const stream of Object.values(node.relationships)) {
119
+ for (const node2 of stream()) {
120
+ drainStreams(node2);
121
+ }
122
+ }
123
+ }
124
+
67
125
  // ../zql/src/ivm/view-apply-change.ts
68
126
  function applyChange(parentEntry, change, schema, relationship, format) {
69
127
  if (schema.isHidden) {
@@ -74,7 +132,7 @@ function applyChange(parentEntry, change, schema, relationship, format) {
74
132
  change.node.relationships
75
133
  )) {
76
134
  const childSchema = must(schema.relationships[relationship2]);
77
- for (const node of children) {
135
+ for (const node of children()) {
78
136
  applyChange(
79
137
  parentEntry,
80
138
  { type: change.type, node },
@@ -132,7 +190,7 @@ function applyChange(parentEntry, change, schema, relationship, format) {
132
190
  }
133
191
  const newView = childFormat.singular ? void 0 : [];
134
192
  newEntry[relationship2] = newView;
135
- for (const node of children) {
193
+ for (const node of children()) {
136
194
  applyChange(
137
195
  newEntry,
138
196
  { type: "add", node },
@@ -168,7 +226,11 @@ function applyChange(parentEntry, change, schema, relationship, format) {
168
226
  existing = parentEntry[relationship];
169
227
  } else {
170
228
  const view = getChildEntryList(parentEntry, relationship);
171
- const { pos, found } = binarySearch(view, change.row, schema.compareRows);
229
+ const { pos, found } = binarySearch(
230
+ view,
231
+ change.node.row,
232
+ schema.compareRows
233
+ );
172
234
  assert(found, "node does not exist");
173
235
  existing = view[pos];
174
236
  }
@@ -267,13 +329,6 @@ function makeEntryPreserveRelationships(row, entry, relationships) {
267
329
  }
268
330
  return result;
269
331
  }
270
- function drainStreams(node) {
271
- for (const stream of Object.values(node.relationships)) {
272
- for (const node2 of stream) {
273
- drainStreams(node2);
274
- }
275
- }
276
- }
277
332
  function getChildEntryList(parentEntry, relationship) {
278
333
  const view = parentEntry[relationship];
279
334
  assertArray(view);
@@ -291,6 +346,11 @@ export {
291
346
  assertNotNull,
292
347
  unreachable,
293
348
  must,
349
+ compareValues,
350
+ normalizeUndefined,
351
+ makeComparator,
352
+ valuesEqual,
353
+ drainStreams,
294
354
  applyChange
295
355
  };
296
- //# sourceMappingURL=chunk-QAAJZ32T.js.map
356
+ //# sourceMappingURL=chunk-ZVLXEWWB.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../shared/src/asserts.ts", "../../shared/src/must.ts", "../../zql/src/ivm/data.ts", "../../zql/src/ivm/view-apply-change.ts"],
4
+ "sourcesContent": ["export function assert(\n b: unknown,\n msg: string | (() => string) = 'Assertion failed',\n): asserts b {\n if (!b) {\n const msgStr = typeof msg === 'string' ? msg : msg();\n throw new Error(msgStr);\n }\n}\n\nexport function assertString(v: unknown): asserts v is string {\n assertType(v, 'string');\n}\n\nexport function assertNumber(v: unknown): asserts v is number {\n assertType(v, 'number');\n}\n\nexport function assertBoolean(v: unknown): asserts v is boolean {\n assertType(v, 'boolean');\n}\n\nfunction assertType(v: unknown, t: string) {\n if (typeof v !== t) {\n throwInvalidType(v, t);\n }\n}\n\nexport function assertObject(v: unknown): asserts v is Record<string, unknown> {\n if (v === null) {\n throwInvalidType(v, 'object');\n }\n assertType(v, 'object');\n}\n\nexport function assertArray(v: unknown): asserts v is unknown[] {\n if (!Array.isArray(v)) {\n throwInvalidType(v, 'array');\n }\n}\n\nexport function invalidType(v: unknown, t: string): string {\n let s = 'Invalid type: ';\n if (v === null || v === undefined) {\n s += v;\n } else {\n s += `${typeof v} \\`${v}\\``;\n }\n return s + `, expected ${t}`;\n}\n\nexport function throwInvalidType(v: unknown, t: string): never {\n throw new Error(invalidType(v, t));\n}\n\nexport function assertNotNull<T>(v: T | null): asserts v is T {\n if (v === null) {\n throw new Error('Expected non-null value');\n }\n}\n\nexport function assertUndefined<T>(\n v: T | undefined,\n msg = 'Expected undefined value',\n): asserts v is T {\n if (v !== undefined) {\n throw new Error(msg);\n }\n}\n\nexport function assertNotUndefined<T>(\n v: T | undefined,\n msg = 'Expected non undefined value',\n): asserts v is T {\n if (v === undefined) {\n throw new Error(msg);\n }\n}\n\nexport function assertInstanceof<T>(\n v: unknown,\n t: new (...args: unknown[]) => T,\n): asserts v is T {\n if (!(v instanceof t)) {\n throw new Error(`Expected instanceof ${t.name}`);\n }\n}\n\nexport function assertUint8Array(v: unknown): asserts v is Uint8Array {\n assertInstanceof(v, Uint8Array);\n}\n\nexport function unreachable(): never;\nexport function unreachable(v: never): never;\nexport function unreachable(_?: never): never {\n throw new Error('Unreachable');\n}\n\nexport function notImplemented(): never {\n throw new Error('Not implemented');\n}\n", "export function must<T>(v: T | undefined | null, msg?: string): T {\n // eslint-disable-next-line eqeqeq\n if (v == null) {\n throw new Error(msg ?? `Unexpected ${v} value`);\n }\n return v;\n}\n", "import {compareUTF8} from 'compare-utf8';\nimport {\n assertBoolean,\n assertNumber,\n assertString,\n} from '../../../shared/src/asserts.ts';\nimport type {Ordering} from '../../../zero-protocol/src/ast.ts';\nimport type {Row, Value} from '../../../zero-protocol/src/data.ts';\nimport type {Stream} from './stream.ts';\n\n/**\n * A row flowing through the pipeline, plus its relationships.\n * Relationships are generated lazily as read.\n */\nexport type Node = {\n row: Row;\n relationships: Record<string, () => Stream<Node>>;\n};\n\n/**\n * Compare two values. The values must be of the same type. This function\n * throws at runtime if the types differ.\n *\n * Note, this function considers `null === null` and\n * `undefined === undefined`. This is different than SQL. In join code,\n * null must be treated separately.\n *\n * See: https://github.com/rocicorp/mono/pull/2116/files#r1704811479\n *\n * @returns < 0 if a < b, 0 if a === b, > 0 if a > b\n */\nexport function compareValues(a: Value, b: Value): number {\n a = normalizeUndefined(a);\n b = normalizeUndefined(b);\n\n if (a === b) {\n return 0;\n }\n if (a === null) {\n return -1;\n }\n if (b === null) {\n return 1;\n }\n if (typeof a === 'boolean') {\n assertBoolean(b);\n return a ? 1 : -1;\n }\n if (typeof a === 'number') {\n assertNumber(b);\n return a - b;\n }\n if (typeof a === 'string') {\n assertString(b);\n // We compare all strings in Zero as UTF-8. This is the default on SQLite\n // and we need to match it. See:\n // https://blog.replicache.dev/blog/replicache-11-adventures-in-text-encoding.\n //\n // TODO: We could change this since SQLite supports UTF-16. Microbenchmark\n // to see if there's a big win.\n //\n // https://www.sqlite.org/c3ref/create_collation.html\n return compareUTF8(a, b);\n }\n throw new Error(`Unsupported type: ${a}`);\n}\n\nexport type NormalizedValue = Exclude<Value, undefined>;\n\n/**\n * We allow undefined to be passed for the convenience of developers, but we\n * treat it equivalently to null. It's better for perf to not create an copy\n * of input values, so we just normalize at use when necessary.\n */\nexport function normalizeUndefined(v: Value): NormalizedValue {\n return v ?? null;\n}\n\nexport type Comparator = (r1: Row, r2: Row) => number;\n\nexport function makeComparator(\n order: Ordering,\n reverse?: boolean | undefined,\n): Comparator {\n return (a, b) => {\n // Skip destructuring here since it is hot code.\n for (const ord of order) {\n const field = ord[0];\n const comp = compareValues(a[field], b[field]);\n if (comp !== 0) {\n const result = ord[1] === 'asc' ? comp : -comp;\n return reverse ? -result : result;\n }\n }\n return 0;\n };\n}\n\n/**\n * Determine if two values are equal. Note that unlike compareValues() above,\n * this function treats `null` as unequal to itself (and same for `undefined`).\n * This is required to make joins work correctly, but may not be the right\n * semantic for your application.\n */\nexport function valuesEqual(a: Value, b: Value): boolean {\n // eslint-disable-next-line eqeqeq\n if (a == null || b == null) {\n return false;\n }\n return a === b;\n}\n\nexport function drainStreams(node: Node) {\n for (const stream of Object.values(node.relationships)) {\n for (const node of stream()) {\n drainStreams(node);\n }\n }\n}\n", "import {\n assert,\n assertArray,\n assertObject,\n assertUndefined,\n unreachable,\n} from '../../../shared/src/asserts.ts';\nimport {must} from '../../../shared/src/must.ts';\nimport type {Row} from '../../../zero-protocol/src/data.ts';\nimport type {Change} from './change.ts';\nimport {drainStreams, type Comparator} from './data.ts';\nimport type {SourceSchema} from './schema.ts';\nimport type {Entry, EntryList, Format} from './view.ts';\n\nexport function applyChange(\n parentEntry: Entry,\n change: Change,\n schema: SourceSchema,\n relationship: string,\n format: Format,\n) {\n if (schema.isHidden) {\n switch (change.type) {\n case 'add':\n case 'remove':\n for (const [relationship, children] of Object.entries(\n change.node.relationships,\n )) {\n const childSchema = must(schema.relationships[relationship]);\n for (const node of children()) {\n applyChange(\n parentEntry,\n {type: change.type, node},\n childSchema,\n relationship,\n format,\n );\n }\n }\n return;\n case 'edit':\n // If hidden at this level it means that the hidden row was changed. If\n // the row was changed in such a way that it would change the\n // relationships then the edit would have been split into remove and\n // add.\n return;\n case 'child': {\n const childSchema = must(\n schema.relationships[change.child.relationshipName],\n );\n applyChange(\n parentEntry,\n change.child.change,\n childSchema,\n relationship,\n format,\n );\n return;\n }\n default:\n unreachable(change);\n }\n }\n\n const {singular, relationships: childFormats} = format;\n switch (change.type) {\n case 'add': {\n // TODO: Only create a new entry if we need to mutate the existing one.\n const newEntry: Entry = {\n ...change.node.row,\n };\n if (singular) {\n assertUndefined(\n parentEntry[relationship],\n 'single output already exists',\n );\n parentEntry[relationship] = newEntry;\n } else {\n const view = getChildEntryList(parentEntry, relationship);\n const {pos, found} = binarySearch(view, newEntry, schema.compareRows);\n assert(!found, 'node already exists');\n // @ts-expect-error view is readonly\n view.splice(pos, 0, newEntry);\n }\n for (const [relationship, children] of Object.entries(\n change.node.relationships,\n )) {\n // TODO: Is there a flag to make TypeScript complain that dictionary access might be undefined?\n const childSchema = must(schema.relationships[relationship]);\n const childFormat = childFormats[relationship];\n if (childFormat === undefined) {\n continue;\n }\n\n const newView = childFormat.singular ? undefined : ([] as EntryList);\n newEntry[relationship] = newView;\n for (const node of children()) {\n applyChange(\n newEntry,\n {type: 'add', node},\n childSchema,\n relationship,\n childFormat,\n );\n }\n }\n break;\n }\n case 'remove': {\n if (singular) {\n assertObject(parentEntry[relationship]);\n parentEntry[relationship] = undefined;\n } else {\n const view = getChildEntryList(parentEntry, relationship);\n const {pos, found} = binarySearch(\n view,\n change.node.row,\n schema.compareRows,\n );\n assert(found, 'node does not exist');\n // @ts-expect-error view is readonly\n view.splice(pos, 1);\n }\n // Needed to ensure cleanup of operator state is fully done.\n drainStreams(change.node);\n break;\n }\n case 'child': {\n let existing: Entry;\n if (singular) {\n assertObject(parentEntry[relationship]);\n existing = parentEntry[relationship];\n } else {\n const view = getChildEntryList(parentEntry, relationship);\n const {pos, found} = binarySearch(\n view,\n change.node.row,\n schema.compareRows,\n );\n assert(found, 'node does not exist');\n existing = view[pos];\n }\n\n const childSchema = must(\n schema.relationships[change.child.relationshipName],\n );\n const childFormat = format.relationships[change.child.relationshipName];\n if (childFormat !== undefined) {\n applyChange(\n existing,\n change.child.change,\n childSchema,\n change.child.relationshipName,\n childFormat,\n );\n }\n break;\n }\n case 'edit': {\n if (singular) {\n assertObject(parentEntry[relationship]);\n parentEntry[relationship] = {\n ...parentEntry[relationship],\n ...change.node.row,\n };\n } else {\n const view = parentEntry[relationship] as EntryList | undefined;\n assertArray(view);\n // If the order changed due to the edit, we need to remove and reinsert.\n if (schema.compareRows(change.oldNode.row, change.node.row) === 0) {\n const {pos, found} = binarySearch(\n view,\n change.oldNode.row,\n schema.compareRows,\n );\n assert(found, 'node does not exists');\n view[pos] = makeEntryPreserveRelationships(\n change.node.row,\n view[pos],\n schema.relationships,\n );\n } else {\n // Remove\n const {pos, found} = binarySearch(\n view,\n change.oldNode.row,\n schema.compareRows,\n );\n assert(found, 'node does not exists');\n const oldEntry = view[pos];\n view.splice(pos, 1);\n\n // Insert\n {\n const {pos, found} = binarySearch(\n view,\n change.node.row,\n schema.compareRows,\n );\n assert(!found, 'node already exists');\n view.splice(\n pos,\n 0,\n makeEntryPreserveRelationships(\n change.node.row,\n oldEntry,\n schema.relationships,\n ),\n );\n }\n }\n }\n break;\n }\n default:\n unreachable(change);\n }\n}\n\n// TODO: Do not return an object. It puts unnecessary pressure on the GC.\nfunction binarySearch(view: EntryList, target: Entry, comparator: Comparator) {\n let low = 0;\n let high = view.length - 1;\n while (low <= high) {\n const mid = (low + high) >>> 1;\n const comparison = comparator(view[mid] as Row, target as Row);\n if (comparison < 0) {\n low = mid + 1;\n } else if (comparison > 0) {\n high = mid - 1;\n } else {\n return {pos: mid, found: true};\n }\n }\n return {pos: low, found: false};\n}\n\nfunction makeEntryPreserveRelationships(\n row: Row,\n entry: Entry,\n relationships: {[key: string]: SourceSchema},\n): Entry {\n const result: Entry = {...row};\n for (const relationship in relationships) {\n assert(!(relationship in row), 'Relationship already exists');\n result[relationship] = entry[relationship];\n }\n return result;\n}\n\nfunction getChildEntryList(\n parentEntry: Entry,\n relationship: string,\n): EntryList {\n const view = parentEntry[relationship] as unknown;\n assertArray(view);\n return view as EntryList;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["node", "relationship", "pos", "found"]
7
+ }
package/out/solid.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  Zero
3
- } from "./chunk-HQA4Z25K.js";
3
+ } from "./chunk-UEPZPKPV.js";
4
4
  import "./chunk-HARIWJ2J.js";
5
5
  import "./chunk-ULOTOBTC.js";
6
6
  import {
7
7
  applyChange
8
- } from "./chunk-QAAJZ32T.js";
8
+ } from "./chunk-ZVLXEWWB.js";
9
9
  import "./chunk-424PT5DM.js";
10
10
 
11
11
  // ../zero-solid/src/create-zero.ts
@@ -1 +1 @@
1
- {"version":3,"file":"change-source.d.ts","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-source/pg/change-source.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EACL,yBAAyB,EAG1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAEV,eAAe,EAChB,MAAM,uEAAuE,CAAC;AAc/E,OAAO,KAAK,EAEV,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAW,KAAK,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAO1E,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,wCAAwC,CAAC;AAYhD,OAAO,EAAkB,KAAK,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AAI3E,OAAO,EAAqB,KAAK,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAQ/E,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAMnD;;;;GAIG;AACH,wBAAsB,8BAA8B,CAClD,EAAE,EAAE,UAAU,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,WAAW,EAClB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC;IAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAAC,CAAC,CA4C7E;AA+ND,qBAAa,KAAK;;gBAIJ,OAAO,EAAE,yBAAyB;IAI9C,SAAS;IAiBT,GAAG,CAAC,SAAS,EAAE,WAAW;CAa3B;AA0ZD,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,eAAe,EAClB,CAAC,EAAE,eAAe,EAClB,EAAE,CAAC,EAAE,UAAU,WAchB;AAMD,wBAAgB,eAAe,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,kBAAkB,WAsB3E;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,eAAe,WAkB1E;AAwBD,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,kCAAkC;;CAOhD"}
1
+ {"version":3,"file":"change-source.d.ts","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-source/pg/change-source.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EACL,yBAAyB,EAG1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAEV,eAAe,EAChB,MAAM,uEAAuE,CAAC;AAc/E,OAAO,KAAK,EAEV,kBAAkB,EAEnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAW,KAAK,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAO1E,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,wCAAwC,CAAC;AAYhD,OAAO,EAAkB,KAAK,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AAI3E,OAAO,EAAqB,KAAK,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAQ/E,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAMnD;;;;GAIG;AACH,wBAAsB,8BAA8B,CAClD,EAAE,EAAE,UAAU,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,WAAW,EAClB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC;IAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,YAAY,CAAA;CAAC,CAAC,CA4C7E;AAmOD,qBAAa,KAAK;;gBAIJ,OAAO,EAAE,yBAAyB;IAI9C,SAAS;IAiBT,GAAG,CAAC,SAAS,EAAE,WAAW;CAa3B;AAkWD,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,eAAe,EAClB,CAAC,EAAE,eAAe,EAClB,EAAE,CAAC,EAAE,UAAU,WAchB;AAMD,wBAAgB,eAAe,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,kBAAkB,WAuB3E;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,eAAe,WAkB1E;AAoCD,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,kCAAkC;;CAOhD"}
@@ -98,11 +98,10 @@ class PostgresChangeSource {
98
98
  async startStream(clientWatermark) {
99
99
  const db = pgClient(this.#lc, this.#upstreamUri);
100
100
  const slot = replicationSlot(this.#shardID);
101
- const clientStart = oneAfter(clientWatermark);
102
101
  try {
103
102
  await this.#stopExistingReplicationSlotSubscriber(db, slot);
104
103
  const config = await getInternalShardConfig(db, this.#shardID);
105
- this.#lc.info?.(`starting replication stream @${slot}`);
104
+ this.#lc.info?.(`starting replication stream@${slot}`);
106
105
  // Enabling ssl according to the logic in:
107
106
  // https://github.com/brianc/node-postgres/blob/95d7e620ef8b51743b4cbca05dd3c3ce858ecea7/packages/pg-connection-string/index.js#L90
108
107
  const url = new URL(this.#upstreamUri);
@@ -114,7 +113,7 @@ class PostgresChangeSource {
114
113
  // Unlike the postgres.js client, the pg client does not have an option to
115
114
  // only use SSL if the server supports it. We achieve it manually by
116
115
  // trying SSL first, and then falling back to connecting without SSL.
117
- return await this.#startStream(slot, clientStart, config, useSSL);
116
+ return await this.#startStream(slot, clientWatermark, config, useSSL);
118
117
  }
119
118
  catch (e) {
120
119
  if (e instanceof SSLUnsupportedError) {
@@ -144,7 +143,7 @@ class PostgresChangeSource {
144
143
  await db.end();
145
144
  }
146
145
  }
147
- async #startStream(slot, clientStart, shardConfig, useSSL) {
146
+ async #startStream(slot, clientWatermark, shardConfig, useSSL) {
148
147
  const changes = Subscription.create({
149
148
  cleanup: () => service.stop(),
150
149
  });
@@ -200,6 +199,7 @@ class PostgresChangeSource {
200
199
  }))
201
200
  .on('error', handleError);
202
201
  acker = new Acker(service);
202
+ const clientStart = oneAfter(clientWatermark);
203
203
  service
204
204
  .subscribe(new PgoutputPlugin({
205
205
  protoVersion: 1,
@@ -208,7 +208,8 @@ class PostgresChangeSource {
208
208
  }), slot, fromLexiVersion(clientStart))
209
209
  .then(() => changes.cancel(), handleError);
210
210
  await started;
211
- this.#lc.info?.(`started replication stream@${slot}`);
211
+ const { replicaVersion } = this.#replicationConfig;
212
+ this.#lc.info?.(`started replication stream@${slot} from ${clientWatermark} (replicaVersion: ${replicaVersion})`);
212
213
  return {
213
214
  changes,
214
215
  acks: { push: status => acker.ack(status[2].watermark) },
@@ -390,10 +391,18 @@ class ChangeMaker {
390
391
  * but SQLite will error instead (https://sqlite.org/forum/forumpost/2e62dba69f?t=c&hist).
391
392
  * The current workaround is to drop indexes first.
392
393
  *
393
- * More generally, the order of replicating DDL updates is:
394
+ * Also note that although it should not be possible to both rename and
395
+ * add/drop tables/columns in a single statement, the operations are
396
+ * ordered to handle that possibility, by always dropping old entities,
397
+ * then modifying kept entities, and then adding new entities.
398
+ *
399
+ * Thus, the order of replicating DDL updates is:
394
400
  * - drop indexes
395
- * - alter tables
396
401
  * - drop tables
402
+ * - alter tables
403
+ * - drop columns
404
+ * - alter columns
405
+ * - add columns
397
406
  * - create tables
398
407
  * - create indexes
399
408
  *
@@ -403,137 +412,87 @@ class ChangeMaker {
403
412
  * the type of a column that's indexed.
404
413
  */
405
414
  #makeSchemaChanges(preSchema, update) {
406
- const [prevTables, prevIndexes] = specsByName(preSchema);
407
- const [nextTables, nextIndexes] = specsByName(update.schema);
408
- const { tag } = update.event;
415
+ const [prevTbl, prevIdx] = specsByID(preSchema);
416
+ const [nextTbl, nextIdx] = specsByID(update.schema);
409
417
  const changes = [];
410
418
  // Validate the new table schemas
411
- for (const table of nextTables.values()) {
419
+ for (const table of nextTbl.values()) {
412
420
  validate(this.#lc, this.#shardID, table);
413
421
  }
414
- const [dropped, created] = symmetricDifferences(prevIndexes, nextIndexes);
415
- // Drop indexes first so that allow dropping dependent objects.
416
- for (const id of dropped) {
417
- const { schema, name } = must(prevIndexes.get(id));
422
+ const [droppedIdx, createdIdx] = symmetricDifferences(prevIdx, nextIdx);
423
+ for (const id of droppedIdx) {
424
+ const { schema, name } = must(prevIdx.get(id));
418
425
  changes.push({ tag: 'drop-index', id: { schema, name } });
419
426
  }
420
- if (tag === 'ALTER PUBLICATION') {
421
- const tables = intersection(prevTables, nextTables);
422
- for (const id of tables) {
423
- changes.push(...this.#getAddedOrDroppedColumnChanges(must(prevTables.get(id)), must(nextTables.get(id))));
424
- }
427
+ // DROP
428
+ const [droppedTbl, createdTbl] = symmetricDifferences(prevTbl, nextTbl);
429
+ for (const id of droppedTbl) {
430
+ const { schema, name } = must(prevTbl.get(id));
431
+ changes.push({ tag: 'drop-table', id: { schema, name } });
425
432
  }
426
- else if (tag === 'ALTER TABLE') {
427
- const altered = idString(update.event.table);
428
- const table = must(nextTables.get(altered));
429
- const prevTable = prevTables.get(altered);
430
- if (!prevTable) {
431
- // table rename. Find the old name.
432
- let old;
433
- for (const [id, { schema, name }] of prevTables.entries()) {
434
- if (!nextTables.has(id)) {
435
- old = { schema, name };
436
- break;
437
- }
438
- }
439
- if (!old) {
440
- throw new Error(`can't find previous table: ${stringify(update)}`);
441
- }
442
- changes.push({ tag: 'rename-table', old, new: table });
443
- }
444
- else {
445
- changes.push(...this.#getSingleColumnChange(prevTable, table));
446
- }
433
+ // ALTER
434
+ const tables = intersection(prevTbl, nextTbl);
435
+ for (const id of tables) {
436
+ changes.push(...this.#getTableChanges(must(prevTbl.get(id)), must(nextTbl.get(id))));
447
437
  }
448
- // Added/dropped tables are handled in the same way for most DDL updates, with
449
- // the exception being `ALTER TABLE`, for which a table rename should not be
450
- // confused as a drop + add.
451
- if (tag !== 'ALTER TABLE') {
452
- const [dropped, created] = symmetricDifferences(prevTables, nextTables);
453
- for (const id of dropped) {
454
- const { schema, name } = must(prevTables.get(id));
455
- changes.push({ tag: 'drop-table', id: { schema, name } });
456
- }
457
- for (const id of created) {
458
- const spec = must(nextTables.get(id));
459
- changes.push({ tag: 'create-table', spec });
460
- }
438
+ // CREATE
439
+ for (const id of createdTbl) {
440
+ const spec = must(nextTbl.get(id));
441
+ changes.push({ tag: 'create-table', spec });
461
442
  }
462
443
  // Add indexes last since they may reference tables / columns that need
463
444
  // to be created first.
464
- for (const id of created) {
465
- const spec = must(nextIndexes.get(id));
445
+ for (const id of createdIdx) {
446
+ const spec = must(nextIdx.get(id));
466
447
  changes.push({ tag: 'create-index', spec });
467
448
  }
468
449
  return changes;
469
450
  }
470
- // ALTER PUBLICATION can only add and drop columns, but never change them.
471
- #getAddedOrDroppedColumnChanges(oldTable, newTable) {
472
- const table = { schema: newTable.schema, name: newTable.name };
473
- const [dropped, added] = symmetricDifferences(new Set(Object.keys(oldTable.columns)), new Set(Object.keys(newTable.columns)));
451
+ #getTableChanges(oldTable, newTable) {
474
452
  const changes = [];
475
- for (const column of dropped) {
476
- changes.push({ tag: 'drop-column', table, column });
477
- }
478
- for (const name of added) {
453
+ if (oldTable.schema !== newTable.schema ||
454
+ oldTable.name !== newTable.name) {
479
455
  changes.push({
480
- tag: 'add-column',
481
- table,
482
- column: { name, spec: newTable.columns[name] },
456
+ tag: 'rename-table',
457
+ old: { schema: oldTable.schema, name: oldTable.name },
458
+ new: { schema: newTable.schema, name: newTable.name },
483
459
  });
484
460
  }
485
- return changes;
486
- }
487
- // ALTER TABLE can add, drop, or change/rename a single column.
488
- #getSingleColumnChange(oldTable, newTable) {
489
461
  const table = { schema: newTable.schema, name: newTable.name };
490
- const [d, a] = symmetricDifferences(new Set(Object.keys(oldTable.columns)), new Set(Object.keys(newTable.columns)));
491
- const dropped = [...d];
492
- const added = [...a];
493
- assert(dropped.length <= 1 && added.length <= 1, `too many dropped [${[dropped]}] or added [${[added]}] columns`);
494
- if (dropped.length === 1 && added.length === 1) {
495
- const oldName = dropped[0];
496
- const newName = added[0];
497
- return [
498
- {
499
- tag: 'update-column',
500
- table,
501
- old: { name: oldName, spec: oldTable.columns[oldName] },
502
- new: { name: newName, spec: newTable.columns[newName] },
503
- },
504
- ];
505
- }
506
- else if (added.length) {
507
- const name = added[0];
508
- return [
509
- {
510
- tag: 'add-column',
511
- table,
512
- column: { name, spec: newTable.columns[name] },
513
- },
514
- ];
515
- }
516
- else if (dropped.length) {
517
- return [{ tag: 'drop-column', table, column: dropped[0] }];
462
+ const oldColumns = columnsByID(oldTable.columns);
463
+ const newColumns = columnsByID(newTable.columns);
464
+ // DROP
465
+ const [dropped, added] = symmetricDifferences(oldColumns, newColumns);
466
+ for (const id of dropped) {
467
+ const { name: column } = must(oldColumns.get(id));
468
+ changes.push({ tag: 'drop-column', table, column });
518
469
  }
519
- // Not a rename, add, or drop. Find the column with a relevant update.
520
- for (const [name, oldSpec] of Object.entries(oldTable.columns)) {
521
- const newSpec = newTable.columns[name];
522
- // Besides the name, we only care about the data type and not null.
523
- // Default values and other constraints are not relevant.
524
- if (oldSpec.dataType !== newSpec.dataType ||
470
+ // ALTER
471
+ const both = intersection(oldColumns, newColumns);
472
+ for (const id of both) {
473
+ const { name: oldName, ...oldSpec } = must(oldColumns.get(id));
474
+ const { name: newName, ...newSpec } = must(newColumns.get(id));
475
+ // The three things that we care about are:
476
+ // 1. name
477
+ // 2. type
478
+ // 3. not-null
479
+ if (oldName !== newName ||
480
+ oldSpec.dataType !== newSpec.dataType ||
525
481
  oldSpec.notNull !== newSpec.notNull) {
526
- return [
527
- {
528
- tag: 'update-column',
529
- table,
530
- old: { name, spec: oldSpec },
531
- new: { name, spec: newSpec },
532
- },
533
- ];
482
+ changes.push({
483
+ tag: 'update-column',
484
+ table,
485
+ old: { name: oldName, spec: oldSpec },
486
+ new: { name: newName, spec: newSpec },
487
+ });
534
488
  }
535
489
  }
536
- return [];
490
+ // ADD
491
+ for (const id of added) {
492
+ const { name, ...spec } = must(newColumns.get(id));
493
+ changes.push({ tag: 'add-column', table, column: { name, spec } });
494
+ }
495
+ return changes;
537
496
  }
538
497
  #parseReplicationEvent(content) {
539
498
  const str = content instanceof Buffer
@@ -615,7 +574,8 @@ export function tablesDifferent(a, b) {
615
574
  const [bname, bcol] = bcols[i];
616
575
  return (aname !== bname ||
617
576
  acol.pos !== bcol.pos ||
618
- acol.typeOID !== bcol.typeOID);
577
+ acol.typeOID !== bcol.typeOID ||
578
+ acol.notNull !== bcol.notNull);
619
579
  }));
620
580
  }
621
581
  export function relationDifferent(a, b) {
@@ -643,14 +603,23 @@ function translateError(e) {
643
603
  return e;
644
604
  }
645
605
  const idString = (id) => `${id.schema}.${id.name}`;
646
- function specsByName(published) {
606
+ function specsByID(published) {
647
607
  return [
648
608
  // It would have been nice to use a CustomKeyMap here, but we rely on set-utils
649
609
  // operations which use plain Sets.
650
- new Map(published.tables.map(t => [idString(t), t])),
610
+ new Map(published.tables.map(t => [t.oid, t])),
651
611
  new Map(published.indexes.map(i => [idString(i), i])),
652
612
  ];
653
613
  }
614
+ function columnsByID(columns) {
615
+ const colsByID = new Map();
616
+ for (const [name, spec] of Object.entries(columns)) {
617
+ // The `pos` field is the `attnum` in `pg_attribute`, which is a stable
618
+ // identifier for the column in this table (i.e. never reused).
619
+ colsByID.set(spec.pos, { ...spec, name });
620
+ }
621
+ return colsByID;
622
+ }
654
623
  class SSLUnsupportedError extends Error {
655
624
  }
656
625
  export class UnsupportedSchemaChangeError extends Error {
@@ -1 +1 @@
1
- {"version":3,"file":"change-source.js","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-source/pg/change-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"change-source.js","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-source/pg/change-source.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"storer.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/storer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAQ5C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,KAAK,MAAM,EAAC,MAAM,iDAAiD,CAAC;AAC5E,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,6CAA6C,CAAC;AAC/E,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAa3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,MAAO,YAAW,OAAO;;IACpC,QAAQ,CAAC,EAAE,YAAY;IAMvB,QAAQ,CAAC,OAAO,wDAAqB;gBAGnC,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,UAAU,EACd,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,KAAK,IAAI;IAQ3C,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOhD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAU5D,KAAK,CAAC,KAAK,EAAE,iBAAiB;IAI9B,MAAM,CAAC,CAAC,EAAE,aAAa;IAIvB,OAAO,CAAC,GAAG,EAAE,UAAU;IAIjB,GAAG;IA4JT,IAAI;CAIL"}
1
+ {"version":3,"file":"storer.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/storer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAQ5C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,KAAK,MAAM,EAAC,MAAM,iDAAiD,CAAC;AAC5E,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,6CAA6C,CAAC;AAC/E,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,8BAA8B,CAAC;AAGpE,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAa3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,MAAO,YAAW,OAAO;;IACpC,QAAQ,CAAC,EAAE,YAAY;IAMvB,QAAQ,CAAC,OAAO,wDAAqB;gBAGnC,EAAE,EAAE,UAAU,EACd,EAAE,EAAE,UAAU,EACd,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,KAAK,IAAI;IAQ3C,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOhD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAU5D,KAAK,CAAC,KAAK,EAAE,iBAAiB;IAI9B,MAAM,CAAC,CAAC,EAAE,aAAa;IAIvB,OAAO,CAAC,GAAG,EAAE,UAAU;IAIjB,GAAG;IA+JT,IAAI;CAIL"}
@@ -176,7 +176,7 @@ export class Storer {
176
176
  count++;
177
177
  }
178
178
  else {
179
- this.#lc.warn?.(`rejecting subscriber at watermark ${sub.watermark}`);
179
+ this.#lc.warn?.(`rejecting subscriber at watermark ${sub.watermark} (earliest watermark: ${entry.watermark})`);
180
180
  sub.close(ErrorType.WatermarkTooOld, `earliest supported watermark is ${entry.watermark} (requested ${sub.watermark})`);
181
181
  return;
182
182
  }
@@ -189,7 +189,8 @@ export class Storer {
189
189
  this.#lc.info?.(`caught up ${sub.id} with ${count} changes (${Date.now() - start} ms)`);
190
190
  }
191
191
  else {
192
- this.#lc.warn?.(`rejecting subscriber at watermark ${sub.watermark}`);
192
+ const lastStoredWatermark = await this.getLastStoredWatermark();
193
+ this.#lc.warn?.(`rejecting subscriber at watermark ${sub.watermark} (latest watermark: ${lastStoredWatermark})`);
193
194
  sub.close(ErrorType.WatermarkNotFound, `cannot catch up from requested watermark ${sub.watermark}`);
194
195
  }
195
196
  });