@rocicorp/zero 0.1.2024100802 → 0.2.2024101101
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/out/replicache/src/kv/idb-store.d.ts.map +1 -1
- package/out/replicache/src/replicache-impl.d.ts +0 -1
- package/out/replicache/src/replicache-impl.d.ts.map +1 -1
- package/out/shared/src/browser-env.d.ts +4 -2
- package/out/shared/src/browser-env.d.ts.map +1 -1
- package/out/shared/src/h64-with-reverse.d.ts +6 -0
- package/out/shared/src/h64-with-reverse.d.ts.map +1 -0
- package/out/shared/src/h64-with-reverse.js +13 -0
- package/out/shared/src/h64-with-reverse.js.map +1 -0
- package/out/shared/src/reverse-string.d.ts +2 -0
- package/out/shared/src/reverse-string.d.ts.map +1 -0
- package/out/shared/src/reverse-string.js +8 -0
- package/out/shared/src/reverse-string.js.map +1 -0
- package/out/zero-cache/src/config/zero-config.d.ts +25 -0
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +10 -0
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/db/statements.d.ts +1 -0
- package/out/zero-cache/src/db/statements.d.ts.map +1 -1
- package/out/zero-cache/src/db/statements.js +3 -0
- package/out/zero-cache/src/db/statements.js.map +1 -1
- package/out/zero-cache/src/server/change-streamer.js +1 -1
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/server/life-cycle.d.ts +1 -1
- package/out/zero-cache/src/server/life-cycle.d.ts.map +1 -1
- package/out/zero-cache/src/server/life-cycle.js +20 -5
- package/out/zero-cache/src/server/life-cycle.js.map +1 -1
- package/out/zero-cache/src/server/logging.d.ts.map +1 -1
- package/out/zero-cache/src/server/logging.js +43 -4
- package/out/zero-cache/src/server/logging.js.map +1 -1
- package/out/zero-cache/src/server/replicator.js +1 -1
- package/out/zero-cache/src/server/replicator.js.map +1 -1
- package/out/zero-cache/src/server/syncer.js +1 -1
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +6 -5
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +2 -2
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/initial-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js +3 -3
- package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts +2 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js +19 -67
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js.map +1 -1
- package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts.map +1 -1
- package/out/zero-cache/src/services/dispatcher/dispatcher.js +0 -4
- package/out/zero-cache/src/services/dispatcher/dispatcher.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +4 -4
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +3 -3
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.js +57 -32
- package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.js +1 -1
- package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +4 -4
- package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
- package/out/zero-cache/src/services/running-state.js +3 -3
- package/out/zero-cache/src/services/running-state.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +5 -7
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +9 -9
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +9 -4
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js +24 -12
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
- package/out/zero-cache/src/types/lite.d.ts +30 -8
- package/out/zero-cache/src/types/lite.d.ts.map +1 -1
- package/out/zero-cache/src/types/lite.js +114 -15
- package/out/zero-cache/src/types/lite.js.map +1 -1
- package/out/zero-cache/src/types/pg.d.ts +21 -0
- package/out/zero-cache/src/types/pg.d.ts.map +1 -1
- package/out/zero-cache/src/types/pg.js +49 -6
- package/out/zero-cache/src/types/pg.js.map +1 -1
- package/out/zero-cache/src/types/row-key.d.ts +4 -1
- package/out/zero-cache/src/types/row-key.d.ts.map +1 -1
- package/out/zero-cache/src/types/row-key.js +5 -14
- package/out/zero-cache/src/types/row-key.js.map +1 -1
- package/out/zero-cache/src/types/streams.d.ts +2 -2
- package/out/zero-cache/src/types/streams.d.ts.map +1 -1
- package/out/zero-cache/src/types/streams.js +36 -26
- package/out/zero-cache/src/types/streams.js.map +1 -1
- package/out/zero-client/src/client/crud.d.ts +20 -18
- package/out/zero-client/src/client/crud.d.ts.map +1 -1
- package/out/zero-client/src/client/keys.d.ts +2 -2
- package/out/zero-client/src/client/keys.d.ts.map +1 -1
- package/out/zero-client/src/client/make-id-from-primary-key.d.ts +5 -0
- package/out/zero-client/src/client/make-id-from-primary-key.d.ts.map +1 -0
- package/out/zero-client/src/client/zero-poke-handler.d.ts +4 -3
- package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.d.ts +2 -2
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-protocol/src/ast.d.ts.map +1 -1
- package/out/zero-protocol/src/ast.js +5 -8
- package/out/zero-protocol/src/ast.js.map +1 -1
- package/out/zero-protocol/src/down.d.ts +3 -3
- package/out/zero-protocol/src/entities-patch.d.ts +9 -9
- package/out/zero-protocol/src/entities-patch.d.ts.map +1 -1
- package/out/zero-protocol/src/entities-patch.js +5 -4
- package/out/zero-protocol/src/entities-patch.js.map +1 -1
- package/out/zero-protocol/src/poke.d.ts +6 -6
- package/out/zero-protocol/src/primary-key.d.ts +9 -0
- package/out/zero-protocol/src/primary-key.d.ts.map +1 -0
- package/out/zero-protocol/src/primary-key.js +7 -0
- package/out/zero-protocol/src/primary-key.js.map +1 -0
- package/out/zero-protocol/src/push.d.ts +28 -28
- package/out/zero-protocol/src/push.js +5 -5
- package/out/zero-protocol/src/push.js.map +1 -1
- package/out/zero-protocol/src/up.d.ts +4 -4
- package/out/zero.js +201 -105
- package/out/zero.js.map +4 -4
- package/out/zql/src/zql/ivm/schema.d.ts +1 -1
- package/out/zql/src/zql/ivm/schema.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/schema.js.map +1 -1
- package/out/zqlite/src/db.js +1 -1
- package/out/zqlite/src/db.js.map +1 -1
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +35 -32
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +6 -2
- package/out/zero-protocol/src/entity.d.ts +0 -9
- package/out/zero-protocol/src/entity.d.ts.map +0 -1
- package/out/zero-protocol/src/entity.js +0 -8
- package/out/zero-protocol/src/entity.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-streamer-service.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer-service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"change-streamer-service.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,7 +43,7 @@ export interface ChangeStreamer {
|
|
|
43
43
|
* which indicates the watermark at which the subscriber is up to
|
|
44
44
|
* date.
|
|
45
45
|
*/
|
|
46
|
-
subscribe(ctx: SubscriberContext): Source<Downstream
|
|
46
|
+
subscribe(ctx: SubscriberContext): Promise<Source<Downstream>>;
|
|
47
47
|
}
|
|
48
48
|
export type SubscriberContext = {
|
|
49
49
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-streamer.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EACV,MAAM,EACN,UAAU,EACV,YAAY,EACZ,aAAa,EACd,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IAEH,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"change-streamer.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/change-streamer/change-streamer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EACV,MAAM,EACN,UAAU,EACV,YAAY,EACZ,aAAa,EACd,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IAEH,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;CAChE;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,0BAAkB,SAAS;IACzB,OAAO,IAAA;IACP,mBAAmB,IAAA;IACnB,eAAe,IAAA;CAChB;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAC5C,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACxC,MAAM,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAC,CAAC;AACpE,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;AAErD;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,KAAK,CAAC;AAElD,MAAM,WAAW,qBAAsB,SAAQ,cAAc,EAAE,OAAO;CAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initial-sync.d.ts","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-streamer/pg/initial-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"initial-sync.d.ts","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-streamer/pg/initial-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAC,QAAQ,EAAC,MAAM,iCAAiC,CAAC;AAoBzD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAEnD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAID,wBAAsB,WAAW,CAC/B,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,WAAW,EAClB,EAAE,EAAE,QAAQ,EACZ,WAAW,EAAE,MAAM,iBAoDpB"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { ident } from 'pg-format';
|
|
2
2
|
import postgres from 'postgres';
|
|
3
|
+
import { Database } from '../../../../../zqlite/src/db.js';
|
|
3
4
|
import { importSnapshot, Mode, TransactionPool, } from '../../../db/transaction-pool.js';
|
|
4
5
|
import { liteValues } from '../../../types/lite.js';
|
|
5
6
|
import { liteTableName } from '../../../types/names.js';
|
|
6
7
|
import { pgClient } from '../../../types/pg.js';
|
|
7
|
-
import { Database } from '../../../../../zqlite/src/db.js';
|
|
8
8
|
import { initChangeLog } from '../../replicator/schema/change-log.js';
|
|
9
9
|
import { initReplicationState, ZERO_VERSION_COLUMN_NAME, } from '../../replicator/schema/replication-state.js';
|
|
10
10
|
import { toLexiVersion } from './lsn.js';
|
|
11
11
|
import { createTableStatement } from './schema/create.js';
|
|
12
|
-
import {
|
|
12
|
+
import { mapPostgresToLite, warnIfDataTypeSupported } from './schema/lite.js';
|
|
13
13
|
import {} from './schema/published.js';
|
|
14
14
|
import { setupTablesAndReplication } from './schema/zero.js';
|
|
15
15
|
export function replicationSlot(shardID) {
|
|
@@ -98,7 +98,7 @@ function ensurePublishedTables(lc, upstreamDB, shard) {
|
|
|
98
98
|
if (!ALLOWED_IDENTIFIER_CHARS.test(col)) {
|
|
99
99
|
throw new Error(`Column "${col}" in table "${table.name}" has invalid characters.`);
|
|
100
100
|
}
|
|
101
|
-
|
|
101
|
+
warnIfDataTypeSupported(lc, spec.dataType, table.name, col);
|
|
102
102
|
}
|
|
103
103
|
});
|
|
104
104
|
return published;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initial-sync.js","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-streamer/pg/initial-sync.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,EAAC,MAAM,WAAW,CAAC;AAChC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EACL,cAAc,EACd,IAAI,EACJ,eAAe,GAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAC,QAAQ,EAAkB,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"initial-sync.js","sourceRoot":"","sources":["../../../../../../../zero-cache/src/services/change-streamer/pg/initial-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import type { LogContext } from '@rocicorp/logger';
|
|
1
2
|
import type { ColumnSpec, TableSpec } from '../../../../types/specs.js';
|
|
2
3
|
export declare const ZERO_VERSION_COLUMN_SPEC: ColumnSpec;
|
|
3
|
-
export declare function
|
|
4
|
+
export declare function warnIfDataTypeSupported(lc: LogContext, pgDataType: string, table: string, column: string): void;
|
|
4
5
|
export declare function mapPostgresToLite(t: TableSpec): TableSpec;
|
|
5
6
|
//# sourceMappingURL=lite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lite.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-streamer/pg/schema/lite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lite.d.ts","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-streamer/pg/schema/lite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAGjD,OAAO,KAAK,EAAC,UAAU,EAAE,SAAS,EAAC,MAAM,4BAA4B,CAAC;AAGtE,eAAO,MAAM,wBAAwB,EAAE,UAMtC,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,UAAU,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,QAQf;AAqCD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,CAwBzD"}
|
|
@@ -1,62 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { dataTypeToZqlValueType } from '../../../../types/lite.js';
|
|
2
2
|
import { liteTableName } from '../../../../types/names.js';
|
|
3
|
+
import { ZERO_VERSION_COLUMN_NAME } from '../../../replicator/schema/replication-state.js';
|
|
3
4
|
export const ZERO_VERSION_COLUMN_SPEC = {
|
|
4
5
|
pos: Number.MAX_SAFE_INTEGER, // i.e. last
|
|
5
6
|
characterMaximumLength: null,
|
|
6
|
-
dataType: '
|
|
7
|
+
dataType: 'text',
|
|
7
8
|
notNull: true,
|
|
8
9
|
dflt: null,
|
|
9
10
|
};
|
|
10
|
-
export function
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
switch (pgDataType) {
|
|
15
|
-
case 'smallint':
|
|
16
|
-
case 'integer':
|
|
17
|
-
case 'int':
|
|
18
|
-
case 'int2':
|
|
19
|
-
case 'int4':
|
|
20
|
-
case 'int8':
|
|
21
|
-
case 'bigint':
|
|
22
|
-
case 'smallserial':
|
|
23
|
-
case 'serial':
|
|
24
|
-
case 'serial2':
|
|
25
|
-
case 'serial4':
|
|
26
|
-
case 'serial8':
|
|
27
|
-
case 'bigserial':
|
|
28
|
-
return 'INTEGER';
|
|
29
|
-
case 'decimal':
|
|
30
|
-
case 'numeric':
|
|
31
|
-
case 'real':
|
|
32
|
-
case 'double precision':
|
|
33
|
-
case 'float':
|
|
34
|
-
case 'float4':
|
|
35
|
-
case 'float8':
|
|
36
|
-
return 'REAL';
|
|
37
|
-
case 'bytea':
|
|
38
|
-
return 'BLOB';
|
|
39
|
-
case 'character':
|
|
40
|
-
case 'character varying':
|
|
41
|
-
case 'text':
|
|
42
|
-
case 'varchar':
|
|
43
|
-
return 'TEXT';
|
|
44
|
-
case 'bool':
|
|
45
|
-
case 'boolean':
|
|
46
|
-
return 'BOOL';
|
|
47
|
-
// case 'date':
|
|
48
|
-
// case 'time':
|
|
49
|
-
// case 'timestamp':
|
|
50
|
-
// case 'timestamp with time zone':
|
|
51
|
-
// case 'timestamp without time zone':
|
|
52
|
-
// case 'time with time zone':
|
|
53
|
-
// case 'time without time zone':
|
|
54
|
-
// return 'INTEGER';
|
|
55
|
-
default:
|
|
56
|
-
if (pgDataType.endsWith('[]')) {
|
|
57
|
-
throw new Error(`Array types are not supported: ${pgDataType}`);
|
|
58
|
-
}
|
|
59
|
-
throw new Error(`The "${pgDataType}" data type is not supported`);
|
|
11
|
+
export function warnIfDataTypeSupported(lc, pgDataType, table, column) {
|
|
12
|
+
if (dataTypeToZqlValueType(pgDataType) === undefined) {
|
|
13
|
+
lc.warn?.(`\n\nWARNING: zero does not yet support the "${pgDataType}" data type.\n` +
|
|
14
|
+
`The "${table}"."${column}" column will not be synced to clients.\n\n`);
|
|
60
15
|
}
|
|
61
16
|
}
|
|
62
17
|
// e.g. true, false, 1234, 1234.5678
|
|
@@ -68,12 +23,12 @@ const SIMPLE_TOKEN_EXPRESSION_REGEX = /^([^']+)$/;
|
|
|
68
23
|
// These type-qualifiers must be removed, as SQLite doesn't understand or
|
|
69
24
|
// care about them.
|
|
70
25
|
const STRING_EXPRESSION_REGEX = /^('.*')::[^']+$/;
|
|
71
|
-
function mapPostgresToLiteDefault(table, column,
|
|
26
|
+
function mapPostgresToLiteDefault(table, column, dataType, defaultExpression) {
|
|
72
27
|
if (defaultExpression === null) {
|
|
73
28
|
return null;
|
|
74
29
|
}
|
|
75
30
|
if (SIMPLE_TOKEN_EXPRESSION_REGEX.test(defaultExpression)) {
|
|
76
|
-
if (
|
|
31
|
+
if (dataTypeToZqlValueType(dataType) === 'boolean') {
|
|
77
32
|
return defaultExpression === 'true' ? '1' : '0';
|
|
78
33
|
}
|
|
79
34
|
return defaultExpression;
|
|
@@ -91,19 +46,16 @@ export function mapPostgresToLite(t) {
|
|
|
91
46
|
schema: '', // SQLite does not support schemas
|
|
92
47
|
name,
|
|
93
48
|
columns: {
|
|
94
|
-
...Object.fromEntries(Object.entries(t.columns).map(([col, { pos, dataType
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
},
|
|
105
|
-
];
|
|
106
|
-
})),
|
|
49
|
+
...Object.fromEntries(Object.entries(t.columns).map(([col, { pos, dataType, notNull, dflt }]) => [
|
|
50
|
+
col,
|
|
51
|
+
{
|
|
52
|
+
pos,
|
|
53
|
+
dataType,
|
|
54
|
+
characterMaximumLength: null,
|
|
55
|
+
notNull,
|
|
56
|
+
dflt: mapPostgresToLiteDefault(name, col, dataType, dflt),
|
|
57
|
+
},
|
|
58
|
+
])),
|
|
107
59
|
[ZERO_VERSION_COLUMN_NAME]: ZERO_VERSION_COLUMN_SPEC,
|
|
108
60
|
},
|
|
109
61
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lite.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-streamer/pg/schema/lite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lite.js","sourceRoot":"","sources":["../../../../../../../../zero-cache/src/services/change-streamer/pg/schema/lite.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,sBAAsB,EAAC,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAC,wBAAwB,EAAC,MAAM,iDAAiD,CAAC;AAEzF,MAAM,CAAC,MAAM,wBAAwB,GAAe;IAClD,GAAG,EAAE,MAAM,CAAC,gBAAgB,EAAE,YAAY;IAC1C,sBAAsB,EAAE,IAAI;IAC5B,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,MAAM,UAAU,uBAAuB,CACrC,EAAc,EACd,UAAkB,EAClB,KAAa,EACb,MAAc;IAEd,IAAI,sBAAsB,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;QACrD,EAAE,CAAC,IAAI,EAAE,CACP,+CAA+C,UAAU,gBAAgB;YACvE,QAAQ,KAAK,MAAM,MAAM,6CAA6C,CACzE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,oCAAoC;AACpC,MAAM,6BAA6B,GAAG,WAAW,CAAC;AAElD,4EAA4E;AAC5E,6EAA6E;AAC7E,+DAA+D;AAC/D,EAAE;AACF,yEAAyE;AACzE,mBAAmB;AACnB,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAElD,SAAS,wBAAwB,CAC/B,KAAa,EACb,MAAc,EACd,QAAgB,EAChB,iBAAgC;IAEhC,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,6BAA6B,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC1D,IAAI,sBAAsB,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE,CAAC;YACnD,OAAO,iBAAiB,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAClD,CAAC;QACD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IACD,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,iCAAiC,KAAK,IAAI,MAAM,KAAK,iBAAiB,EAAE,CACzE,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,CAAY;IAC5C,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9B,OAAO;QACL,GAAG,CAAC;QACJ,MAAM,EAAE,EAAE,EAAE,kCAAkC;QAC9C,IAAI;QACJ,OAAO,EAAE;YACP,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAC3B,CAAC,CAAC,GAAG,EAAE,EAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,EAAE,EAAE,CAAC;gBACzC,GAAG;gBACH;oBACE,GAAG;oBACH,QAAQ;oBACR,sBAAsB,EAAE,IAAI;oBAC5B,OAAO;oBACP,IAAI,EAAE,wBAAwB,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC;iBACrC;aACvB,CACF,CACF;YACD,CAAC,wBAAwB,CAAC,EAAE,wBAAwB;SACrD;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAI5C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAI3C,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAEhE,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,qBAAa,UAAW,YAAW,OAAO;;IACxC,QAAQ,CAAC,EAAE,gBAAgB;gBAOzB,EAAE,EAAE,UAAU,EACd,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,EAChD,IAAI,GAAE,OAAO,CAAC,OAAO,CAAM;
|
|
1
|
+
{"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAI5C,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAI3C,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAEhE,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,qBAAa,UAAW,YAAW,OAAO;;IACxC,QAAQ,CAAC,EAAE,gBAAgB;gBAOzB,EAAE,EAAE,UAAU,EACd,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,EAChD,IAAI,GAAE,OAAO,CAAC,OAAO,CAAM;IAkCvB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
|
|
@@ -18,10 +18,6 @@ export class Dispatcher {
|
|
|
18
18
|
this.#workersByHostname = workersByHostname;
|
|
19
19
|
this.#fastify = Fastify();
|
|
20
20
|
this.#fastify.get('/', (_req, res) => res.send('OK'));
|
|
21
|
-
this.#fastify.addHook('onRequest', (req, _, done) => {
|
|
22
|
-
this.#lc?.debug?.(`received request`, req.hostname, req.url);
|
|
23
|
-
done();
|
|
24
|
-
});
|
|
25
21
|
this.#port = port;
|
|
26
22
|
installWebSocketHandoff(this.#fastify.server, req => this.#handoff(req));
|
|
27
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,OAAO,EAAE,EAAsB,MAAM,SAAS,CAAC;AACtD,OAAO,EAAC,eAAe,EAAC,MAAM,MAAM,CAAC;AACrC,OAAO,EAAC,GAAG,EAAC,MAAM,kCAAkC,CAAC;AAGrD,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAC,uBAAuB,EAAC,MAAM,wBAAwB,CAAC;AAE/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,4BAA4B,CAAC;AAMhE,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AAMjC,MAAM,OAAO,UAAU;IACZ,EAAE,GAAG,YAAY,CAAC;IAClB,GAAG,CAAa;IAChB,kBAAkB,CAAgC;IAClD,QAAQ,CAAkB;IAC1B,KAAK,CAAS;IAEvB,YACE,EAAc,EACd,iBAAgD,EAChD,OAAyB,EAAE;QAE3B,MAAM,EAAC,IAAI,GAAG,YAAY,EAAC,GAAG,IAAI,CAAC;QAEnC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/dispatcher/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,OAAO,EAAE,EAAsB,MAAM,SAAS,CAAC;AACtD,OAAO,EAAC,eAAe,EAAC,MAAM,MAAM,CAAC;AACrC,OAAO,EAAC,GAAG,EAAC,MAAM,kCAAkC,CAAC;AAGrD,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAC,uBAAuB,EAAC,MAAM,wBAAwB,CAAC;AAE/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,4BAA4B,CAAC;AAMhE,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AAMjC,MAAM,OAAO,UAAU;IACZ,EAAE,GAAG,YAAY,CAAC;IAClB,GAAG,CAAa;IAChB,kBAAkB,CAAgC;IAClD,QAAQ,CAAkB;IAC1B,KAAK,CAAS;IAEvB,YACE,EAAc,EACd,iBAAgD,EAChD,OAAyB,EAAE;QAE3B,MAAM,EAAC,IAAI,GAAG,YAAY,EAAC,GAAG,IAAI,CAAC;QAEnC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,QAAQ,CAAC,GAAoB;QAC3B,MAAM,EAAC,OAAO,EAAE,GAAG,EAAC,GAAG,GAAG,CAAC;QAC3B,MAAM,EAAC,MAAM,EAAE,KAAK,EAAC,GAAG,gBAAgB,CACtC,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,gBAAgB,CAAC,EACpC,OAAO,CACR,CAAC;QACF,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,EAAC,aAAa,EAAC,GAAG,MAAM,CAAC;QAC/B,MAAM,EAAC,OAAO,EAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QAEnD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,cAAc,aAAa,cAAc,MAAM,EAAE,CAAC,CAAC;QACpE,OAAO,EAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACzC,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI,CAAC,KAAK;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutagen.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/mutagen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,MAAM,CAAC;AACrC,OAAO,QAAQ,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"mutagen.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/mutagen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,MAAM,CAAC;AACrC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAC,SAAS,EAAC,MAAM,sCAAsC,CAAC;AAC/D,OAAO,EAGL,KAAK,QAAQ,EAEb,KAAK,QAAQ,EACb,KAAK,KAAK,EAEX,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAC,KAAK,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAG5D,OAAO,KAAK,EAAC,UAAU,EAAsB,MAAM,mBAAmB,CAAC;AAGvE,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAsB,KAAK,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAIhF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC,mBAAmB;IAC9D,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,WAAW,OAAO;IACtB,eAAe,CACb,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,UAAU,EACpB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;CACvC;AAED,qBAAa,cAAe,YAAW,OAAO,EAAE,OAAO;;IACrD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBAUlB,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,UAAU;IA2BpB,eAAe,CACb,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,UAAU,EACpB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAmBrC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAItB;AAID,wBAAsB,eAAe,CACnC,EAAE,EAAE,UAAU,GAAG,SAAS,EAC1B,QAAQ,EAAE,UAAU,EACpB,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAoGpC;AAwED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,cAAc,EAC3B,MAAM,EAAE,QAAQ,GACf,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAUvC;AAED,wBAAgB,SAAS,CACvB,EAAE,EAAE,QAAQ,CAAC,cAAc,EAC3B,GAAG,EAAE,KAAK,GACT,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CASvC"}
|
|
@@ -2,15 +2,15 @@ import { PG_SERIALIZATION_FAILURE } from '@drdgvhbh/postgres-error-codes';
|
|
|
2
2
|
import { resolver } from '@rocicorp/resolver';
|
|
3
3
|
import postgres from 'postgres';
|
|
4
4
|
import { assert, unreachable } from '../../../../shared/src/asserts.js';
|
|
5
|
-
import { Mode } from '../../db/transaction-pool.js';
|
|
6
5
|
import { ErrorKind } from '../../../../zero-protocol/src/mod.js';
|
|
7
6
|
import { MutationType, } from '../../../../zero-protocol/src/push.js';
|
|
8
7
|
import { Database } from '../../../../zqlite/src/db.js';
|
|
9
8
|
import {} from '../../config/zero-config.js';
|
|
9
|
+
import { Mode } from '../../db/transaction-pool.js';
|
|
10
10
|
import { ErrorForClient } from '../../types/error-for-client.js';
|
|
11
|
-
import { WriteAuthorizerImpl } from './write-authorizer.js';
|
|
12
|
-
import { SlidingWindowLimiter } from '../limiter/sliding-window-limiter.js';
|
|
13
11
|
import { throwErrorForClientIfSchemaVersionNotSupported } from '../../types/schema-versions.js';
|
|
12
|
+
import { SlidingWindowLimiter } from '../limiter/sliding-window-limiter.js';
|
|
13
|
+
import { WriteAuthorizerImpl } from './write-authorizer.js';
|
|
14
14
|
export class MutagenService {
|
|
15
15
|
id;
|
|
16
16
|
#lc;
|
|
@@ -23,7 +23,7 @@ export class MutagenService {
|
|
|
23
23
|
constructor(lc, shardID, clientGroupID, upstream, config) {
|
|
24
24
|
this.id = clientGroupID;
|
|
25
25
|
this.#lc = lc
|
|
26
|
-
.withContext('component', '
|
|
26
|
+
.withContext('component', 'mutagen')
|
|
27
27
|
.withContext('serviceID', this.id);
|
|
28
28
|
this.#upstream = upstream;
|
|
29
29
|
this.#shardID = shardID;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mutagen.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/mutagen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,wBAAwB,EAAC,MAAM,gCAAgC,CAAC;AAExE,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAE5C,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"mutagen.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/mutagen/mutagen.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { LogContext } from '@rocicorp/logger';
|
|
2
|
-
import { StatementRunner } from '../../db/statements.js';
|
|
3
2
|
import { Database } from '../../../../zqlite/src/db.js';
|
|
3
|
+
import { StatementRunner } from '../../db/statements.js';
|
|
4
4
|
import type { Source } from '../../types/streams.js';
|
|
5
5
|
import type { ChangeStreamer, DownstreamChange } from '../change-streamer/change-streamer.js';
|
|
6
6
|
import type { ReplicaState } from './replicator.js';
|
|
7
|
-
type TransactionMode = '
|
|
7
|
+
type TransactionMode = 'IMMEDIATE' | 'CONCURRENT';
|
|
8
8
|
/**
|
|
9
9
|
* The {@link IncrementalSyncer} manages a logical replication stream from upstream,
|
|
10
10
|
* handling application lifecycle events (start, stop) and retrying the
|
|
@@ -32,7 +32,7 @@ export declare class IncrementalSyncer {
|
|
|
32
32
|
export declare class MessageProcessor {
|
|
33
33
|
#private;
|
|
34
34
|
constructor(db: StatementRunner, txMode: TransactionMode, acknowledge: (watermark: string) => unknown, failService: (lc: LogContext, err: unknown) => void);
|
|
35
|
-
abort(lc: LogContext
|
|
35
|
+
abort(lc: LogContext): void;
|
|
36
36
|
/** @return If a transaction was committed. */
|
|
37
37
|
processMessage(lc: LogContext, downstream: DownstreamChange): boolean;
|
|
38
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"incremental-sync.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/replicator/incremental-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"incremental-sync.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/replicator/incremental-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAMjD,OAAO,EAAC,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AACtD,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AAKvD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EACV,cAAc,EAEd,gBAAgB,EACjB,MAAM,uCAAuC,CAAC;AAW/C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AASlD,KAAK,eAAe,GAAG,WAAW,GAAG,YAAY,CAAC;AAElD;;;;;GAKG;AACH,qBAAa,iBAAiB;;gBAW1B,EAAE,EAAE,MAAM,EACV,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,eAAe;IASnB,GAAG,CAAC,EAAE,EAAE,UAAU;IAqDxB,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC;IAI3B,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,OAAO;CAIzC;AAoBD;;;;;;;;;;GAUG;AAEH,qBAAa,gBAAgB;;gBAWzB,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,EAC3C,WAAW,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI;IAsBrD,KAAK,CAAC,EAAE,EAAE,UAAU;IAIpB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,GAAG,OAAO;CAqGtE"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import { SqliteError } from 'better-sqlite3';
|
|
1
2
|
import { ident } from 'pg-format';
|
|
2
3
|
import { LogicalReplicationService } from 'pg-logical-replication';
|
|
3
4
|
import { AbortError } from '../../../../shared/src/abort-error.js';
|
|
4
5
|
import { assert, unreachable } from '../../../../shared/src/asserts.js';
|
|
5
|
-
import { StatementRunner } from '../../db/statements.js';
|
|
6
|
-
import { liteValues } from '../../types/lite.js';
|
|
7
6
|
import { Database } from '../../../../zqlite/src/db.js';
|
|
7
|
+
import { StatementRunner } from '../../db/statements.js';
|
|
8
8
|
import { stringify } from '../../types/bigint-json.js';
|
|
9
|
+
import { liteRow } from '../../types/lite.js';
|
|
9
10
|
import { liteTableName } from '../../types/names.js';
|
|
10
11
|
import { RunningState } from '../running-state.js';
|
|
11
12
|
import { Notifier } from './notifier.js';
|
|
@@ -39,23 +40,26 @@ export class IncrementalSyncer {
|
|
|
39
40
|
this.#notifier.notifySubscribers();
|
|
40
41
|
while (this.#state.shouldRun()) {
|
|
41
42
|
const { replicaVersion, watermark } = getSubscriptionState(this.#replica);
|
|
42
|
-
const downstream = this.#changeStreamer.subscribe({
|
|
43
|
-
id: this.#id,
|
|
44
|
-
watermark,
|
|
45
|
-
replicaVersion,
|
|
46
|
-
initial: watermark === initialWatermark,
|
|
47
|
-
});
|
|
48
43
|
const processor = new MessageProcessor(this.#replica, this.#txMode, (_watermark) => { }, // TODO: Add ACKs to ChangeStreamer API
|
|
49
44
|
(lc, err) => this.stop(lc, err));
|
|
50
|
-
|
|
45
|
+
let downstream;
|
|
46
|
+
let unregister = () => { };
|
|
47
|
+
let err;
|
|
51
48
|
try {
|
|
49
|
+
downstream = await this.#changeStreamer.subscribe({
|
|
50
|
+
id: this.#id,
|
|
51
|
+
watermark,
|
|
52
|
+
replicaVersion,
|
|
53
|
+
initial: watermark === initialWatermark,
|
|
54
|
+
});
|
|
55
|
+
this.#state.resetBackoff();
|
|
56
|
+
unregister = this.#state.cancelOnStop(downstream);
|
|
52
57
|
for await (const message of downstream) {
|
|
53
58
|
if (message[0] === 'error') {
|
|
54
59
|
// Unrecoverable error. Stop the service.
|
|
55
60
|
await this.stop(lc, message[1]);
|
|
56
61
|
break;
|
|
57
62
|
}
|
|
58
|
-
this.#state.resetBackoff();
|
|
59
63
|
if (processor.processMessage(lc, message)) {
|
|
60
64
|
this.#notifier.notifySubscribers({ state: 'version-ready' });
|
|
61
65
|
}
|
|
@@ -63,14 +67,14 @@ export class IncrementalSyncer {
|
|
|
63
67
|
processor.abort(lc);
|
|
64
68
|
}
|
|
65
69
|
catch (e) {
|
|
66
|
-
|
|
67
|
-
processor.abort(lc
|
|
70
|
+
err = e;
|
|
71
|
+
processor.abort(lc);
|
|
68
72
|
}
|
|
69
73
|
finally {
|
|
70
|
-
downstream
|
|
74
|
+
downstream?.cancel();
|
|
71
75
|
unregister();
|
|
72
76
|
}
|
|
73
|
-
await this.#state.backoff(lc);
|
|
77
|
+
await this.#state.backoff(lc, err);
|
|
74
78
|
}
|
|
75
79
|
lc.info?.('IncrementalSyncer stopped');
|
|
76
80
|
}
|
|
@@ -126,19 +130,15 @@ export class MessageProcessor {
|
|
|
126
130
|
if (!this.#failure) {
|
|
127
131
|
this.#currentTx?.abort(lc); // roll back any pending transaction.
|
|
128
132
|
this.#failure = ensureError(err);
|
|
129
|
-
if (err instanceof AbortError) {
|
|
130
|
-
// Aborted by the service.
|
|
131
|
-
lc.info?.('stopping MessageProcessor');
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
133
|
+
if (!(err instanceof AbortError)) {
|
|
134
134
|
// Propagate the failure up to the service.
|
|
135
135
|
lc.error?.('Message Processing failed:', this.#failure);
|
|
136
136
|
this.#failService(lc, this.#failure);
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
|
-
abort(lc
|
|
141
|
-
this.#fail(lc,
|
|
140
|
+
abort(lc) {
|
|
141
|
+
this.#fail(lc, new AbortError());
|
|
142
142
|
}
|
|
143
143
|
/** @return If a transaction was committed. */
|
|
144
144
|
processMessage(lc, downstream) {
|
|
@@ -162,13 +162,36 @@ export class MessageProcessor {
|
|
|
162
162
|
}
|
|
163
163
|
return false;
|
|
164
164
|
}
|
|
165
|
+
#beginTransaction(lc) {
|
|
166
|
+
let start = Date.now();
|
|
167
|
+
for (let i = 0;; i++) {
|
|
168
|
+
try {
|
|
169
|
+
return new TransactionProcessor(this.#db, this.#txMode);
|
|
170
|
+
}
|
|
171
|
+
catch (e) {
|
|
172
|
+
// The db occasionally errors with a 'database is locked' error when
|
|
173
|
+
// being concurrently processed by `litestream replicate`, even with
|
|
174
|
+
// a long busy_timeout. Retry once to see if any deadlock situation
|
|
175
|
+
// was resolved when aborting the first attempt.
|
|
176
|
+
if (e instanceof SqliteError) {
|
|
177
|
+
lc.error?.(`${e.code} after ${Date.now() - start} ms (attempt ${i + 1})`, e);
|
|
178
|
+
if (i === 0) {
|
|
179
|
+
// retry once
|
|
180
|
+
start = Date.now();
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
throw e;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
165
188
|
/** @return The number of changes committed. */
|
|
166
189
|
#processMessage(lc, msg, watermark) {
|
|
167
190
|
if (msg.tag === 'begin') {
|
|
168
191
|
if (this.#currentTx) {
|
|
169
192
|
throw new Error(`Already in a transaction ${stringify(msg)}`);
|
|
170
193
|
}
|
|
171
|
-
this.#currentTx =
|
|
194
|
+
this.#currentTx = this.#beginTransaction(lc);
|
|
172
195
|
return false;
|
|
173
196
|
}
|
|
174
197
|
// For non-begin messages, there should be a #currentTx set.
|
|
@@ -246,7 +269,7 @@ class TransactionProcessor {
|
|
|
246
269
|
// and thus BEGIN CONCURRENT is not necessary. In fact, BEGIN CONCURRENT can cause
|
|
247
270
|
// deadlocks with forced wal-checkpoints (which `litestream replicate` performs),
|
|
248
271
|
// so it is important to use vanilla transactions in this configuration.
|
|
249
|
-
db.
|
|
272
|
+
db.beginImmediate();
|
|
250
273
|
}
|
|
251
274
|
const { nextStateVersion } = getReplicationVersions(db);
|
|
252
275
|
this.#db = db;
|
|
@@ -270,11 +293,12 @@ class TransactionProcessor {
|
|
|
270
293
|
*/
|
|
271
294
|
processInsert(insert) {
|
|
272
295
|
const table = liteTableName(insert.relation);
|
|
296
|
+
const newRow = liteRow(insert.new);
|
|
273
297
|
const row = {
|
|
274
|
-
...
|
|
298
|
+
...newRow,
|
|
275
299
|
[ZERO_VERSION_COLUMN_NAME]: this.#version,
|
|
276
300
|
};
|
|
277
|
-
const key = Object.fromEntries(insert.relation.keyColumns.map(col => [col,
|
|
301
|
+
const key = Object.fromEntries(insert.relation.keyColumns.map(col => [col, newRow[col]]));
|
|
278
302
|
const rawColumns = Object.keys(row);
|
|
279
303
|
const keyColumns = insert.relation.keyColumns.map(c => ident(c));
|
|
280
304
|
const columns = rawColumns.map(c => ident(c));
|
|
@@ -284,18 +308,19 @@ class TransactionProcessor {
|
|
|
284
308
|
VALUES (${new Array(columns.length).fill('?').join(',')})
|
|
285
309
|
ON CONFLICT (${keyColumns.join(',')})
|
|
286
310
|
DO UPDATE SET ${upsert.join(',')}
|
|
287
|
-
`,
|
|
311
|
+
`, Object.values(row));
|
|
288
312
|
logSetOp(this.#db, this.#version, table, key);
|
|
289
313
|
}
|
|
290
314
|
processUpdate(update) {
|
|
291
315
|
const table = liteTableName(update.relation);
|
|
316
|
+
const newRow = liteRow(update.new);
|
|
292
317
|
const row = {
|
|
293
|
-
...
|
|
318
|
+
...newRow,
|
|
294
319
|
[ZERO_VERSION_COLUMN_NAME]: this.#version,
|
|
295
320
|
};
|
|
296
321
|
// update.key is set with the old values if the key has changed.
|
|
297
|
-
const oldKey = update.key;
|
|
298
|
-
const newKey = Object.fromEntries(update.relation.keyColumns.map(col => [col,
|
|
322
|
+
const oldKey = update.key ? liteRow(update.key) : null;
|
|
323
|
+
const newKey = Object.fromEntries(update.relation.keyColumns.map(col => [col, newRow[col]]));
|
|
299
324
|
const currKey = oldKey ?? newKey;
|
|
300
325
|
const setExprs = Object.keys(row).map(col => `${ident(col)}=?`);
|
|
301
326
|
const conds = Object.keys(currKey).map(col => `${ident(col)}=?`);
|
|
@@ -303,7 +328,7 @@ class TransactionProcessor {
|
|
|
303
328
|
UPDATE ${ident(table)}
|
|
304
329
|
SET ${setExprs.join(',')}
|
|
305
330
|
WHERE ${conds.join(' AND ')}
|
|
306
|
-
`, [...
|
|
331
|
+
`, [...Object.values(row), ...Object.values(currKey)]);
|
|
307
332
|
if (oldKey) {
|
|
308
333
|
logDeleteOp(this.#db, this.#version, table, oldKey);
|
|
309
334
|
}
|
|
@@ -314,10 +339,10 @@ class TransactionProcessor {
|
|
|
314
339
|
// https://www.postgresql.org/docs/current/protocol-logicalrep-message-formats.html
|
|
315
340
|
assert(del.relation.replicaIdentity === 'default');
|
|
316
341
|
assert(del.key);
|
|
317
|
-
const rowKey = del.key;
|
|
342
|
+
const rowKey = liteRow(del.key);
|
|
318
343
|
const table = liteTableName(del.relation);
|
|
319
344
|
const conds = Object.keys(rowKey).map(col => `${ident(col)}=?`);
|
|
320
|
-
this.#db.run(`DELETE FROM ${ident(table)} WHERE ${conds.join(' AND ')}`,
|
|
345
|
+
this.#db.run(`DELETE FROM ${ident(table)} WHERE ${conds.join(' AND ')}`, Object.values(rowKey));
|
|
321
346
|
logDeleteOp(this.#db, this.#version, table, rowKey);
|
|
322
347
|
}
|
|
323
348
|
processTruncate(truncate) {
|