@antelopejs/postgres 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/implementations/database/result.js +2 -3
- package/dist/implementations/database/result.js.map +1 -1
- package/dist/test/atomic.test.js +49 -32
- package/dist/test/atomic.test.js.map +1 -1
- package/dist/test/contention.test.js +20 -16
- package/dist/test/contention.test.js.map +1 -1
- package/dist/test/duplicate-key.test.js +38 -18
- package/dist/test/duplicate-key.test.js.map +1 -1
- package/dist/test/indexes.test.js +14 -13
- package/dist/test/indexes.test.js.map +1 -1
- package/dist/test/nested-paths.test.js +27 -18
- package/dist/test/nested-paths.test.js.map +1 -1
- package/dist/test/typed-operations.test.js +55 -38
- package/dist/test/typed-operations.test.js.map +1 -1
- package/dist/test/unit/config-fixture.d.ts +2 -0
- package/dist/test/unit/config-fixture.js +11 -0
- package/dist/test/unit/config-fixture.js.map +1 -0
- package/dist/test/unit/config.spec.js +2 -32
- package/dist/test/unit/config.spec.js.map +1 -1
- package/dist/test/unit/config.untyped.spec.js +34 -0
- package/dist/test/unit/config.untyped.spec.js.map +1 -0
- package/dist/test/unit/expression-array-walk.spec.js +0 -8
- package/dist/test/unit/expression-array-walk.spec.js.map +1 -1
- package/dist/test/unit/expression-array-walk.untyped.spec.d.ts +1 -0
- package/dist/test/unit/expression-array-walk.untyped.spec.js +17 -0
- package/dist/test/unit/expression-array-walk.untyped.spec.js.map +1 -0
- package/dist/test/unit/expression-array.spec.js +0 -18
- package/dist/test/unit/expression-array.spec.js.map +1 -1
- package/dist/test/unit/expression-array.untyped.spec.d.ts +1 -0
- package/dist/test/unit/expression-array.untyped.spec.js +32 -0
- package/dist/test/unit/expression-array.untyped.spec.js.map +1 -0
- package/dist/test/unit/expression-date.spec.js +0 -21
- package/dist/test/unit/expression-date.spec.js.map +1 -1
- package/dist/test/unit/expression-date.untyped.spec.d.ts +1 -0
- package/dist/test/unit/expression-date.untyped.spec.js +33 -0
- package/dist/test/unit/expression-date.untyped.spec.js.map +1 -0
- package/dist/test/unit/expression-numeric.spec.js +0 -20
- package/dist/test/unit/expression-numeric.spec.js.map +1 -1
- package/dist/test/unit/expression-numeric.untyped.spec.d.ts +1 -0
- package/dist/test/unit/expression-numeric.untyped.spec.js +31 -0
- package/dist/test/unit/expression-numeric.untyped.spec.js.map +1 -0
- package/dist/test/unit/expression-object.spec.js +0 -12
- package/dist/test/unit/expression-object.spec.js.map +1 -1
- package/dist/test/unit/expression-object.untyped.spec.d.ts +1 -0
- package/dist/test/unit/expression-object.untyped.spec.js +23 -0
- package/dist/test/unit/expression-object.untyped.spec.js.map +1 -0
- package/dist/test/unit/expression-string.spec.js +0 -5
- package/dist/test/unit/expression-string.spec.js.map +1 -1
- package/dist/test/unit/expression-string.untyped.spec.d.ts +1 -0
- package/dist/test/unit/expression-string.untyped.spec.js +14 -0
- package/dist/test/unit/expression-string.untyped.spec.js.map +1 -0
- package/dist/test/unit/expression.spec.js +0 -16
- package/dist/test/unit/expression.spec.js.map +1 -1
- package/dist/test/unit/expression.untyped.spec.d.ts +1 -0
- package/dist/test/unit/expression.untyped.spec.js +29 -0
- package/dist/test/unit/expression.untyped.spec.js.map +1 -0
- package/dist/test/unit/feeds-fixture.d.ts +30 -0
- package/dist/test/unit/feeds-fixture.js +65 -0
- package/dist/test/unit/feeds-fixture.js.map +1 -0
- package/dist/test/unit/feeds.spec.js +80 -143
- package/dist/test/unit/feeds.spec.js.map +1 -1
- package/dist/test/unit/feeds.untyped.spec.d.ts +1 -0
- package/dist/test/unit/feeds.untyped.spec.js +22 -0
- package/dist/test/unit/feeds.untyped.spec.js.map +1 -0
- package/dist/test/unit/fields.spec.js +0 -5
- package/dist/test/unit/fields.spec.js.map +1 -1
- package/dist/test/unit/fields.untyped.spec.d.ts +1 -0
- package/dist/test/unit/fields.untyped.spec.js +12 -0
- package/dist/test/unit/fields.untyped.spec.js.map +1 -0
- package/dist/test/unit/pipeline-fold-fixture.d.ts +10 -0
- package/dist/test/unit/pipeline-fold-fixture.js +46 -0
- package/dist/test/unit/pipeline-fold-fixture.js.map +1 -0
- package/dist/test/unit/pipeline-group.spec.js +0 -3
- package/dist/test/unit/pipeline-group.spec.js.map +1 -1
- package/dist/test/unit/pipeline-group.untyped.spec.d.ts +1 -0
- package/dist/test/unit/pipeline-group.untyped.spec.js +11 -0
- package/dist/test/unit/pipeline-group.untyped.spec.js.map +1 -0
- package/dist/test/unit/pipeline-lambda-ids.untyped.spec.d.ts +1 -0
- package/dist/test/unit/{pipeline-lambda-ids.spec.js → pipeline-lambda-ids.untyped.spec.js} +7 -7
- package/dist/test/unit/pipeline-lambda-ids.untyped.spec.js.map +1 -0
- package/dist/test/unit/pipeline-projection.spec.js +0 -7
- package/dist/test/unit/pipeline-projection.spec.js.map +1 -1
- package/dist/test/unit/pipeline-projection.untyped.spec.d.ts +1 -0
- package/dist/test/unit/pipeline-projection.untyped.spec.js +16 -0
- package/dist/test/unit/pipeline-projection.untyped.spec.js.map +1 -0
- package/dist/test/unit/pipeline-selection.spec.js +0 -31
- package/dist/test/unit/pipeline-selection.spec.js.map +1 -1
- package/dist/test/unit/pipeline-selection.untyped.spec.d.ts +1 -0
- package/dist/test/unit/pipeline-selection.untyped.spec.js +44 -0
- package/dist/test/unit/pipeline-selection.untyped.spec.js.map +1 -0
- package/dist/test/unit/pipeline.spec.js +6 -54
- package/dist/test/unit/pipeline.spec.js.map +1 -1
- package/dist/test/unit/pipeline.untyped.spec.d.ts +1 -0
- package/dist/test/unit/pipeline.untyped.spec.js +21 -0
- package/dist/test/unit/pipeline.untyped.spec.js.map +1 -0
- package/dist/test/unit/selection-fixture.d.ts +15 -0
- package/dist/test/unit/selection-fixture.js +41 -0
- package/dist/test/unit/selection-fixture.js.map +1 -0
- package/dist/test/unit/selection.spec.js +45 -83
- package/dist/test/unit/selection.spec.js.map +1 -1
- package/dist/test/unit/selection.untyped.spec.d.ts +1 -0
- package/dist/test/unit/selection.untyped.spec.js +19 -0
- package/dist/test/unit/selection.untyped.spec.js.map +1 -0
- package/dist/test/unit/utils.spec.js +0 -13
- package/dist/test/unit/utils.spec.js.map +1 -1
- package/dist/test/unit/utils.untyped.spec.d.ts +1 -0
- package/dist/test/unit/utils.untyped.spec.js +21 -0
- package/dist/test/unit/utils.untyped.spec.js.map +1 -0
- package/dist/test/unit/value.spec.js +0 -4
- package/dist/test/unit/value.spec.js.map +1 -1
- package/dist/test/unit/value.untyped.spec.d.ts +1 -0
- package/dist/test/unit/value.untyped.spec.js +12 -0
- package/dist/test/unit/value.untyped.spec.js.map +1 -0
- package/dist/test/unit/writes-insert.spec.js +0 -9
- package/dist/test/unit/writes-insert.spec.js.map +1 -1
- package/dist/test/unit/writes-insert.untyped.spec.d.ts +1 -0
- package/dist/test/unit/writes-insert.untyped.spec.js +18 -0
- package/dist/test/unit/writes-insert.untyped.spec.js.map +1 -0
- package/dist/test/unit/writes-replace.spec.js +0 -3
- package/dist/test/unit/writes-replace.spec.js.map +1 -1
- package/dist/test/unit/writes-replace.untyped.spec.d.ts +1 -0
- package/dist/test/unit/writes-replace.untyped.spec.js +12 -0
- package/dist/test/unit/writes-replace.untyped.spec.js.map +1 -0
- package/dist/test/unit/writes-update.spec.js +0 -6
- package/dist/test/unit/writes-update.spec.js.map +1 -1
- package/dist/test/unit/writes-update.untyped.spec.d.ts +1 -0
- package/dist/test/unit/writes-update.untyped.spec.js +13 -0
- package/dist/test/unit/writes-update.untyped.spec.js.map +1 -0
- package/dist/test-external/native.test.js +11 -6
- package/dist/test-external/native.test.js.map +1 -1
- package/dist/test-external/reads.test.js +41 -21
- package/dist/test-external/reads.test.js.map +1 -1
- package/dist/test-external/refusals.test.js +10 -6
- package/dist/test-external/refusals.test.js.map +1 -1
- package/dist/test-external/writes.test.js +72 -42
- package/dist/test-external/writes.test.js.map +1 -1
- package/package.json +2 -2
- package/dist/test/unit/pipeline-lambda-ids.spec.js.map +0 -1
- /package/dist/test/unit/{pipeline-lambda-ids.spec.d.ts → config.untyped.spec.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -119,7 +119,7 @@ This repository documents what is specific to the PostgreSQL backend:
|
|
|
119
119
|
| Package | Supported | Tested with |
|
|
120
120
|
| ---------------------------------------- | ---------------- | ----------- |
|
|
121
121
|
| `@antelopejs/interface-core` | `>=0.1.1 <1.0.0` | `0.4.0` |
|
|
122
|
-
| `@antelopejs/interface-database` | `>=0.
|
|
122
|
+
| `@antelopejs/interface-database` | `>=0.4.0 <0.5.0` | `0.4.0` |
|
|
123
123
|
| `@antelopejs/interface-database-catalog` | `>=0.0.3 <0.1.0` | `0.0.3` |
|
|
124
124
|
|
|
125
125
|
<!-- antelopejs-docs-compat:end -->
|
|
@@ -4,6 +4,7 @@ exports.ReviveValue = ReviveValue;
|
|
|
4
4
|
exports.DecodeRow = DecodeRow;
|
|
5
5
|
const utils_1 = require("./utils");
|
|
6
6
|
const guards_1 = require("./guards");
|
|
7
|
+
const member_1 = require("./member");
|
|
7
8
|
function InstantOf(cell) {
|
|
8
9
|
return (0, guards_1.IsNumber)(cell) || (0, guards_1.IsString)(cell)
|
|
9
10
|
? new Date(cell)
|
|
@@ -67,9 +68,7 @@ function DecodeRow(row, table) {
|
|
|
67
68
|
}
|
|
68
69
|
document[name] = ReviveValue(value, spec.type);
|
|
69
70
|
}
|
|
70
|
-
const extra = {
|
|
71
|
-
...overflow,
|
|
72
|
-
};
|
|
71
|
+
const extra = (0, member_1.IsPlainObject)(overflow) ? { ...overflow } : {};
|
|
73
72
|
delete extra[utils_1.ID_COLUMN];
|
|
74
73
|
delete extra[utils_1.INSTANCE_COLUMN];
|
|
75
74
|
return { ...document, ...extra };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/implementations/database/result.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/implementations/database/result.ts"],"names":[],"mappings":"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"}
|
package/dist/test/atomic.test.js
CHANGED
|
@@ -19,21 +19,23 @@ const update = {
|
|
|
19
19
|
patch: { value: "after", details: { kept: true } },
|
|
20
20
|
};
|
|
21
21
|
async function Seed(document = {}) {
|
|
22
|
-
await table.insert({ _id: ID, value: "before", ...document });
|
|
22
|
+
await table.insert({ _id: ID, value: "before", ...document }).run();
|
|
23
23
|
}
|
|
24
24
|
describe("atomic mutation results and scope", () => {
|
|
25
25
|
beforeEach(async () => {
|
|
26
|
-
await table.delete();
|
|
26
|
+
await table.delete().run();
|
|
27
27
|
});
|
|
28
28
|
it("persists inserted overflow revisions and replaces nested fields as a whole", async () => {
|
|
29
29
|
await Seed({ revision: "old", details: { removed: true } });
|
|
30
|
-
(0, chai_1.expect)((await table.get(ID))?.revision).to.equal("old");
|
|
31
|
-
(0, chai_1.expect)(await table.atomicMutation(ID, update)).to.equal("applied");
|
|
32
|
-
(0, chai_1.expect)(await table.get(ID)).to.include({
|
|
30
|
+
(0, chai_1.expect)((await table.get(ID).run())?.revision).to.equal("old");
|
|
31
|
+
(0, chai_1.expect)(await table.atomicMutation(ID, update).run()).to.equal("applied");
|
|
32
|
+
(0, chai_1.expect)(await table.get(ID).run()).to.include({
|
|
33
33
|
revision: "fresh",
|
|
34
34
|
value: "after",
|
|
35
35
|
});
|
|
36
|
-
const rows = await table
|
|
36
|
+
const rows = await table
|
|
37
|
+
.filter((row) => row.key("revision").eq("fresh"))
|
|
38
|
+
.run();
|
|
37
39
|
(0, chai_1.expect)(rows).to.have.length(1);
|
|
38
40
|
(0, chai_1.expect)(rows[0].revision).to.equal("fresh");
|
|
39
41
|
(0, chai_1.expect)(rows[0].details).to.deep.equal({ kept: true });
|
|
@@ -43,12 +45,12 @@ describe("atomic mutation results and scope", () => {
|
|
|
43
45
|
...update,
|
|
44
46
|
expectedRevision: { kind: "missing" },
|
|
45
47
|
};
|
|
46
|
-
(0, chai_1.expect)(await table.atomicMutation(ID, request)).to.equal("not-applied");
|
|
48
|
+
(0, chai_1.expect)(await table.atomicMutation(ID, request).run()).to.equal("not-applied");
|
|
47
49
|
await Seed({ revision: null });
|
|
48
|
-
(0, chai_1.expect)(await table.atomicMutation(ID, request)).to.equal("not-applied");
|
|
49
|
-
await table.get(ID).update({ revision: undefined });
|
|
50
|
-
(0, chai_1.expect)(await table.atomicMutation(ID, request)).to.equal("applied");
|
|
51
|
-
(0, chai_1.expect)((await table.get(ID))?.revision).to.equal("fresh");
|
|
50
|
+
(0, chai_1.expect)(await table.atomicMutation(ID, request).run()).to.equal("not-applied");
|
|
51
|
+
await table.get(ID).update({ revision: undefined }).run();
|
|
52
|
+
(0, chai_1.expect)(await table.atomicMutation(ID, request).run()).to.equal("applied");
|
|
53
|
+
(0, chai_1.expect)((await table.get(ID).run())?.revision).to.equal("fresh");
|
|
52
54
|
});
|
|
53
55
|
it("rejects missing-revision bootstrap on declared columns", async () => {
|
|
54
56
|
try {
|
|
@@ -58,7 +60,8 @@ describe("atomic mutation results and scope", () => {
|
|
|
58
60
|
.atomicMutation(ID, {
|
|
59
61
|
...update,
|
|
60
62
|
expectedRevision: { kind: "missing" },
|
|
61
|
-
})
|
|
63
|
+
})
|
|
64
|
+
.run();
|
|
62
65
|
chai_1.expect.fail("expected unsupported bootstrap");
|
|
63
66
|
}
|
|
64
67
|
catch (error) {
|
|
@@ -67,9 +70,9 @@ describe("atomic mutation results and scope", () => {
|
|
|
67
70
|
});
|
|
68
71
|
it("supports the default instance and refuses cross-instance mutation", async () => {
|
|
69
72
|
const defaults = schema.instance().table("records");
|
|
70
|
-
await defaults.delete();
|
|
71
|
-
await defaults.insert({ _id: ID, revision: "old" });
|
|
72
|
-
(0, chai_1.expect)(await defaults.atomicMutation(ID, update)).to.equal("applied");
|
|
73
|
+
await defaults.delete().run();
|
|
74
|
+
await defaults.insert({ _id: ID, revision: "old" }).run();
|
|
75
|
+
(0, chai_1.expect)(await defaults.atomicMutation(ID, update).run()).to.equal("applied");
|
|
73
76
|
(0, chai_1.expect)(() => schema
|
|
74
77
|
.instance(schema_1.CROSS_INSTANCE)
|
|
75
78
|
.table("records")
|
|
@@ -78,55 +81,69 @@ describe("atomic mutation results and scope", () => {
|
|
|
78
81
|
});
|
|
79
82
|
describe("atomic scalar equality deletes", () => {
|
|
80
83
|
beforeEach(async () => {
|
|
81
|
-
await table.delete();
|
|
84
|
+
await table.delete().run();
|
|
82
85
|
});
|
|
83
86
|
it("compares declared dates by instant and leaves a changed date untouched", async () => {
|
|
84
87
|
const declared = schema.instance().table("declared");
|
|
85
|
-
await declared.delete();
|
|
88
|
+
await declared.delete().run();
|
|
86
89
|
const updatedAt = new Date("2026-01-05T10:00:00+02:00");
|
|
87
|
-
await declared.insert({ _id: ID, updatedAt });
|
|
88
|
-
(0, chai_1.expect)(await declared
|
|
90
|
+
await declared.insert({ _id: ID, updatedAt }).run();
|
|
91
|
+
(0, chai_1.expect)(await declared
|
|
92
|
+
.atomicMutation(ID, {
|
|
89
93
|
type: "deleteIfEqual",
|
|
90
94
|
field: "updatedAt",
|
|
91
95
|
expectedValue: new Date("2026-01-05T08:00:01Z"),
|
|
92
|
-
})
|
|
93
|
-
|
|
96
|
+
})
|
|
97
|
+
.run()).to.equal("not-applied");
|
|
98
|
+
(0, chai_1.expect)(await declared
|
|
99
|
+
.atomicMutation(ID, {
|
|
94
100
|
type: "deleteIfEqual",
|
|
95
101
|
field: "updatedAt",
|
|
96
102
|
expectedValue: new Date("2026-01-05T08:00:00Z"),
|
|
97
|
-
})
|
|
103
|
+
})
|
|
104
|
+
.run()).to.equal("applied");
|
|
98
105
|
});
|
|
99
106
|
it("preserves scalar types in overflow equality and ignores missing fields", async () => {
|
|
100
107
|
await Seed({ attempts: 7, active: true });
|
|
101
|
-
(0, chai_1.expect)(await table
|
|
108
|
+
(0, chai_1.expect)(await table
|
|
109
|
+
.atomicMutation(ID, {
|
|
102
110
|
type: "deleteIfEqual",
|
|
103
111
|
field: "updatedAt",
|
|
104
112
|
expectedValue: new Date(),
|
|
105
|
-
})
|
|
106
|
-
|
|
113
|
+
})
|
|
114
|
+
.run()).to.equal("not-applied");
|
|
115
|
+
(0, chai_1.expect)(await table
|
|
116
|
+
.atomicMutation(ID, {
|
|
107
117
|
type: "deleteIfEqual",
|
|
108
118
|
field: "attempts",
|
|
109
119
|
expectedValue: "7",
|
|
110
|
-
})
|
|
111
|
-
|
|
120
|
+
})
|
|
121
|
+
.run()).to.equal("not-applied");
|
|
122
|
+
(0, chai_1.expect)(await table
|
|
123
|
+
.atomicMutation(ID, {
|
|
112
124
|
type: "deleteIfEqual",
|
|
113
125
|
field: "active",
|
|
114
126
|
expectedValue: false,
|
|
115
|
-
})
|
|
116
|
-
|
|
127
|
+
})
|
|
128
|
+
.run()).to.equal("not-applied");
|
|
129
|
+
(0, chai_1.expect)(await table
|
|
130
|
+
.atomicMutation(ID, {
|
|
117
131
|
type: "deleteIfEqual",
|
|
118
132
|
field: "attempts",
|
|
119
133
|
expectedValue: 7,
|
|
120
|
-
})
|
|
134
|
+
})
|
|
135
|
+
.run()).to.equal("applied");
|
|
121
136
|
});
|
|
122
137
|
it("matches dates stored in overflow by the native insert compiler", async () => {
|
|
123
138
|
const updatedAt = new Date("2026-02-12T03:04:05Z");
|
|
124
139
|
await Seed({ updatedAt });
|
|
125
|
-
(0, chai_1.expect)(await table
|
|
140
|
+
(0, chai_1.expect)(await table
|
|
141
|
+
.atomicMutation(ID, {
|
|
126
142
|
type: "deleteIfEqual",
|
|
127
143
|
field: "updatedAt",
|
|
128
144
|
expectedValue: updatedAt,
|
|
129
|
-
})
|
|
145
|
+
})
|
|
146
|
+
.run()).to.equal("applied");
|
|
130
147
|
});
|
|
131
148
|
});
|
|
132
149
|
//# sourceMappingURL=atomic.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atomic.test.js","sourceRoot":"","sources":["../../src/test/atomic.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAE9B,kEAA+E;AAiB/E,MAAM,MAAM,GAAG,IAAI,eAAM,CAAS,gBAAgB,EAAE;IAClD,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IACrD,QAAQ,EAAE;QACR,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE;QAClE,OAAO,EAAE,EAAE;KACZ;CACF,CAAC,CAAC;AACH,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACzD,MAAM,EAAE,GAAG,KAAK,CAAC;AACjB,MAAM,MAAM,GAA2B;IACrC,IAAI,EAAE,QAAQ;IACd,aAAa,EAAE,UAAU;IACzB,gBAAgB,EAAE,KAAK;IACvB,YAAY,EAAE,OAAO;IACrB,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;CACnD,CAAC;AAEF,KAAK,UAAU,IAAI,CAAC,WAA8B,EAAE;IAClD,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"atomic.test.js","sourceRoot":"","sources":["../../src/test/atomic.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,34 +76,38 @@ async function Compete(query, winner) {
|
|
|
76
76
|
}
|
|
77
77
|
describe("legacy conditional writes under contention", () => {
|
|
78
78
|
beforeEach(async () => {
|
|
79
|
-
await table.delete();
|
|
80
|
-
await table
|
|
79
|
+
await table.delete().run();
|
|
80
|
+
await table
|
|
81
|
+
.insert({
|
|
81
82
|
_id: ID,
|
|
82
83
|
revision: "old",
|
|
83
84
|
value: "initial",
|
|
84
|
-
})
|
|
85
|
+
})
|
|
86
|
+
.run();
|
|
85
87
|
});
|
|
86
88
|
it("reproduces two different patches matching one stale revision", async () => {
|
|
87
89
|
const result = await Compete(table
|
|
88
90
|
.filter((row) => row.key("revision").eq("old"))
|
|
89
91
|
.update({ revision: "next", value: "writer-b" }));
|
|
90
92
|
(0, chai_1.expect)(result).to.equal(1);
|
|
91
|
-
(0, chai_1.expect)((await table.get(ID))?.value).to.equal("writer-b");
|
|
93
|
+
(0, chai_1.expect)((await table.get(ID).run())?.value).to.equal("writer-b");
|
|
92
94
|
});
|
|
93
95
|
it("reproduces a stale conditional delete removing an updated row", async () => {
|
|
94
96
|
const result = await Compete(table.filter((row) => row.key("revision").eq("old")).delete());
|
|
95
97
|
(0, chai_1.expect)(result).to.equal(1);
|
|
96
|
-
(0, chai_1.expect)(await table.get(ID)).to.equal(undefined);
|
|
98
|
+
(0, chai_1.expect)(await table.get(ID).run()).to.equal(undefined);
|
|
97
99
|
});
|
|
98
100
|
});
|
|
99
101
|
describe("atomic mutations under contention", () => {
|
|
100
102
|
beforeEach(async () => {
|
|
101
|
-
await table.delete();
|
|
102
|
-
await table
|
|
103
|
+
await table.delete().run();
|
|
104
|
+
await table
|
|
105
|
+
.insert({
|
|
103
106
|
_id: ID,
|
|
104
107
|
revision: "old",
|
|
105
108
|
value: "initial",
|
|
106
|
-
})
|
|
109
|
+
})
|
|
110
|
+
.run();
|
|
107
111
|
});
|
|
108
112
|
function Winner() {
|
|
109
113
|
return table.atomicMutation(ID, {
|
|
@@ -123,7 +127,7 @@ describe("atomic mutations under contention", () => {
|
|
|
123
127
|
patch: { value: "writer-b" },
|
|
124
128
|
});
|
|
125
129
|
(0, chai_1.expect)(await Compete(second, Winner())).to.equal("not-applied");
|
|
126
|
-
const record = await table.get(ID);
|
|
130
|
+
const record = await table.get(ID).run();
|
|
127
131
|
(0, chai_1.expect)(record?.revision).to.equal("next-a");
|
|
128
132
|
(0, chai_1.expect)(record?.value).to.equal("writer-a");
|
|
129
133
|
});
|
|
@@ -134,7 +138,7 @@ describe("atomic mutations under contention", () => {
|
|
|
134
138
|
expectedRevision: "old",
|
|
135
139
|
});
|
|
136
140
|
(0, chai_1.expect)(await Compete(second, Winner())).to.equal("not-applied");
|
|
137
|
-
(0, chai_1.expect)((await table.get(ID))?.value).to.equal("writer-a");
|
|
141
|
+
(0, chai_1.expect)((await table.get(ID).run())?.value).to.equal("writer-a");
|
|
138
142
|
});
|
|
139
143
|
it("rechecks scalar equality after a concurrent update", async () => {
|
|
140
144
|
const second = table.atomicMutation(ID, {
|
|
@@ -143,12 +147,12 @@ describe("atomic mutations under contention", () => {
|
|
|
143
147
|
expectedValue: "initial",
|
|
144
148
|
});
|
|
145
149
|
(0, chai_1.expect)(await Compete(second, Winner())).to.equal("not-applied");
|
|
146
|
-
(0, chai_1.expect)((await table.get(ID))?.value).to.equal("writer-a");
|
|
150
|
+
(0, chai_1.expect)((await table.get(ID).run())?.value).to.equal("writer-a");
|
|
147
151
|
});
|
|
148
152
|
it("allows only one bootstrap of a missing overflow revision", async () => {
|
|
149
153
|
const overflow = schema.instance("tenant").table("overflow");
|
|
150
|
-
await overflow.delete();
|
|
151
|
-
await overflow.insert({ _id: ID, value: "initial" });
|
|
154
|
+
await overflow.delete().run();
|
|
155
|
+
await overflow.insert({ _id: ID, value: "initial" }).run();
|
|
152
156
|
const request = {
|
|
153
157
|
type: "update",
|
|
154
158
|
revisionField: "revision",
|
|
@@ -163,8 +167,8 @@ describe("atomic mutations under contention", () => {
|
|
|
163
167
|
patch: { value: "writer-b" },
|
|
164
168
|
});
|
|
165
169
|
(0, chai_1.expect)(await Compete(second, first)).to.equal("not-applied");
|
|
166
|
-
(0, chai_1.expect)((await overflow.get(ID))?.revision).to.equal("next-a");
|
|
167
|
-
(0, chai_1.expect)((await overflow.get(ID))?.value).to.equal("writer-a");
|
|
170
|
+
(0, chai_1.expect)((await overflow.get(ID).run())?.revision).to.equal("next-a");
|
|
171
|
+
(0, chai_1.expect)((await overflow.get(ID).run())?.value).to.equal("writer-a");
|
|
168
172
|
});
|
|
169
173
|
it("reports unknown when the committed response is lost without retrying", async () => {
|
|
170
174
|
const statement = Compile(Winner());
|
|
@@ -176,7 +180,7 @@ describe("atomic mutations under contention", () => {
|
|
|
176
180
|
});
|
|
177
181
|
(0, chai_1.expect)(outcome).to.equal("unknown");
|
|
178
182
|
(0, chai_1.expect)(calls).to.equal(1);
|
|
179
|
-
(0, chai_1.expect)((await table.get(ID))?.revision).to.equal("next-a");
|
|
183
|
+
(0, chai_1.expect)((await table.get(ID).run())?.revision).to.equal("next-a");
|
|
180
184
|
});
|
|
181
185
|
});
|
|
182
186
|
//# sourceMappingURL=contention.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contention.test.js","sourceRoot":"","sources":["../../src/test/contention.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"contention.test.js","sourceRoot":"","sources":["../../src/test/contention.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,8 +23,8 @@ async function Fresh(schemaId) {
|
|
|
23
23
|
await (0, connection_1.Query)(`DROP SCHEMA IF EXISTS ${(0, sql_1.QuoteIdentifier)((0, identifier_1.SchemaName)(schemaId))} CASCADE`);
|
|
24
24
|
const schema = new schema_1.Schema(schemaId, DEFINITION);
|
|
25
25
|
await (0, schema_2.WaitForIndexes)(schemaId);
|
|
26
|
-
await schema.createInstance(ALPHA);
|
|
27
|
-
await schema.createInstance(BETA);
|
|
26
|
+
await schema.createInstance(ALPHA).run();
|
|
27
|
+
await schema.createInstance(BETA).run();
|
|
28
28
|
return schema;
|
|
29
29
|
}
|
|
30
30
|
function Accounts(schema, instance = ALPHA) {
|
|
@@ -35,7 +35,7 @@ function Row(id, email, seat) {
|
|
|
35
35
|
}
|
|
36
36
|
async function Refusal(write) {
|
|
37
37
|
try {
|
|
38
|
-
await write;
|
|
38
|
+
await write.run();
|
|
39
39
|
}
|
|
40
40
|
catch (err) {
|
|
41
41
|
if (!(err instanceof Error))
|
|
@@ -59,45 +59,65 @@ describe("duplicate keys", () => {
|
|
|
59
59
|
schema = await Fresh("duplicate_keys");
|
|
60
60
|
});
|
|
61
61
|
it("refuses a second row with the same _id as a duplicate of _id", async () => {
|
|
62
|
-
await Accounts(schema)
|
|
62
|
+
await Accounts(schema)
|
|
63
|
+
.insert(Row("a", "a@x", 1))
|
|
64
|
+
.run();
|
|
63
65
|
await expectDuplicate(Accounts(schema).insert(Row("a", "other@x", 2)), "_id", ["_id"]);
|
|
64
66
|
});
|
|
65
67
|
it("upserts on _id under a conflict mode instead of refusing", async () => {
|
|
66
|
-
await Accounts(schema)
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
await Accounts(schema)
|
|
69
|
+
.insert(Row("a", "a@x", 1))
|
|
70
|
+
.run();
|
|
71
|
+
await Accounts(schema)
|
|
72
|
+
.insert(Row("a", "b@x", 2), { conflict: "update" })
|
|
73
|
+
.run();
|
|
74
|
+
const row = await Accounts(schema).get("a").run();
|
|
69
75
|
(0, chai_1.expect)(row?.email).to.equal("b@x");
|
|
70
76
|
});
|
|
71
77
|
it("refuses an insert that clashes on a unique secondary index, conflict mode or not", async () => {
|
|
72
|
-
await Accounts(schema)
|
|
78
|
+
await Accounts(schema)
|
|
79
|
+
.insert(Row("a", "a@x", 1))
|
|
80
|
+
.run();
|
|
73
81
|
await expectDuplicate(Accounts(schema).insert(Row("b", "a@x", 2)), "email", ["email"]);
|
|
74
82
|
await expectDuplicate(Accounts(schema).insert(Row("b", "a@x", 2), { conflict: "update" }), "email", ["email"]);
|
|
75
|
-
(0, chai_1.expect)(await Accounts(schema).count()).to.equal(1);
|
|
83
|
+
(0, chai_1.expect)(await Accounts(schema).count().run()).to.equal(1);
|
|
76
84
|
});
|
|
77
85
|
it("refuses an update and a replace that clash on a unique index", async () => {
|
|
78
|
-
await Accounts(schema)
|
|
86
|
+
await Accounts(schema)
|
|
87
|
+
.insert([Row("a", "a@x", 1), Row("b", "b@x", 2)])
|
|
88
|
+
.run();
|
|
79
89
|
await expectDuplicate(Accounts(schema).get("b").update({ email: "a@x" }), "email", ["email"]);
|
|
80
90
|
await expectDuplicate(Accounts(schema)
|
|
81
91
|
.get("b")
|
|
82
92
|
.replace(Row("b", "b@x", 1)), "teamSeat", ["team", "seat"]);
|
|
83
|
-
const row = await Accounts(schema).get("b");
|
|
93
|
+
const row = await Accounts(schema).get("b").run();
|
|
84
94
|
(0, chai_1.expect)(row).to.include({ email: "b@x", seat: 2 });
|
|
85
95
|
});
|
|
86
96
|
it("refuses a compound key only when every field matches", async () => {
|
|
87
|
-
await Accounts(schema)
|
|
88
|
-
|
|
89
|
-
|
|
97
|
+
await Accounts(schema)
|
|
98
|
+
.insert(Row("a", "a@x", 1))
|
|
99
|
+
.run();
|
|
100
|
+
await Accounts(schema)
|
|
101
|
+
.insert(Row("b", "b@x", 2))
|
|
102
|
+
.run();
|
|
103
|
+
await Accounts(schema)
|
|
104
|
+
.insert({
|
|
90
105
|
_id: "c",
|
|
91
106
|
email: "c@x",
|
|
92
107
|
team: "ops",
|
|
93
108
|
seat: 1,
|
|
94
|
-
})
|
|
109
|
+
})
|
|
110
|
+
.run();
|
|
95
111
|
await expectDuplicate(Accounts(schema).insert(Row("d", "d@x", 1)), "teamSeat", ["team", "seat"]);
|
|
96
112
|
});
|
|
97
113
|
it("accepts the same key in two instances, crossInstance included", async () => {
|
|
98
|
-
await Accounts(schema, ALPHA)
|
|
99
|
-
|
|
100
|
-
|
|
114
|
+
await Accounts(schema, ALPHA)
|
|
115
|
+
.insert(Row("a", "a@x", 1))
|
|
116
|
+
.run();
|
|
117
|
+
await Accounts(schema, BETA)
|
|
118
|
+
.insert(Row("a", "a@x", 1))
|
|
119
|
+
.run();
|
|
120
|
+
(0, chai_1.expect)(await Accounts(schema, BETA).count().run()).to.equal(1);
|
|
101
121
|
});
|
|
102
122
|
});
|
|
103
123
|
//# sourceMappingURL=duplicate-key.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplicate-key.test.js","sourceRoot":"","sources":["../../src/test/duplicate-key.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,
|
|
1
|
+
{"version":3,"file":"duplicate-key.test.js","sourceRoot":"","sources":["../../src/test/duplicate-key.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -104,13 +104,13 @@ async function ReleaseWrites(client) {
|
|
|
104
104
|
}
|
|
105
105
|
async function Seed(schema, rowsPerInstance) {
|
|
106
106
|
for (const instance of INSTANCES) {
|
|
107
|
-
await schema.createInstance(instance);
|
|
107
|
+
await schema.createInstance(instance).run();
|
|
108
108
|
const rows = Array.from({ length: rowsPerInstance }, (_, n) => ({
|
|
109
109
|
_id: `${instance}-${n}`,
|
|
110
110
|
sku: `sku-${n}`,
|
|
111
111
|
price: n,
|
|
112
112
|
}));
|
|
113
|
-
await schema.instance(instance).table("items").insert(rows);
|
|
113
|
+
await schema.instance(instance).table("items").insert(rows).run();
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
function ById(left, right) {
|
|
@@ -120,13 +120,14 @@ function Lookup(schema, instance) {
|
|
|
120
120
|
return schema.instance(instance).table("items").getAll(LOOKED_UP_SKU, "sku");
|
|
121
121
|
}
|
|
122
122
|
async function ReadEverything(schema) {
|
|
123
|
-
const scoped = await Lookup(schema, SCOPED_INSTANCE);
|
|
124
|
-
const crossInstance = await Lookup(schema, schema_1.CROSS_INSTANCE);
|
|
123
|
+
const scoped = await Lookup(schema, SCOPED_INSTANCE).run();
|
|
124
|
+
const crossInstance = await Lookup(schema, schema_1.CROSS_INSTANCE).run();
|
|
125
125
|
const ordered = await schema
|
|
126
126
|
.instance(schema_1.CROSS_INSTANCE)
|
|
127
127
|
.table("items")
|
|
128
128
|
.orderBy("price")
|
|
129
|
-
.slice(0, INSTANCES.length)
|
|
129
|
+
.slice(0, INSTANCES.length)
|
|
130
|
+
.run();
|
|
130
131
|
return {
|
|
131
132
|
scoped: [...scoped].sort(ById),
|
|
132
133
|
crossInstance: [...crossInstance].sort(ById),
|
|
@@ -283,8 +284,8 @@ describe("cross-instance reads of secondary indexes", () => {
|
|
|
283
284
|
const scopedPlan = await Explain(schema, SCOPED_INSTANCE);
|
|
284
285
|
(0, chai_1.expect)(scopedPlan).to.match(/items_sku\b/);
|
|
285
286
|
(0, chai_1.expect)(scopedPlan).to.not.contain("items_sku__g");
|
|
286
|
-
const crossInstance = await Lookup(schema, schema_1.CROSS_INSTANCE);
|
|
287
|
-
const perInstance = await Promise.all(INSTANCES.map((instance) => Lookup(schema, instance)));
|
|
287
|
+
const crossInstance = await Lookup(schema, schema_1.CROSS_INSTANCE).run();
|
|
288
|
+
const perInstance = await Promise.all(INSTANCES.map((instance) => Lookup(schema, instance).run()));
|
|
288
289
|
(0, chai_1.expect)([...crossInstance].sort(ById)).to.deep.equal(perInstance.flat().sort(ById));
|
|
289
290
|
});
|
|
290
291
|
});
|
|
@@ -296,12 +297,12 @@ describe("cross-instance reads of secondary indexes", () => {
|
|
|
296
297
|
const crossInstance = schema.instance(schema_1.CROSS_INSTANCE).table("items");
|
|
297
298
|
const scoped = schema.instance(SCOPED_INSTANCE).table("items");
|
|
298
299
|
const warnings = await CaptureWarnings(async () => {
|
|
299
|
-
await crossInstance.getAll(1, "price");
|
|
300
|
-
await crossInstance.getAll(2, "price");
|
|
301
|
-
await crossInstance.orderBy("price");
|
|
302
|
-
await crossInstance.getAll(LOOKED_UP_SKU, "sku");
|
|
303
|
-
await crossInstance.getAll(LOOKED_UP_SKU, "undeclared");
|
|
304
|
-
await scoped.getAll(1, "price");
|
|
300
|
+
await crossInstance.getAll(1, "price").run();
|
|
301
|
+
await crossInstance.getAll(2, "price").run();
|
|
302
|
+
await crossInstance.orderBy("price").run();
|
|
303
|
+
await crossInstance.getAll(LOOKED_UP_SKU, "sku").run();
|
|
304
|
+
await crossInstance.getAll(LOOKED_UP_SKU, "undeclared").run();
|
|
305
|
+
await scoped.getAll(1, "price").run();
|
|
305
306
|
});
|
|
306
307
|
(0, chai_1.expect)(warnings).to.have.lengthOf(1);
|
|
307
308
|
(0, chai_1.expect)(warnings[0]).to.contain(`'${schemaId}.items'`);
|