@rocicorp/zero 0.13.2025020500 → 0.13.2025020501

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 (66) hide show
  1. package/out/{chunk-H3C7QNPL.js → chunk-453TFLSU.js} +1055 -868
  2. package/out/chunk-453TFLSU.js.map +7 -0
  3. package/out/replicache/src/persist/collect-idb-databases.d.ts +2 -2
  4. package/out/replicache/src/persist/collect-idb-databases.d.ts.map +1 -1
  5. package/out/replicache/src/replicache-impl.d.ts +2 -1
  6. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  7. package/out/replicache/src/sync/patch.d.ts +5 -1
  8. package/out/replicache/src/sync/patch.d.ts.map +1 -1
  9. package/out/replicache/src/sync/pull.d.ts +2 -0
  10. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  11. package/out/solid.js +1 -1
  12. package/out/zero-cache/src/db/migration.d.ts.map +1 -1
  13. package/out/zero-cache/src/db/migration.js +1 -2
  14. package/out/zero-cache/src/db/migration.js.map +1 -1
  15. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  16. package/out/zero-cache/src/server/change-streamer.js +1 -1
  17. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  18. package/out/zero-cache/src/server/main.js +1 -1
  19. package/out/zero-cache/src/server/main.js.map +1 -1
  20. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +1 -1
  21. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  22. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +9 -7
  23. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  24. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts +2 -2
  25. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +1 -1
  26. package/out/zero-cache/src/services/change-streamer/schema/init.js +40 -27
  27. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  28. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +5 -4
  29. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  30. package/out/zero-cache/src/services/change-streamer/schema/tables.js +44 -19
  31. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  32. package/out/zero-cache/src/services/change-streamer/storer.d.ts +1 -1
  33. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  34. package/out/zero-cache/src/services/change-streamer/storer.js +21 -9
  35. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  36. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +1 -1
  37. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  38. package/out/zero-cache/src/services/view-syncer/cvr-store.js +57 -35
  39. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  40. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +3 -3
  41. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  42. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +61 -33
  43. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  44. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts +1 -1
  45. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
  46. package/out/zero-cache/src/services/view-syncer/schema/init.js +56 -43
  47. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  48. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  49. package/out/zero-cache/src/services/view-syncer/view-syncer.js +1 -1
  50. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  51. package/out/zero-client/src/client/context.d.ts +1 -1
  52. package/out/zero-client/src/client/context.d.ts.map +1 -1
  53. package/out/zero-client/src/client/crud.d.ts +5 -4
  54. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  55. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  56. package/out/zero-client/src/client/ivm-source-repo.d.ts +13 -3
  57. package/out/zero-client/src/client/ivm-source-repo.d.ts.map +1 -1
  58. package/out/zero-protocol/src/push.d.ts.map +1 -1
  59. package/out/zero-protocol/src/push.js +8 -20
  60. package/out/zero-protocol/src/push.js.map +1 -1
  61. package/out/zero-schema/src/name-mapper.d.ts +2 -2
  62. package/out/zero-schema/src/name-mapper.d.ts.map +1 -1
  63. package/out/zero-schema/src/name-mapper.js.map +1 -1
  64. package/out/zero.js +1 -1
  65. package/package.json +1 -1
  66. package/out/chunk-H3C7QNPL.js.map +0 -7
@@ -1,11 +1,22 @@
1
1
  import { LogContext } from '@rocicorp/logger';
2
+ import { ident } from 'pg-format';
2
3
  import postgres, {} from 'postgres';
3
4
  import { AbortError } from "../../../../../shared/src/abort-error.js";
4
5
  import { equals } from "../../../../../shared/src/set-utils.js";
6
+ export function cdcSchema(shardID) {
7
+ return `cdc_${shardID}`;
8
+ }
9
+ // For readability in the sql statements.
10
+ function schema(shardID) {
11
+ return ident(cdcSchema(shardID));
12
+ }
5
13
  export const PG_SCHEMA = 'cdc';
6
- const CREATE_CDC_SCHEMA = `CREATE SCHEMA IF NOT EXISTS cdc;`;
7
- const CREATE_CHANGE_LOG_TABLE = `
8
- CREATE TABLE cdc."changeLog" (
14
+ function createSchema(shardID) {
15
+ return `CREATE SCHEMA IF NOT EXISTS ${schema(shardID)};`;
16
+ }
17
+ function createChangeLogTable(shardID) {
18
+ return `
19
+ CREATE TABLE ${schema(shardID)}."changeLog" (
9
20
  watermark TEXT,
10
21
  pos INT8,
11
22
  change JSONB NOT NULL,
@@ -13,54 +24,68 @@ const CREATE_CHANGE_LOG_TABLE = `
13
24
  PRIMARY KEY (watermark, pos)
14
25
  );
15
26
  `;
16
- export const CREATE_REPLICATION_STATE_TABLE = `
17
- CREATE TABLE cdc."replicationState" (
27
+ }
28
+ export function createReplicationStateTable(shardID) {
29
+ return `
30
+ CREATE TABLE ${schema(shardID)}."replicationState" (
18
31
  "lastWatermark" TEXT NOT NULL,
19
32
  "owner" TEXT,
20
33
  "lock" INTEGER PRIMARY KEY DEFAULT 1 CHECK (lock=1)
21
34
  );
22
35
  `;
23
- const CREATE_REPLICATION_CONFIG_TABLE = `
24
- CREATE TABLE cdc."replicationConfig" (
36
+ }
37
+ function createReplicationConfigTable(shardID) {
38
+ return `
39
+ CREATE TABLE ${schema(shardID)}."replicationConfig" (
25
40
  "replicaVersion" TEXT NOT NULL,
26
41
  "publications" TEXT[] NOT NULL,
27
42
  "resetRequired" BOOL,
28
43
  "lock" INTEGER PRIMARY KEY DEFAULT 1 CHECK (lock=1)
29
44
  );
30
45
  `;
31
- const CREATE_CDC_TABLES = CREATE_CDC_SCHEMA +
32
- CREATE_CHANGE_LOG_TABLE +
33
- CREATE_REPLICATION_STATE_TABLE +
34
- CREATE_REPLICATION_CONFIG_TABLE;
35
- export async function setupCDCTables(lc, db) {
46
+ }
47
+ function createTables(shardID) {
48
+ return (createSchema(shardID) +
49
+ createChangeLogTable(shardID) +
50
+ createReplicationStateTable(shardID) +
51
+ createReplicationConfigTable(shardID));
52
+ }
53
+ export async function setupCDCTables(lc, db, shardID) {
36
54
  lc.info?.(`Setting up CDC tables`);
37
- await db.unsafe(CREATE_CDC_TABLES);
55
+ await db.unsafe(createTables(shardID));
38
56
  }
39
- export async function markResetRequired(db) {
40
- await db `UPDATE cdc."replicationConfig" SET "resetRequired" = true`;
57
+ export async function markResetRequired(db, shardID) {
58
+ const schema = cdcSchema(shardID);
59
+ await db `
60
+ UPDATE ${db(schema)}."replicationConfig"
61
+ SET "resetRequired" = true`;
41
62
  }
42
- export async function ensureReplicationConfig(lc, db, config, autoReset) {
63
+ export async function ensureReplicationConfig(lc, db, config, shardID, autoReset) {
43
64
  // Restrict the fields of the supplied `config`.
44
65
  const { publications, replicaVersion } = config;
45
66
  const replicaConfig = { publications, replicaVersion };
46
67
  const replicationState = {
47
68
  lastWatermark: replicaVersion,
48
69
  };
70
+ const schema = cdcSchema(shardID);
49
71
  await db.begin(async (tx) => {
50
72
  const stmts = [];
51
- const results = await tx `SELECT "replicaVersion", "publications", "resetRequired" FROM cdc."replicationConfig"`;
73
+ const results = await tx `
74
+ SELECT "replicaVersion", "publications", "resetRequired"
75
+ FROM ${tx(schema)}."replicationConfig"`;
52
76
  if (results.length) {
53
77
  const { replicaVersion, publications } = results[0];
54
78
  if (replicaVersion !== replicaConfig.replicaVersion ||
55
79
  !equals(new Set(publications), new Set(replicaConfig.publications))) {
56
80
  lc.info?.(`Data in cdc tables @${replicaVersion} is incompatible ` +
57
81
  `with replica @${replicaConfig.replicaVersion}. Clearing tables.`);
58
- stmts.push(tx `TRUNCATE TABLE cdc."changeLog"`, tx `TRUNCATE TABLE cdc."replicationConfig"`, tx `TRUNCATE TABLE cdc."replicationState"`);
82
+ stmts.push(tx `TRUNCATE TABLE ${tx(schema)}."changeLog"`, tx `TRUNCATE TABLE ${tx(schema)}."replicationConfig"`, tx `TRUNCATE TABLE ${tx(schema)}."replicationState"`);
59
83
  }
60
84
  }
61
85
  // Initialize (or re-initialize TRUNCATED) tables
62
86
  if (results.length === 0 || stmts.length > 0) {
63
- stmts.push(tx `INSERT INTO cdc."replicationConfig" ${tx(replicaConfig)}`, tx `INSERT INTO cdc."replicationState" ${tx(replicationState)}`);
87
+ stmts.push(tx `INSERT INTO ${tx(schema)}."replicationConfig" ${tx(replicaConfig)}`, tx `INSERT INTO ${tx(schema)}."replicationState"
88
+ ${tx(replicationState)}`);
64
89
  return Promise.all(stmts);
65
90
  }
66
91
  const { resetRequired } = results[0];
@@ -1 +1 @@
1
- {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-streamer/schema/tables.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-streamer/schema/tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAC,KAAK,EAAC,MAAM,WAAW,CAAC;AAChC,OAAO,QAAQ,EAAE,EAA6B,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAC,UAAU,EAAC,MAAM,0CAA0C,CAAC;AACpE,OAAO,EAAC,MAAM,EAAC,MAAM,wCAAwC,CAAC;AAI9D,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,OAAO,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED,yCAAyC;AACzC,SAAS,MAAM,CAAC,OAAe;IAC7B,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;AAE/B,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,+BAA+B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AAC3D,CAAC;AASD,SAAS,oBAAoB,CAAC,OAAe;IAC3C,OAAO;iBACQ,MAAM,CAAC,OAAO,CAAC;;;;;;;CAO/B,CAAC;AACF,CAAC;AAWD,MAAM,UAAU,2BAA2B,CAAC,OAAe;IACzD,OAAO;iBACQ,MAAM,CAAC,OAAO,CAAC;;;;;CAK/B,CAAC;AACF,CAAC;AAaD,SAAS,4BAA4B,CAAC,OAAe;IACnD,OAAO;iBACQ,MAAM,CAAC,OAAO,CAAC;;;;;;CAM/B,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,OAAO,CACL,YAAY,CAAC,OAAO,CAAC;QACrB,oBAAoB,CAAC,OAAO,CAAC;QAC7B,2BAA2B,CAAC,OAAO,CAAC;QACpC,4BAA4B,CAAC,OAAO,CAAC,CACtC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,EAAc,EACd,EAA2B,EAC3B,OAAe;IAEf,EAAE,CAAC,IAAI,EAAE,CAAC,uBAAuB,CAAC,CAAC;IACnC,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAc,EAAE,OAAe;IACrE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,EAAE,CAAA;WACC,EAAE,CAAC,MAAM,CAAC;+BACU,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,EAAc,EACd,EAAc,EACd,MAAyB,EACzB,OAAe,EACf,SAAkB;IAElB,gDAAgD;IAChD,MAAM,EAAC,YAAY,EAAE,cAAc,EAAC,GAAG,MAAM,CAAC;IAC9C,MAAM,aAAa,GAAG,EAAC,YAAY,EAAE,cAAc,EAAC,CAAC;IACrD,MAAM,gBAAgB,GAA8B;QAClD,aAAa,EAAE,cAAc;KAC9B,CAAC;IACF,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAElC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;QACxB,MAAM,KAAK,GAA0B,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,EAAE,CAMvB;;aAEQ,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;QAE1C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,EAAC,cAAc,EAAE,YAAY,EAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAClD,IACE,cAAc,KAAK,aAAa,CAAC,cAAc;gBAC/C,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,EACnE,CAAC;gBACD,EAAE,CAAC,IAAI,EAAE,CACP,uBAAuB,cAAc,mBAAmB;oBACtD,iBAAiB,aAAa,CAAC,cAAc,oBAAoB,CACpE,CAAC;gBACF,KAAK,CAAC,IAAI,CACR,EAAE,CAAA,kBAAkB,EAAE,CAAC,MAAM,CAAC,cAAc,EAC5C,EAAE,CAAA,kBAAkB,EAAE,CAAC,MAAM,CAAC,sBAAsB,EACpD,EAAE,CAAA,kBAAkB,EAAE,CAAC,MAAM,CAAC,qBAAqB,CACpD,CAAC;YACJ,CAAC;QACH,CAAC;QACD,iDAAiD;QACjD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CACR,EAAE,CAAA,eAAe,EAAE,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC,aAAa,CAAC,EAAE,EACtE,EAAE,CAAA,eAAe,EAAE,CAAC,MAAM,CAAC;aACtB,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAC5B,CAAC;YACF,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,EAAC,aAAa,EAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,IAAI,eAAe,CAAC,sCAAsC,CAAC,CAAC;YACpE,CAAC;YACD,EAAE,CAAC,IAAI,EAAE,CAAC,2CAA2C,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,eAAgB,SAAQ,UAAU;IACpC,IAAI,GAAG,iBAAiB,CAAC;CACnC"}
@@ -39,7 +39,7 @@ export declare class Storer implements Service {
39
39
  #private;
40
40
  readonly id = "storer";
41
41
  readonly stopped: import("@rocicorp/resolver").Resolver<false, unknown>;
42
- constructor(lc: LogContext, taskID: string, db: PostgresDB, replicaVersion: string, onConsumed: (c: Commit | StatusMessage) => void);
42
+ constructor(lc: LogContext, shardID: string, taskID: string, db: PostgresDB, replicaVersion: string, onConsumed: (c: Commit | StatusMessage) => void);
43
43
  assumeOwnership(): Promise<void>;
44
44
  getLastWatermark(): Promise<string>;
45
45
  purgeRecordsBefore(watermark: string): Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"storer.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/storer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAU5C,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;AAIpE,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAc3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,MAAO,YAAW,OAAO;;IACpC,QAAQ,CAAC,EAAE,YAAY;IAOvB,QAAQ,CAAC,OAAO,wDAAqB;gBAGnC,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,UAAU,EACd,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,KAAK,IAAI;IAS3C,eAAe;IAMf,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAMnC,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;IAgMT,IAAI;CAIL"}
1
+ {"version":3,"file":"storer.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/storer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAU5C,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;AAIpE,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAc3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,MAAO,YAAW,OAAO;;IACpC,QAAQ,CAAC,EAAE,YAAY;IAQvB,QAAQ,CAAC,OAAO,wDAAqB;gBAGnC,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,UAAU,EACd,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,KAAK,IAAI;IAe3C,eAAe;IAMf,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAMnC,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;IAqMT,IAAI;CAIL"}
@@ -11,6 +11,7 @@ import { TransactionPool } from "../../db/transaction-pool.js";
11
11
  import {} from "../change-source/protocol/current/downstream.js";
12
12
  import {} from "./change-streamer.js";
13
13
  import * as ErrorType from "./error-type-enum.js";
14
+ import { cdcSchema } from "./schema/tables.js";
14
15
  import { Subscriber } from "./subscriber.js";
15
16
  /**
16
17
  * Handles the storage of changes and the catchup of subscribers
@@ -45,33 +46,39 @@ import { Subscriber } from "./subscriber.js";
45
46
  export class Storer {
46
47
  id = 'storer';
47
48
  #lc;
49
+ #shardID;
48
50
  #taskID;
49
51
  #db;
50
52
  #replicaVersion;
51
53
  #onConsumed;
52
54
  #queue = new Queue();
53
55
  stopped = resolver();
54
- constructor(lc, taskID, db, replicaVersion, onConsumed) {
56
+ constructor(lc, shardID, taskID, db, replicaVersion, onConsumed) {
55
57
  this.#lc = lc;
58
+ this.#shardID = shardID;
56
59
  this.#taskID = taskID;
57
60
  this.#db = db;
58
61
  this.#replicaVersion = replicaVersion;
59
62
  this.#onConsumed = onConsumed;
60
63
  }
64
+ // For readability in SQL statements.
65
+ #cdc(table) {
66
+ return this.#db(`${cdcSchema(this.#shardID)}.${table}`);
67
+ }
61
68
  async assumeOwnership() {
62
69
  const db = this.#db;
63
70
  const owner = this.#taskID;
64
- await db `UPDATE cdc."replicationState" SET ${db({ owner })}`;
71
+ await db `UPDATE ${this.#cdc('replicationState')} SET ${db({ owner })}`;
65
72
  }
66
73
  async getLastWatermark() {
67
74
  const [{ lastWatermark }] = await this.#db `
68
- SELECT "lastWatermark" FROM cdc."replicationState"`;
75
+ SELECT "lastWatermark" FROM ${this.#cdc('replicationState')}`;
69
76
  return lastWatermark;
70
77
  }
71
78
  async purgeRecordsBefore(watermark) {
72
79
  const result = await this.#db `
73
80
  WITH purged AS (
74
- DELETE FROM cdc."changeLog" WHERE watermark < ${watermark}
81
+ DELETE FROM ${this.#cdc('changeLog')} WHERE watermark < ${watermark}
75
82
  RETURNING watermark, pos
76
83
  ) SELECT COUNT(*) as deleted FROM purged;`;
77
84
  return Number(result[0].deleted);
@@ -121,7 +128,8 @@ export class Storer {
121
128
  // Pipeline a read of the current ReplicationState,
122
129
  // which will be checked before committing.
123
130
  tx.pool.process(tx => {
124
- tx `SELECT * FROM cdc."replicationState"`.then(([result]) => resolve(result), reject);
131
+ tx `
132
+ SELECT * FROM ${this.#cdc('replicationState')}`.then(([result]) => resolve(result), reject);
125
133
  return [];
126
134
  });
127
135
  }
@@ -135,7 +143,10 @@ export class Storer {
135
143
  pos: tx.pos,
136
144
  change: change,
137
145
  };
138
- tx.pool.process(tx => [tx `INSERT INTO cdc."changeLog" ${tx(entry)}`]);
146
+ tx.pool.process(tx => [
147
+ tx `
148
+ INSERT INTO ${this.#cdc('changeLog')} ${tx(entry)}`,
149
+ ]);
139
150
  if (tag === 'commit') {
140
151
  const { owner } = await tx.startingReplicationState;
141
152
  if (owner !== this.#taskID) {
@@ -146,7 +157,8 @@ export class Storer {
146
157
  // Update the replication state.
147
158
  const lastWatermark = watermark;
148
159
  tx.pool.process(tx => [
149
- tx `UPDATE cdc."replicationState" SET ${tx({ lastWatermark })}`,
160
+ tx `
161
+ UPDATE ${this.#cdc('replicationState')} SET ${tx({ lastWatermark })}`,
150
162
  ]);
151
163
  tx.pool.setDone();
152
164
  }
@@ -203,7 +215,7 @@ export class Storer {
203
215
  let watermarkFound = sub.watermark === this.#replicaVersion;
204
216
  let count = 0;
205
217
  for await (const entries of tx `
206
- SELECT watermark, change FROM cdc."changeLog"
218
+ SELECT watermark, change FROM ${this.#cdc('changeLog')}
207
219
  WHERE watermark >= ${sub.watermark}
208
220
  ORDER BY watermark, pos`.cursor(10000)) {
209
221
  for (const entry of entries) {
@@ -228,7 +240,7 @@ export class Storer {
228
240
  }
229
241
  else {
230
242
  const [{ lastWatermark }] = await this.#db `
231
- SELECT "lastWatermark" FROM cdc."replicationState"`;
243
+ SELECT "lastWatermark" FROM ${this.#cdc('replicationState')}`;
232
244
  this.#lc.warn?.(`subscriber at watermark ${sub.watermark} is ahead of latest watermark: ${lastWatermark}`);
233
245
  }
234
246
  // Flushes the backlog of messages buffered during catchup and
@@ -1 +1 @@
1
- {"version":3,"file":"storer.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/storer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storer.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/storer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,wBAAwB,EAAC,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAC5C,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,UAAU,EAAC,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACzD,OAAO,EAAC,KAAK,EAAC,MAAM,iCAAiC,CAAC;AACtD,OAAO,EAAC,WAAW,EAAC,MAAM,6CAA6C,CAAC;AACxE,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAG7D,OAAO,EAAa,MAAM,iDAAiD,CAAC;AAI5E,OAAO,EAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAC,SAAS,EAAwB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAc3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,OAAO,MAAM;IACR,EAAE,GAAG,QAAQ,CAAC;IACd,GAAG,CAAa;IAChB,QAAQ,CAAS;IACjB,OAAO,CAAS;IAChB,GAAG,CAAa;IAChB,eAAe,CAAS;IACxB,WAAW,CAAsC;IACjD,MAAM,GAAG,IAAI,KAAK,EAAc,CAAC;IACjC,OAAO,GAAG,QAAQ,EAAS,CAAC;IAErC,YACE,EAAc,EACd,OAAe,EACf,MAAc,EACd,EAAc,EACd,cAAsB,EACtB,UAA+C;QAE/C,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,KAAa;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3B,MAAM,EAAE,CAAA,UAAU,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,EAAC,KAAK,EAAC,CAAC,EAAE,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,CAAC,EAAC,aAAa,EAAC,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAA2B;oCACnC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAChE,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,SAAiB;QACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAqB;;sBAEhC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,SAAS;;gDAE3B,CAAC;QAE7C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,KAAwB;QAC5B,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,CAAgB;QACrB,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,GAAe;QACrB,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,GAAG;QACP,IAAI,EAAE,GAA8B,IAAI,CAAC;QACzC,IAAI,GAAuB,CAAC;QAE5B,MAAM,YAAY,GAAiB,EAAE,CAAC;QACtC,OACE,CAAC,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EACzE,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;YACtB,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;gBAC7B,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,EAAE,EAAE,CAAC;oBACP,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,uCAAuC;gBACxE,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,wBAAwB;gBAClE,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACzB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACtB,SAAS;YACX,CAAC;YACD,uBAAuB;YACvB,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,UAAU,CAAC;YACjC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACpB,MAAM,CAAC,CAAC,EAAE,EAAE,+CAA+C,CAAC,CAAC;gBAC7D,MAAM,EAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAC,GAAG,QAAQ,EAAoB,CAAC;gBAChE,EAAE,GAAG;oBACH,IAAI,EAAE,IAAI,eAAe,CACvB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,EAC5C,IAAI,CAAC,YAAY,CAClB;oBACD,kBAAkB,EAAE,SAAS;oBAC7B,GAAG,EAAE,CAAC;oBACN,wBAAwB,EAAE,OAAO;iBAClC,CAAC;gBACF,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,mDAAmD;gBACnD,2CAA2C;gBAC3C,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;oBACnB,EAAE,CAAoB;0BACN,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,CAClD,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAC7B,MAAM,CACP,CAAC;oBACF,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,EAAE,EAAE,YAAY,GAAG,yBAAyB,CAAC,CAAC;gBACrD,EAAE,CAAC,GAAG,EAAE,CAAC;YACX,CAAC;YAED,MAAM,KAAK,GAAG;gBACZ,SAAS,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB;gBAC/D,SAAS,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI;gBAC1D,GAAG,EAAE,EAAE,CAAC,GAAG;gBACX,MAAM,EAAE,MAA8B;aACvC,CAAC;YAEF,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpB,EAAE,CAAA;sBACY,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE;aACpD,CAAC,CAAC;YAEH,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACrB,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,EAAE,CAAC,wBAAwB,CAAC;gBAClD,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC3B,sEAAsE;oBACtE,EAAE,CAAC,IAAI,CAAC,IAAI,CACV,IAAI,UAAU,CAAC,2CAA2C,KAAK,EAAE,CAAC,CACnE,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,gCAAgC;oBAChC,MAAM,aAAa,GAAG,SAAS,CAAC;oBAChC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;wBACpB,EAAE,CAAA;qBACO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,EAAC,aAAa,EAAC,CAAC,EAAE;qBACpE,CAAC,CAAC;oBACH,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACpB,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACvB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,IACE,CAAC,YAAY,QAAQ,CAAC,aAAa;wBACnC,CAAC,CAAC,IAAI,KAAK,wBAAwB,EACnC,CAAC;wBACD,4EAA4E;wBAC5E,MAAM,IAAI,UAAU,CAAC,iCAAiC,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,CAAC,CAAC;oBACtE,CAAC;oBACD,MAAM,CAAC,CAAC;gBACV,CAAC;gBAED,EAAE,GAAG,IAAI,CAAC;gBAEV,wCAAwC;gBACxC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBAE7B,qEAAqE;gBACrE,+CAA+C;gBAC/C,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;iBAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;gBAC9B,6EAA6E;gBAC7E,sEAAsE;gBACtE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACrB,EAAE,GAAG,IAAI,CAAC;gBAEV,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAkB;QACpC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAChC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,EACvC,IAAI,CAAC,QAAQ,CACd,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAErB,0EAA0E;QAC1E,wEAAwE;QACxE,sEAAsE;QACtE,oEAAoE;QACpE,MAAM,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEvC,0EAA0E;QAC1E,yDAAyD;QACzD,KAAK,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CACzE,MAAM,CAAC,OAAO,EAAE,CACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAe,EAAE,MAAuB;QACrD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,eAAe,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE;gBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAEzB,4EAA4E;gBAC5E,sEAAsE;gBACtE,IAAI,cAAc,GAAG,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,CAAC;gBAC5D,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,EAAE,CAAe;0CACX,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;gCAChC,GAAG,CAAC,SAAS;mCACV,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,IAAI,KAAK,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,EAAE,CAAC;4BACtC,kCAAkC;4BAClC,6CAA6C;4BAC7C,cAAc,GAAG,IAAI,CAAC;wBACxB,CAAC;6BAAM,IAAI,cAAc,EAAE,CAAC;4BAC1B,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;4BACjC,KAAK,EAAE,CAAC;wBACV,CAAC;6BAAM,CAAC;4BACN,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CACb,qCAAqC,GAAG,CAAC,SAAS,yBAAyB,KAAK,CAAC,SAAS,GAAG,CAC9F,CAAC;4BACF,GAAG,CAAC,KAAK,CACP,SAAS,CAAC,eAAe,EACzB,mCAAmC,KAAK,CAAC,SAAS,eAAe,GAAG,CAAC,SAAS,GAAG,CAClF,CAAC;4BACF,OAAO;wBACT,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,cAAc,EAAE,CAAC;oBACnB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CACb,aAAa,GAAG,CAAC,EAAE,SAAS,KAAK,aAC/B,IAAI,CAAC,GAAG,EAAE,GAAG,KACf,MAAM,CACP,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,EAAC,aAAa,EAAC,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAA2B;0CACnC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBAChE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CACb,2BAA2B,GAAG,CAAC,SAAS,kCAAkC,aAAa,EAAE,CAC1F,CAAC;gBACJ,CAAC;gBACD,8DAA8D;gBAC9D,sEAAsE;gBACtE,GAAG,CAAC,WAAW,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,sCAAsC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,WAAW,CAAC;IACrB,CAAC;CACF;AAED,SAAS,YAAY,CAAC,KAAkB;IACtC,MAAM,EAAC,SAAS,EAAE,MAAM,EAAC,GAAG,KAAK,CAAC;IAClC,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAC,eAAe,EAAE,SAAS,EAAC,CAAC,CAAC,CAAC;QACtE,KAAK,QAAQ;YACX,OAAO,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAC,SAAS,EAAC,CAAC,CAAC,CAAC;QACtD,KAAK,UAAU;YACb,OAAO,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QAC3C;YACE,OAAO,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzC,CAAC;AACH,CAAC"}
@@ -16,7 +16,7 @@ export type CVRFlushStats = {
16
16
  };
17
17
  export declare class CVRStore {
18
18
  #private;
19
- constructor(lc: LogContext, db: PostgresDB, taskID: string, cvrID: string, failService: (e: unknown) => void, loadAttemptIntervalMs?: number, maxLoadAttempts?: number, deferredRowFlushThreshold?: number, // somewhat arbitrary
19
+ constructor(lc: LogContext, db: PostgresDB, shardID: string, taskID: string, cvrID: string, failService: (e: unknown) => void, loadAttemptIntervalMs?: number, maxLoadAttempts?: number, deferredRowFlushThreshold?: number, // somewhat arbitrary
20
20
  setTimeoutFn?: typeof setTimeout);
21
21
  load(lc: LogContext, lastConnectTime: number): Promise<CVR>;
22
22
  getRowRecords(): Promise<ReadonlyMap<RowID, RowRecord>>;
@@ -1 +1 @@
1
- {"version":3,"file":"cvr-store.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/view-syncer/cvr-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cvr-store.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/view-syncer/cvr-store.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ import * as Mode from "../../db/mode-enum.js";
15
15
  import { TransactionPool } from "../../db/transaction-pool.js";
16
16
  import { ErrorForClient, ErrorWithLevel } from "../../types/error-for-client.js";
17
17
  import { rowIDString } from "../../types/row-key.js";
18
- import { rowRecordToRowsRow, rowsRowToRowRecord, } from "./schema/cvr.js";
18
+ import { cvrSchema, rowRecordToRowsRow, rowsRowToRowRecord, } from "./schema/cvr.js";
19
19
  import { cmpVersions, EMPTY_CVR_VERSION, versionFromString, versionString, versionToNullableCookie, } from "./schema/types.js";
20
20
  const tracer = trace.getTracer('cvr-store', version);
21
21
  /**
@@ -75,6 +75,7 @@ class RowRecordCache {
75
75
  #cache;
76
76
  #lc;
77
77
  #db;
78
+ #schema;
78
79
  #cvrID;
79
80
  #failService;
80
81
  #deferredRowFlushThreshold;
@@ -84,14 +85,18 @@ class RowRecordCache {
84
85
  #pendingRowsVersion = null;
85
86
  #flushedRowsVersion = null;
86
87
  #flushing = null;
87
- constructor(lc, db, cvrID, failService, deferredRowFlushThreshold = 100, setTimeoutFn = setTimeout) {
88
+ constructor(lc, db, shardID, cvrID, failService, deferredRowFlushThreshold = 100, setTimeoutFn = setTimeout) {
88
89
  this.#lc = lc;
89
90
  this.#db = db;
91
+ this.#schema = cvrSchema(shardID);
90
92
  this.#cvrID = cvrID;
91
93
  this.#failService = failService;
92
94
  this.#deferredRowFlushThreshold = deferredRowFlushThreshold;
93
95
  this.#setTimeout = setTimeoutFn;
94
96
  }
97
+ #cvr(table) {
98
+ return this.#db(`${this.#schema}.${table}`);
99
+ }
95
100
  async #ensureLoaded() {
96
101
  if (this.#cache) {
97
102
  return this.#cache;
@@ -101,7 +106,9 @@ class RowRecordCache {
101
106
  // query is made even if there are multiple callers.
102
107
  this.#cache = r.promise;
103
108
  const cache = new CustomKeyMap(rowIDString);
104
- for await (const rows of this.#db `SELECT * FROM cvr.rows WHERE "clientGroupID" = ${this.#cvrID} AND "refCounts" IS NOT NULL`
109
+ for await (const rows of this.#db `
110
+ SELECT * FROM ${this.#cvr(`rows`)}
111
+ WHERE "clientGroupID" = ${this.#cvrID} AND "refCounts" IS NOT NULL`
105
112
  // TODO(arv): Arbitrary page size
106
113
  .cursor(5000)) {
107
114
  for (const row of rows) {
@@ -215,15 +222,15 @@ class RowRecordCache {
215
222
  const reader = new TransactionPool(lc, Mode.READONLY).run(this.#db);
216
223
  try {
217
224
  // Verify that we are reading the right version of the CVR.
218
- await reader.processReadTask(tx => checkVersion(tx, this.#cvrID, current));
225
+ await reader.processReadTask(tx => checkVersion(tx, this.#schema, this.#cvrID, current));
219
226
  const { query } = await reader.processReadTask(tx => {
220
227
  const query = excludeQueryHashes.length === 0
221
- ? tx `SELECT * FROM cvr.rows
228
+ ? tx `SELECT * FROM ${this.#cvr('rows')}
222
229
  WHERE "clientGroupID" = ${this.#cvrID}
223
230
  AND "patchVersion" > ${start}
224
231
  AND "patchVersion" <= ${end}`
225
232
  : // Exclude rows that were already sent as part of query hydration.
226
- tx `SELECT * FROM cvr.rows
233
+ tx `SELECT * FROM ${this.#cvr('rows')}
227
234
  WHERE "clientGroupID" = ${this.#cvrID}
228
235
  AND "patchVersion" > ${start}
229
236
  AND "patchVersion" <= ${end}
@@ -251,7 +258,7 @@ class RowRecordCache {
251
258
  version: versionString(version),
252
259
  };
253
260
  const pending = [
254
- tx `INSERT INTO cvr."rowsVersion" ${tx(rowsVersion)}
261
+ tx `INSERT INTO ${this.#cvr('rowsVersion')} ${tx(rowsVersion)}
255
262
  ON CONFLICT ("clientGroupID")
256
263
  DO UPDATE SET ${tx(rowsVersion)}`.execute(),
257
264
  ];
@@ -259,7 +266,7 @@ class RowRecordCache {
259
266
  for (const [id, row] of rowUpdates.entries()) {
260
267
  if (row === null) {
261
268
  pending.push(tx `
262
- DELETE FROM cvr.rows
269
+ DELETE FROM ${this.#cvr('rows')}
263
270
  WHERE "clientGroupID" = ${this.#cvrID}
264
271
  AND "schema" = ${id.schema}
265
272
  AND "table" = ${id.table}
@@ -272,7 +279,7 @@ class RowRecordCache {
272
279
  }
273
280
  if (rowRecordRows.length) {
274
281
  pending.push(tx `
275
- INSERT INTO cvr.rows(
282
+ INSERT INTO ${this.#cvr('rows')}(
276
283
  "clientGroupID", "schema", "table", "rowKey", "rowVersion", "patchVersion", "refCounts"
277
284
  ) SELECT
278
285
  "clientGroupID", "schema", "table", "rowKey", "rowVersion", "patchVersion", "refCounts"
@@ -324,6 +331,7 @@ const LOAD_ATTEMPT_INTERVAL_MS = 500;
324
331
  // as it is technically application specific.
325
332
  const MAX_LOAD_ATTEMPTS = 10;
326
333
  export class CVRStore {
334
+ #schema;
327
335
  #taskID;
328
336
  #id;
329
337
  #db;
@@ -333,15 +341,19 @@ export class CVRStore {
333
341
  #rowCache;
334
342
  #loadAttemptIntervalMs;
335
343
  #maxLoadAttempts;
336
- constructor(lc, db, taskID, cvrID, failService, loadAttemptIntervalMs = LOAD_ATTEMPT_INTERVAL_MS, maxLoadAttempts = MAX_LOAD_ATTEMPTS, deferredRowFlushThreshold = 100, // somewhat arbitrary
344
+ constructor(lc, db, shardID, taskID, cvrID, failService, loadAttemptIntervalMs = LOAD_ATTEMPT_INTERVAL_MS, maxLoadAttempts = MAX_LOAD_ATTEMPTS, deferredRowFlushThreshold = 100, // somewhat arbitrary
337
345
  setTimeoutFn = setTimeout) {
338
346
  this.#db = db;
347
+ this.#schema = cvrSchema(shardID);
339
348
  this.#taskID = taskID;
340
349
  this.#id = cvrID;
341
- this.#rowCache = new RowRecordCache(lc, db, cvrID, failService, deferredRowFlushThreshold, setTimeoutFn);
350
+ this.#rowCache = new RowRecordCache(lc, db, shardID, cvrID, failService, deferredRowFlushThreshold, setTimeoutFn);
342
351
  this.#loadAttemptIntervalMs = loadAttemptIntervalMs;
343
352
  this.#maxLoadAttempts = maxLoadAttempts;
344
353
  }
354
+ #cvr(table) {
355
+ return this.#db(`${this.#schema}.${table}`);
356
+ }
345
357
  load(lc, lastConnectTime) {
346
358
  return startAsyncSpan(tracer, 'cvr.load', async () => {
347
359
  let err;
@@ -382,13 +394,18 @@ export class CVRStore {
382
394
  "owner",
383
395
  "grantedAt",
384
396
  rows."version" as "rowsVersion"
385
- FROM cvr.instances AS cvr
386
- LEFT JOIN cvr."rowsVersion" AS rows
397
+ FROM ${this.#cvr('instances')} AS cvr
398
+ LEFT JOIN ${this.#cvr('rowsVersion')} AS rows
387
399
  ON cvr."clientGroupID" = rows."clientGroupID"
388
400
  WHERE cvr."clientGroupID" = ${id}`,
389
- tx `SELECT "clientID", "patchVersion" FROM cvr.clients WHERE "clientGroupID" = ${id}`,
390
- tx `SELECT * FROM cvr.queries WHERE "clientGroupID" = ${id} AND (deleted IS NULL OR deleted = FALSE)`,
391
- tx `SELECT * FROM cvr.desires WHERE "clientGroupID" = ${id} AND (deleted IS NULL OR deleted = FALSE)`,
401
+ tx `
402
+ SELECT "clientID", "patchVersion" FROM ${this.#cvr('clients')}
403
+ WHERE "clientGroupID" = ${id}`,
404
+ tx `
405
+ SELECT * FROM ${this.#cvr('queries')}
406
+ WHERE "clientGroupID" = ${id} AND (deleted IS NULL OR deleted = FALSE)`,
407
+ tx `SELECT * FROM ${this.#cvr('desires')}
408
+ WHERE "clientGroupID" = ${id} AND (deleted IS NULL OR deleted = FALSE)`,
392
409
  ]);
393
410
  if (instance.length === 0) {
394
411
  // This is the first time we see this CVR.
@@ -410,8 +427,9 @@ export class CVRStore {
410
427
  // Note that the query is structured such that it only succeeds in the
411
428
  // correct conditions (i.e. gated on `grantedAt`).
412
429
  void this.#db `
413
- UPDATE cvr.instances SET "owner" = ${this.#taskID},
414
- "grantedAt" = ${lastConnectTime}
430
+ UPDATE ${this.#cvr('instances')}
431
+ SET "owner" = ${this.#taskID},
432
+ "grantedAt" = ${lastConnectTime}
415
433
  WHERE "clientGroupID" = ${this.#id} AND
416
434
  ("grantedAt" IS NULL OR
417
435
  "grantedAt" <= to_timestamp(${lastConnectTime / 1000}))
@@ -497,7 +515,7 @@ export class CVRStore {
497
515
  grantedAt: lastConnectTime,
498
516
  };
499
517
  return tx `
500
- INSERT INTO cvr.instances ${tx(change)}
518
+ INSERT INTO ${this.#cvr('instances')} ${tx(change)}
501
519
  ON CONFLICT ("clientGroupID") DO UPDATE SET ${tx(change)}`;
502
520
  },
503
521
  });
@@ -505,7 +523,7 @@ export class CVRStore {
505
523
  markQueryAsDeleted(version, queryPatch) {
506
524
  this.#writes.add({
507
525
  stats: { queries: 1 },
508
- write: tx => tx `UPDATE cvr.queries SET ${tx({
526
+ write: tx => tx `UPDATE ${this.#cvr('queries')} SET ${tx({
509
527
  patchVersion: versionString(version),
510
528
  deleted: true,
511
529
  transformationHash: null,
@@ -539,7 +557,7 @@ export class CVRStore {
539
557
  };
540
558
  this.#writes.add({
541
559
  stats: { queries: 1 },
542
- write: tx => tx `INSERT INTO cvr.queries ${tx(change)}
560
+ write: tx => tx `INSERT INTO ${this.#cvr('queries')} ${tx(change)}
543
561
  ON CONFLICT ("clientGroupID", "queryHash")
544
562
  DO UPDATE SET ${tx(change)}`,
545
563
  });
@@ -556,14 +574,14 @@ export class CVRStore {
556
574
  };
557
575
  this.#writes.add({
558
576
  stats: { queries: 1 },
559
- write: tx => tx `UPDATE cvr.queries SET ${tx(change)}
577
+ write: tx => tx `UPDATE ${this.#cvr('queries')} SET ${tx(change)}
560
578
  WHERE "clientGroupID" = ${this.#id} AND "queryHash" = ${query.id}`,
561
579
  });
562
580
  }
563
581
  updateClientPatchVersion(clientID, patchVersion) {
564
582
  this.#writes.add({
565
583
  stats: { clients: 1 },
566
- write: tx => tx `UPDATE cvr.clients
584
+ write: tx => tx `UPDATE ${this.#cvr('clients')}
567
585
  SET "patchVersion" = ${versionString(patchVersion)}
568
586
  WHERE "clientGroupID" = ${this.#id} AND "clientID" = ${clientID}`,
569
587
  });
@@ -578,7 +596,7 @@ export class CVRStore {
578
596
  };
579
597
  this.#writes.add({
580
598
  stats: { clients: 1 },
581
- write: tx => tx `INSERT INTO cvr.clients ${tx(change)}`,
599
+ write: tx => tx `INSERT INTO ${this.#cvr('clients')} ${tx(change)}`,
582
600
  });
583
601
  }
584
602
  insertDesiredQuery(newVersion, query, client, deleted) {
@@ -592,7 +610,7 @@ export class CVRStore {
592
610
  this.#writes.add({
593
611
  stats: { desires: 1 },
594
612
  write: tx => tx `
595
- INSERT INTO cvr.desires ${tx(change)}
613
+ INSERT INTO ${this.#cvr('desires')} ${tx(change)}
596
614
  ON CONFLICT ("clientGroupID", "clientID", "queryHash")
597
615
  DO UPDATE SET ${tx(change)}
598
616
  `,
@@ -612,18 +630,21 @@ export class CVRStore {
612
630
  const reader = new TransactionPool(lc, Mode.READONLY).run(this.#db);
613
631
  try {
614
632
  // Verify that we are reading the right version of the CVR.
615
- await reader.processReadTask(tx => checkVersion(tx, this.#id, current));
633
+ await reader.processReadTask(tx => checkVersion(tx, this.#schema, this.#id, current));
616
634
  const [allDesires, clientRows, queryRows] = await reader.processReadTask(tx => Promise.all([
617
- tx `SELECT * FROM cvr.desires
618
- WHERE "clientGroupID" = ${this.#id}
635
+ tx `
636
+ SELECT * FROM ${this.#cvr('desires')}
637
+ WHERE "clientGroupID" = ${this.#id}
619
638
  AND "patchVersion" > ${start}
620
639
  AND "patchVersion" <= ${end}`,
621
- tx `SELECT * FROM cvr.clients
622
- WHERE "clientGroupID" = ${this.#id}
640
+ tx `
641
+ SELECT * FROM ${this.#cvr('clients')}
642
+ WHERE "clientGroupID" = ${this.#id}
623
643
  AND "patchVersion" > ${start}
624
644
  AND "patchVersion" <= ${end}`,
625
- tx `SELECT deleted, "queryHash", "patchVersion" FROM cvr.queries
626
- WHERE "clientGroupID" = ${this.#id}
645
+ tx `
646
+ SELECT deleted, "queryHash", "patchVersion" FROM ${this.#cvr('queries')}
647
+ WHERE "clientGroupID" = ${this.#id}
627
648
  AND "patchVersion" > ${start}
628
649
  AND "patchVersion" <= ${end}`,
629
650
  ]));
@@ -662,7 +683,7 @@ export class CVRStore {
662
683
  }
663
684
  async #checkVersionAndOwnership(tx, expectedCurrentVersion, lastConnectTime) {
664
685
  const expected = versionString(expectedCurrentVersion);
665
- const result = await tx `SELECT "version", "owner", "grantedAt" FROM cvr.instances
686
+ const result = await tx `SELECT "version", "owner", "grantedAt" FROM ${this.#cvr('instances')}
666
687
  WHERE "clientGroupID" = ${this.#id}
667
688
  FOR UPDATE`.execute(); // Note: execute() immediately to send the query before others.
668
689
  const { version, owner, grantedAt } = result.length > 0
@@ -769,10 +790,11 @@ export class CVRStore {
769
790
  * that it only checks the version and is suitable for snapshot reads
770
791
  * (i.e. by doing a plain `SELECT` rather than a `SELECT ... FOR UPDATE`).
771
792
  */
772
- async function checkVersion(tx, clientGroupID, expectedCurrentVersion) {
793
+ async function checkVersion(tx, schema, clientGroupID, expectedCurrentVersion) {
773
794
  const expected = versionString(expectedCurrentVersion);
774
795
  const result = await tx `
775
- SELECT version FROM cvr.instances WHERE "clientGroupID" = ${clientGroupID}`;
796
+ SELECT version FROM ${tx(schema)}.instances
797
+ WHERE "clientGroupID" = ${clientGroupID}`;
776
798
  const { version } = result.length > 0 ? result[0] : { version: EMPTY_CVR_VERSION.stateVersion };
777
799
  if (version !== expected) {
778
800
  throw new ConcurrentModificationException(expected, version);