@antelopejs/postgres 0.4.0 → 0.4.2

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 (108) hide show
  1. package/README.md +5 -5
  2. package/dist/config.d.ts +1 -1
  3. package/dist/config.js +52 -1
  4. package/dist/config.js.map +1 -1
  5. package/dist/implementations/database/cursors.d.ts +1 -1
  6. package/dist/implementations/database/cursors.js +20 -17
  7. package/dist/implementations/database/cursors.js.map +1 -1
  8. package/dist/implementations/database/external-access.d.ts +22 -0
  9. package/dist/implementations/database/external-access.js +59 -0
  10. package/dist/implementations/database/external-access.js.map +1 -0
  11. package/dist/implementations/database/external-catalog.d.ts +0 -1
  12. package/dist/implementations/database/external-catalog.js +2 -3
  13. package/dist/implementations/database/external-catalog.js.map +1 -1
  14. package/dist/implementations/database/external-column-profile.js +19 -10
  15. package/dist/implementations/database/external-column-profile.js.map +1 -1
  16. package/dist/implementations/database/external-discovery.d.ts +1 -15
  17. package/dist/implementations/database/external-discovery.js +4 -44
  18. package/dist/implementations/database/external-discovery.js.map +1 -1
  19. package/dist/implementations/database/external-profile.d.ts +1 -1
  20. package/dist/implementations/database/external-profile.js.map +1 -1
  21. package/dist/implementations/database/external-reference.js.map +1 -1
  22. package/dist/implementations/database/external-sample.d.ts +1 -1
  23. package/dist/implementations/database/feeds.d.ts +1 -1
  24. package/dist/implementations/database/feeds.js +4 -4
  25. package/dist/implementations/database/feeds.js.map +1 -1
  26. package/dist/implementations/database/member.js.map +1 -1
  27. package/dist/implementations/database/query.d.ts +1 -1
  28. package/dist/implementations/database/query.js +2 -2
  29. package/dist/implementations/database/query.js.map +1 -1
  30. package/dist/implementations/database/schema.d.ts +1 -0
  31. package/dist/implementations/database/schema.js +4 -0
  32. package/dist/implementations/database/schema.js.map +1 -1
  33. package/dist/pg-connection-parameters.d.ts +17 -0
  34. package/dist/pg-connection-parameters.js +8 -0
  35. package/dist/pg-connection-parameters.js.map +1 -0
  36. package/dist/probe-parameters.d.ts +5 -0
  37. package/dist/probe-parameters.js +44 -0
  38. package/dist/probe-parameters.js.map +1 -0
  39. package/dist/probe-url.d.ts +9 -0
  40. package/dist/probe-url.js +54 -0
  41. package/dist/probe-url.js.map +1 -0
  42. package/dist/probe.d.ts +2 -0
  43. package/dist/probe.js +188 -0
  44. package/dist/probe.js.map +1 -0
  45. package/dist/test/convergence.test.d.ts +1 -0
  46. package/dist/test/convergence.test.js +9 -0
  47. package/dist/test/convergence.test.js.map +1 -0
  48. package/dist/test/unit/config.spec.js +1 -1
  49. package/dist/test/unit/config.spec.js.map +1 -1
  50. package/dist/test/unit/cursors-fixture.d.ts +3 -3
  51. package/dist/test/unit/cursors-fixture.js +8 -8
  52. package/dist/test/unit/cursors-fixture.js.map +1 -1
  53. package/dist/test/unit/cursors.spec.js +57 -45
  54. package/dist/test/unit/cursors.spec.js.map +1 -1
  55. package/dist/test/unit/cursors.teardown.spec.js +34 -26
  56. package/dist/test/unit/cursors.teardown.spec.js.map +1 -1
  57. package/dist/test/unit/cursors.window.spec.js +24 -11
  58. package/dist/test/unit/cursors.window.spec.js.map +1 -1
  59. package/dist/test/unit/feeds-fixture.d.ts +1 -1
  60. package/dist/test/unit/feeds-fixture.js +1 -1
  61. package/dist/test/unit/feeds-fixture.js.map +1 -1
  62. package/dist/test/unit/feeds.spec.js +49 -36
  63. package/dist/test/unit/feeds.spec.js.map +1 -1
  64. package/dist/test/unit/probe-parameters.spec.d.ts +1 -0
  65. package/dist/test/unit/probe-parameters.spec.js +17 -0
  66. package/dist/test/unit/probe-parameters.spec.js.map +1 -0
  67. package/dist/test/unit/ssl-url.spec.d.ts +1 -0
  68. package/dist/test/unit/ssl-url.spec.js +147 -0
  69. package/dist/test/unit/ssl-url.spec.js.map +1 -0
  70. package/dist/test-external/catalog.test.js +1 -4
  71. package/dist/test-external/catalog.test.js.map +1 -1
  72. package/dist/test-external/categories.test.d.ts +1 -0
  73. package/dist/test-external/categories.test.js +130 -0
  74. package/dist/test-external/categories.test.js.map +1 -0
  75. package/dist/test-external/fixture.js +7 -1
  76. package/dist/test-external/fixture.js.map +1 -1
  77. package/dist/test-external/native.test.js +8 -4
  78. package/dist/test-external/native.test.js.map +1 -1
  79. package/dist/test-external/probe-access.test.d.ts +1 -0
  80. package/dist/test-external/probe-access.test.js +90 -0
  81. package/dist/test-external/probe-access.test.js.map +1 -0
  82. package/dist/test-external/probe-closing.test.d.ts +1 -0
  83. package/dist/test-external/probe-closing.test.js +111 -0
  84. package/dist/test-external/probe-closing.test.js.map +1 -0
  85. package/dist/test-external/probe-fixture.d.ts +36 -0
  86. package/dist/test-external/probe-fixture.js +166 -0
  87. package/dist/test-external/probe-fixture.js.map +1 -0
  88. package/dist/test-external/probe-refusals.test.d.ts +1 -0
  89. package/dist/test-external/probe-refusals.test.js +110 -0
  90. package/dist/test-external/probe-refusals.test.js.map +1 -0
  91. package/dist/test-external/probe-url.test.d.ts +1 -0
  92. package/dist/test-external/probe-url.test.js +242 -0
  93. package/dist/test-external/probe-url.test.js.map +1 -0
  94. package/dist/test-external/reads.test.js +10 -5
  95. package/dist/test-external/reads.test.js.map +1 -1
  96. package/dist/test-external/refusals.test.js +2 -1
  97. package/dist/test-external/refusals.test.js.map +1 -1
  98. package/dist/test-external/registration.test.js +8 -0
  99. package/dist/test-external/registration.test.js.map +1 -1
  100. package/dist/test-external/relays.d.ts +27 -0
  101. package/dist/test-external/relays.js +176 -0
  102. package/dist/test-external/relays.js.map +1 -0
  103. package/dist/test-external/sales.d.ts +4 -1
  104. package/dist/test-external/sales.js +38 -1
  105. package/dist/test-external/sales.js.map +1 -1
  106. package/dist/test-external/writes.test.js +12 -6
  107. package/dist/test-external/writes.test.js.map +1 -1
  108. package/package.json +11 -9
package/dist/probe.js ADDED
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.probe = void 0;
4
+ const node_net_1 = require("node:net");
5
+ const pg_1 = require("pg");
6
+ const external_access_1 = require("./implementations/database/external-access");
7
+ const probe_parameters_1 = require("./probe-parameters");
8
+ const probe_url_1 = require("./probe-url");
9
+ const CLOSE_GRACE_MS = 250;
10
+ const ACCOUNT_SQL = "SELECT current_user AS role";
11
+ const READ_ONLY_SQL = "BEGIN TRANSACTION READ ONLY";
12
+ const ABORTED = "The probe was aborted.";
13
+ const REFUSALS = new Map([
14
+ ["28P01", "credentials"],
15
+ ["28000", "host"],
16
+ ["3D000", "database"],
17
+ ["42501", "database-denied"],
18
+ ]);
19
+ const PASSWORD_REQUIRED = "the server asks for a password the URL does not give";
20
+ class PasswordRequired extends Error {
21
+ constructor() {
22
+ super(PASSWORD_REQUIRED);
23
+ }
24
+ }
25
+ function Ignore() {
26
+ return undefined;
27
+ }
28
+ function WithholdPassword() {
29
+ throw new PasswordRequired();
30
+ }
31
+ function Open(url, password, timeoutMs) {
32
+ const sockets = [];
33
+ const client = new pg_1.Client({
34
+ connectionString: url,
35
+ connectionTimeoutMillis: timeoutMs,
36
+ stream: () => {
37
+ const socket = new node_net_1.Socket();
38
+ sockets.push(socket);
39
+ return socket;
40
+ },
41
+ });
42
+ (0, probe_parameters_1.OverrideParameters)(client, timeoutMs);
43
+ Object.defineProperty(client, "password", {
44
+ configurable: true,
45
+ enumerable: false,
46
+ writable: true,
47
+ value: password || WithholdPassword,
48
+ });
49
+ client.on("error", Ignore);
50
+ return { client, sockets };
51
+ }
52
+ function Shut(session) {
53
+ for (const socket of session.sockets) {
54
+ socket.destroy();
55
+ }
56
+ }
57
+ function Close(session, signal) {
58
+ if (signal.aborted) {
59
+ Shut(session);
60
+ return;
61
+ }
62
+ const settle = () => {
63
+ clearTimeout(timer);
64
+ signal.removeEventListener("abort", shut);
65
+ };
66
+ const shut = () => {
67
+ settle();
68
+ Shut(session);
69
+ };
70
+ const timer = setTimeout(shut, CLOSE_GRACE_MS);
71
+ timer.unref();
72
+ signal.addEventListener("abort", shut, { once: true });
73
+ session.client.end().then(settle, Ignore);
74
+ }
75
+ function Privileges(access) {
76
+ return {
77
+ canRead: access.length === 0 ||
78
+ access.some(({ unmappable }) => unmappable === undefined),
79
+ canWrite: access.some(({ writes }) => writes.insert || writes.update || writes.delete),
80
+ };
81
+ }
82
+ function MessageOf(err) {
83
+ if (!(err instanceof Error)) {
84
+ return String(err);
85
+ }
86
+ if (err.message || !(err instanceof AggregateError)) {
87
+ return err.message;
88
+ }
89
+ const causes = err.errors;
90
+ return causes.map(MessageOf).join("; ");
91
+ }
92
+ function Unanswered(err) {
93
+ return { outcome: "unreachable", message: MessageOf(err) };
94
+ }
95
+ function Refusal(err) {
96
+ if (err instanceof pg_1.DatabaseError) {
97
+ const refusal = (err.code && REFUSALS.get(err.code)) || "other";
98
+ return { outcome: "refused", refusal, message: err.message };
99
+ }
100
+ if (err instanceof PasswordRequired) {
101
+ return {
102
+ outcome: "refused",
103
+ refusal: "sign-in-required",
104
+ message: err.message,
105
+ };
106
+ }
107
+ return Unanswered(err);
108
+ }
109
+ async function Read(client) {
110
+ const started = performance.now();
111
+ const answer = {
112
+ outcome: "signed-in",
113
+ latencyMs: 0,
114
+ canRead: false,
115
+ canWrite: false,
116
+ };
117
+ try {
118
+ const account = await client.query(ACCOUNT_SQL);
119
+ answer.latencyMs = Math.ceil(performance.now() - started);
120
+ answer.user = account.rows[0].role;
121
+ await client.query(READ_ONLY_SQL);
122
+ const relations = await client.query(external_access_1.PRIVILEGES_SQL, [
123
+ null,
124
+ ]);
125
+ return { ...answer, ...Privileges(relations.rows.map(external_access_1.AccessOf)) };
126
+ }
127
+ catch (err) {
128
+ if (!(err instanceof pg_1.DatabaseError)) {
129
+ return Unanswered(err);
130
+ }
131
+ const latencyMs = answer.latencyMs || Math.ceil(performance.now() - started);
132
+ return { ...answer, latencyMs, unreadable: "cannot-list" };
133
+ }
134
+ }
135
+ async function SignIn(session) {
136
+ try {
137
+ await session.client.connect();
138
+ }
139
+ catch (err) {
140
+ return Refusal(err);
141
+ }
142
+ return Read(session.client);
143
+ }
144
+ function AbortedAnswer() {
145
+ return { outcome: "unreachable", message: ABORTED };
146
+ }
147
+ function WhenAborted(signal, onAbort) {
148
+ let withdraw = Ignore;
149
+ const answer = new Promise((resolve) => {
150
+ const abort = () => {
151
+ onAbort();
152
+ resolve(AbortedAnswer());
153
+ };
154
+ signal.addEventListener("abort", abort, { once: true });
155
+ withdraw = () => signal.removeEventListener("abort", abort);
156
+ });
157
+ return { answer, withdraw };
158
+ }
159
+ const probe = async ({ url, timeoutMs, signal }) => {
160
+ if (signal.aborted) {
161
+ return AbortedAnswer();
162
+ }
163
+ let session;
164
+ const aborted = WhenAborted(signal, () => session && Shut(session));
165
+ try {
166
+ const reading = (0, probe_url_1.ReadUrl)(url);
167
+ if (reading.kind === "refused") {
168
+ return { outcome: "refused", refusal: "other", message: reading.message };
169
+ }
170
+ session = Open(url, reading.url.password, timeoutMs);
171
+ const sslRefusal = (0, probe_parameters_1.SslRefusal)(session.client);
172
+ if (sslRefusal) {
173
+ return { outcome: "refused", refusal: "other", message: sslRefusal };
174
+ }
175
+ return await Promise.race([SignIn(session), aborted.answer]);
176
+ }
177
+ catch (err) {
178
+ return Unanswered(err);
179
+ }
180
+ finally {
181
+ aborted.withdraw();
182
+ if (session) {
183
+ Close(session, signal);
184
+ }
185
+ }
186
+ };
187
+ exports.probe = probe;
188
+ //# sourceMappingURL=probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe.js","sourceRoot":"","sources":["../src/probe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schema_1 = require("../implementations/database/schema");
4
+ const STARTUP_CONVERGENCE_MS = 30_000;
5
+ before(async function () {
6
+ this.timeout(STARTUP_CONVERGENCE_MS);
7
+ await (0, schema_1.WaitForAllIndexes)();
8
+ });
9
+ //# sourceMappingURL=convergence.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convergence.test.js","sourceRoot":"","sources":["../../src/test/convergence.test.ts"],"names":[],"mappings":";;AAAA,+DAAuE;AAOvE,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAEtC,MAAM,CAAC,KAAK;IACV,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACrC,MAAM,IAAA,0BAAiB,GAAE,CAAC;AAC5B,CAAC,CAAC,CAAC"}
@@ -4,7 +4,7 @@ const chai_1 = require("chai");
4
4
  const spec_fixture_1 = require("./spec-fixture");
5
5
  const config_fixture_1 = require("./config-fixture");
6
6
  const config_1 = require("../../config");
7
- const DEFAULT_CURSOR_BATCH_SIZE = 100;
7
+ const DEFAULT_CURSOR_BATCH_SIZE = 1000;
8
8
  const DEFAULT_CURSOR_IDLE_TIMEOUT_MS = 60_000;
9
9
  const DEFAULT_CHANGE_RETENTION_MS = 300_000;
10
10
  const DEFAULT_CHANGE_BATCH_SIZE = 256;
@@ -1 +1 @@
1
- {"version":3,"file":"config.spec.js","sourceRoot":"","sources":["../../../src/test/unit/config.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.spec.js","sourceRoot":"","sources":["../../../src/test/unit/config.spec.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ export declare const REAPING: Options;
22
22
  export declare const PROBING: Options;
23
23
  export declare const NO_VALUES: unknown[];
24
24
  export declare const STUB_FAILURE = "the stub client refused this statement";
25
- export declare const NEVER_ENDED = "the cursor never answered done";
25
+ export declare const NEVER_ENDED = "the cursor never answered an empty batch";
26
26
  export declare const NEVER_REJECTED = "the read was expected to reject";
27
27
  export declare const NEVER_ARRIVED = "no read arrived while the sweep was running";
28
28
  export declare const NEVER_HELD = "the stub never reached the statement it was told to hold";
@@ -59,8 +59,8 @@ export declare function Reopening(log: Recording, ...values: number[]): CursorOp
59
59
  export declare let lastReqId: number;
60
60
  export declare let claimed: number[];
61
61
  export declare function NextReqId(): number;
62
- export declare function Read(reqId: number, open: CursorOpener, options?: Options): Promise<IteratorResult<unknown, void>>;
63
- export declare function Drain(reqId: number, open: CursorOpener): Promise<unknown[]>;
62
+ export declare function Read(reqId: number, open: CursorOpener, options?: Options): Promise<unknown[]>;
63
+ export declare function Drain(reqId: number, open: CursorOpener): Promise<unknown[][]>;
64
64
  export declare function Rejection(read: Promise<unknown>): Promise<Error>;
65
65
  export declare function Delay(ms: number): Promise<void>;
66
66
  export declare function Settle(): Promise<void>;
@@ -52,7 +52,7 @@ exports.PROBING = {
52
52
  };
53
53
  exports.NO_VALUES = [];
54
54
  exports.STUB_FAILURE = "the stub client refused this statement";
55
- exports.NEVER_ENDED = "the cursor never answered done";
55
+ exports.NEVER_ENDED = "the cursor never answered an empty batch";
56
56
  exports.NEVER_REJECTED = "the read was expected to reject";
57
57
  exports.NEVER_ARRIVED = "no read arrived while the sweep was running";
58
58
  exports.NEVER_HELD = "the stub never reached the statement it was told to hold";
@@ -147,16 +147,16 @@ function NextReqId() {
147
147
  return exports.lastReqId;
148
148
  }
149
149
  function Read(reqId, open, options = exports.OPTIONS) {
150
- return (0, spec_fixture_1.WithOptions)(options, () => (0, cursors_1.ReadCursorRow)(reqId, open));
150
+ return (0, spec_fixture_1.WithOptions)(options, () => (0, cursors_1.ReadCursorBatch)(reqId, open));
151
151
  }
152
152
  async function Drain(reqId, open) {
153
- const values = [];
154
- while (values.length < exports.DRAIN_LIMIT) {
155
- const next = await Read(reqId, open);
156
- if (next.done) {
157
- return values;
153
+ const batches = [];
154
+ while (batches.length < exports.DRAIN_LIMIT) {
155
+ const batch = await Read(reqId, open);
156
+ if (batch.length === 0) {
157
+ return batches;
158
158
  }
159
- values.push(next.value);
159
+ batches.push(batch);
160
160
  }
161
161
  throw new Error(exports.NEVER_ENDED);
162
162
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cursors-fixture.js","sourceRoot":"","sources":["../../../src/test/unit/cursors-fixture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cursors-fixture.js","sourceRoot":"","sources":["../../../src/test/unit/cursors-fixture.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,8 @@ describe("the cursor registry", () => {
13
13
  (0, chai_1.expect)(upperId).to.equal(cursors_fixture_1.FIRST_SPEC_REQ_ID);
14
14
  const openUpper = (0, cursors_fixture_1.Reopening)(upper, 1, 2);
15
15
  const openLower = (0, cursors_fixture_1.Reopening)(lower, 3, 4);
16
- (0, chai_1.expect)(await (0, cursors_fixture_1.Drain)(upperId, openUpper)).to.deep.equal([1, 2]);
17
- (0, chai_1.expect)(await (0, cursors_fixture_1.Drain)(lowerId, openLower)).to.deep.equal([3, 4]);
16
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Drain)(upperId, openUpper)).to.deep.equal([[1, 2]]);
17
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Drain)(lowerId, openLower)).to.deep.equal([[3, 4]]);
18
18
  await (0, cursors_fixture_1.OverflowEndings)();
19
19
  const refusedUpper = await (0, cursors_fixture_1.Rejection)((0, cursors_fixture_1.Read)(upperId, openUpper));
20
20
  const refusedLower = await (0, cursors_fixture_1.Rejection)((0, cursors_fixture_1.Read)(lowerId, openLower));
@@ -25,10 +25,13 @@ describe("the cursor registry", () => {
25
25
  (0, chai_1.expect)([upper.acquires, lower.acquires]).to.deep.equal([1, 1]);
26
26
  (0, chai_1.expect)((0, cursors_1.CountOpenCursors)()).to.equal(cursors_fixture_1.baseline);
27
27
  });
28
- it("yields a full batch and then a short one, in order, and then ends", async () => {
28
+ it("hands over a full batch and then a short one, each in one read, and then ends", async () => {
29
29
  const log = (0, cursors_fixture_1.Recorder)();
30
30
  const open = (0, cursors_fixture_1.Requesting)(log, [(0, cursors_fixture_1.Rows)(1, 2, 3), (0, cursors_fixture_1.Rows)(4, 5)]);
31
- (0, chai_1.expect)(await (0, cursors_fixture_1.Drain)((0, cursors_fixture_1.NextReqId)(), open)).to.deep.equal([1, 2, 3, 4, 5]);
31
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Drain)((0, cursors_fixture_1.NextReqId)(), open)).to.deep.equal([
32
+ [1, 2, 3],
33
+ [4, 5],
34
+ ]);
32
35
  (0, chai_1.expect)(log.statements).to.deep.equal([
33
36
  cursors_fixture_1.BEGIN,
34
37
  cursors_fixture_1.DECLARE,
@@ -43,7 +46,7 @@ describe("the cursor registry", () => {
43
46
  it("ends after a short first batch without fetching a second time", async () => {
44
47
  const log = (0, cursors_fixture_1.Recorder)();
45
48
  const open = (0, cursors_fixture_1.Requesting)(log, [(0, cursors_fixture_1.Rows)(1, 2)]);
46
- (0, chai_1.expect)(await (0, cursors_fixture_1.Drain)((0, cursors_fixture_1.NextReqId)(), open)).to.deep.equal([1, 2]);
49
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Drain)((0, cursors_fixture_1.NextReqId)(), open)).to.deep.equal([[1, 2]]);
47
50
  (0, chai_1.expect)(log.statements).to.deep.equal([
48
51
  cursors_fixture_1.BEGIN,
49
52
  cursors_fixture_1.DECLARE,
@@ -53,12 +56,10 @@ describe("the cursor registry", () => {
53
56
  cursors_fixture_1.RELEASE,
54
57
  ]);
55
58
  });
56
- it("ends immediately over a cursor that read no rows", async () => {
59
+ it("answers an empty first batch over a cursor that read no rows", async () => {
57
60
  const log = (0, cursors_fixture_1.Recorder)();
58
61
  const open = (0, cursors_fixture_1.Requesting)(log, [(0, cursors_fixture_1.Rows)()]);
59
- const next = await (0, cursors_fixture_1.Read)((0, cursors_fixture_1.NextReqId)(), open);
60
- (0, chai_1.expect)(next.done).to.equal(true);
61
- (0, chai_1.expect)(next.value).to.equal(undefined);
62
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Read)((0, cursors_fixture_1.NextReqId)(), open)).to.deep.equal([]);
62
63
  (0, chai_1.expect)(log.statements).to.deep.equal([
63
64
  cursors_fixture_1.BEGIN,
64
65
  cursors_fixture_1.DECLARE,
@@ -82,44 +83,41 @@ describe("the cursor registry", () => {
82
83
  });
83
84
  describe("the cursor registry", () => {
84
85
  (0, cursors_fixture_1.GuardTheRegistry)();
85
- it("holds one registration while iterating and none once exhausted", async () => {
86
+ it("holds one registration while iterating and releases it on the empty batch", async () => {
86
87
  const log = (0, cursors_fixture_1.Recorder)();
87
88
  const reqId = (0, cursors_fixture_1.NextReqId)();
88
- const open = (0, cursors_fixture_1.Requesting)(log, [(0, cursors_fixture_1.Rows)(1, 2)]);
89
- await (0, cursors_fixture_1.Read)(reqId, open);
89
+ const open = (0, cursors_fixture_1.Requesting)(log, [(0, cursors_fixture_1.Rows)(1, 2, 3), (0, cursors_fixture_1.Rows)(4)]);
90
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Read)(reqId, open)).to.deep.equal([1, 2, 3]);
90
91
  (0, chai_1.expect)((0, cursors_1.CountOpenCursors)()).to.equal(cursors_fixture_1.baseline + 1);
91
- await (0, cursors_fixture_1.Read)(reqId, open);
92
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Read)(reqId, open)).to.deep.equal([4]);
92
93
  (0, chai_1.expect)((0, cursors_1.CountOpenCursors)()).to.equal(cursors_fixture_1.baseline + 1);
93
- (0, chai_1.expect)((await (0, cursors_fixture_1.Read)(reqId, open)).done).to.equal(true);
94
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Read)(reqId, open)).to.deep.equal([]);
94
95
  (0, chai_1.expect)((0, cursors_1.CountOpenCursors)()).to.equal(cursors_fixture_1.baseline);
95
96
  (0, chai_1.expect)(log.releases).to.equal(1);
96
97
  });
97
- it("stays done after exhaustion, acquiring nothing", async () => {
98
+ it("stays exhausted after its empty batch, acquiring nothing", async () => {
98
99
  const log = (0, cursors_fixture_1.Recorder)();
99
100
  const reqId = (0, cursors_fixture_1.NextReqId)();
100
101
  const open = (0, cursors_fixture_1.Requesting)(log, [(0, cursors_fixture_1.Rows)(1)]);
101
- (0, chai_1.expect)(await (0, cursors_fixture_1.Drain)(reqId, open)).to.deep.equal([1]);
102
- const after = await (0, cursors_fixture_1.Read)(reqId, open);
103
- (0, chai_1.expect)(after.done).to.equal(true);
104
- (0, chai_1.expect)(after.value).to.equal(undefined);
102
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Drain)(reqId, open)).to.deep.equal([[1]]);
103
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Read)(reqId, open)).to.deep.equal([]);
105
104
  (0, chai_1.expect)(log.acquires).to.equal(1);
106
105
  (0, chai_1.expect)((0, cursors_fixture_1.Count)(log, cursors_fixture_1.BEGIN)).to.equal(1);
107
106
  (0, chai_1.expect)((0, cursors_fixture_1.Count)(log, cursors_fixture_1.DECLARE)).to.equal(1);
108
107
  (0, chai_1.expect)(log.releases).to.equal(1);
109
108
  });
110
- it("stays done after an explicit close, acquiring nothing", async () => {
109
+ it("answers an empty batch after an explicit close, acquiring nothing", async () => {
111
110
  const log = (0, cursors_fixture_1.Recorder)();
112
111
  const reqId = (0, cursors_fixture_1.NextReqId)();
113
112
  const open = (0, cursors_fixture_1.Requesting)(log, [(0, cursors_fixture_1.Rows)(1, 2, 3), (0, cursors_fixture_1.Rows)(4)]);
114
- (0, chai_1.expect)((await (0, cursors_fixture_1.Read)(reqId, open)).value).to.equal(1);
113
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Read)(reqId, open)).to.deep.equal([1, 2, 3]);
115
114
  await (0, cursors_1.CloseOneCursor)(reqId);
116
- const after = await (0, cursors_fixture_1.Read)(reqId, open);
117
- (0, chai_1.expect)(after.done).to.equal(true);
115
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Read)(reqId, open)).to.deep.equal([]);
118
116
  (0, chai_1.expect)(log.acquires).to.equal(1);
119
117
  (0, chai_1.expect)(log.releases).to.equal(1);
120
118
  (0, chai_1.expect)((0, cursors_fixture_1.Count)(log, cursors_fixture_1.FETCH)).to.equal(1);
121
119
  });
122
- it("answers four concurrent reads over a two-row cursor on one client", async () => {
120
+ it("answers four concurrent reads over a one-batch cursor on one client", async () => {
123
121
  const log = (0, cursors_fixture_1.Recorder)();
124
122
  const reqId = (0, cursors_fixture_1.NextReqId)();
125
123
  const open = (0, cursors_fixture_1.Requesting)(log, [(0, cursors_fixture_1.Rows)(1, 2)]);
@@ -129,28 +127,26 @@ describe("the cursor registry", () => {
129
127
  (0, cursors_fixture_1.Read)(reqId, open),
130
128
  (0, cursors_fixture_1.Read)(reqId, open),
131
129
  ]);
132
- (0, chai_1.expect)(answers.map((answer) => answer.value)).to.deep.equal([
133
- 1,
134
- 2,
135
- undefined,
136
- undefined,
137
- ]);
138
- (0, chai_1.expect)(answers.map((answer) => answer.done)).to.deep.equal([
139
- false,
140
- false,
141
- true,
142
- true,
143
- ]);
130
+ (0, chai_1.expect)(answers).to.deep.equal([[1, 2], [], [], []]);
144
131
  (0, chai_1.expect)(log.acquires).to.equal(1);
145
132
  (0, chai_1.expect)(log.releases).to.equal(1);
146
133
  (0, chai_1.expect)((0, cursors_fixture_1.Count)(log, cursors_fixture_1.BEGIN)).to.equal(1);
147
134
  (0, chai_1.expect)((0, cursors_1.CountOpenCursors)()).to.equal(cursors_fixture_1.baseline);
148
135
  });
136
+ it("answers an empty batch after the last batch, even once the idle reaper has ended it", async () => {
137
+ const log = (0, cursors_fixture_1.Recorder)();
138
+ const reqId = (0, cursors_fixture_1.NextReqId)();
139
+ const open = (0, cursors_fixture_1.Requesting)(log, [(0, cursors_fixture_1.Rows)(1, 2)]);
140
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Read)(reqId, open, cursors_fixture_1.REAPING)).to.deep.equal([1, 2]);
141
+ await (0, cursors_fixture_1.Delay)(cursors_fixture_1.REAP_WINDOW_MS);
142
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Read)(reqId, open, cursors_fixture_1.REAPING)).to.deep.equal([]);
143
+ (0, chai_1.expect)(log.releases).to.equal(1);
144
+ });
149
145
  it("throws on a read after the idle reaper reclaimed the cursor", async () => {
150
146
  const log = (0, cursors_fixture_1.Recorder)();
151
147
  const reqId = (0, cursors_fixture_1.NextReqId)();
152
148
  const open = (0, cursors_fixture_1.Requesting)(log, [(0, cursors_fixture_1.Rows)(1, 2, 3), (0, cursors_fixture_1.Rows)(4)]);
153
- (0, chai_1.expect)((await (0, cursors_fixture_1.Read)(reqId, open, cursors_fixture_1.REAPING)).value).to.equal(1);
149
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Read)(reqId, open, cursors_fixture_1.REAPING)).to.deep.equal([1, 2, 3]);
154
150
  await (0, cursors_fixture_1.Delay)(cursors_fixture_1.REAP_WINDOW_MS);
155
151
  await (0, cursors_1.CloseOneCursor)(reqId);
156
152
  const err = await (0, cursors_fixture_1.Rejection)((0, cursors_fixture_1.Read)(reqId, open));
@@ -164,7 +160,7 @@ describe("the cursor registry", () => {
164
160
  const log = (0, cursors_fixture_1.Recorder)();
165
161
  const reqId = (0, cursors_fixture_1.NextReqId)();
166
162
  const open = (0, cursors_fixture_1.Requesting)(log, [(0, cursors_fixture_1.Rows)(1, 2, 3), (0, cursors_fixture_1.Rows)(4)]);
167
- (0, chai_1.expect)((await (0, cursors_fixture_1.Read)(reqId, open)).value).to.equal(1);
163
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Read)(reqId, open)).to.deep.equal([1, 2, 3]);
168
164
  await (0, cursors_1.CloseOneCursor)(reqId);
169
165
  (0, chai_1.expect)(log.statements).to.deep.equal([
170
166
  cursors_fixture_1.BEGIN,
@@ -180,19 +176,37 @@ describe("the cursor registry", () => {
180
176
  });
181
177
  describe("the cursor registry", () => {
182
178
  (0, cursors_fixture_1.GuardTheRegistry)();
183
- it("closes behind a read that is still in flight, and answers it first", async () => {
179
+ it("answers an empty batch to a read issued just before the close, opening nothing", async () => {
184
180
  const log = (0, cursors_fixture_1.Recorder)();
185
181
  const reqId = (0, cursors_fixture_1.NextReqId)();
186
182
  const open = (0, cursors_fixture_1.Requesting)(log, [(0, cursors_fixture_1.Rows)(1, 2, 3), (0, cursors_fixture_1.Rows)(4)]);
187
183
  const reading = (0, cursors_fixture_1.Read)(reqId, open);
188
184
  const closing = (0, cursors_1.CloseOneCursor)(reqId);
189
- const first = await reading;
185
+ (0, chai_1.expect)(await reading).to.deep.equal([]);
186
+ await closing;
187
+ (0, chai_1.expect)(log.acquires).to.equal(0);
188
+ (0, chai_1.expect)(log.statements).to.deep.equal([]);
189
+ (0, chai_1.expect)((0, cursors_1.CountOpenCursors)()).to.equal(cursors_fixture_1.baseline);
190
+ });
191
+ it("answers an empty batch to a read whose FETCH is on the wire when the close arrives", async () => {
192
+ const log = (0, cursors_fixture_1.Recorder)();
193
+ const reqId = (0, cursors_fixture_1.NextReqId)();
194
+ const open = (0, cursors_fixture_1.Requesting)(log, [(0, cursors_fixture_1.Rows)(1, 2, 3), (0, cursors_fixture_1.Rows)(4, 5, 6)]);
195
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Read)(reqId, open)).to.deep.equal([1, 2, 3]);
196
+ log.holdsNextFetch = true;
197
+ const reading = (0, cursors_fixture_1.Read)(reqId, open);
198
+ while (!log.resumeFetch) {
199
+ await (0, cursors_fixture_1.Delay)(cursors_fixture_1.NEXT_TURN_MS);
200
+ }
201
+ const closing = (0, cursors_1.CloseOneCursor)(reqId);
202
+ log.resumeFetch();
203
+ (0, chai_1.expect)(await reading).to.deep.equal([]);
190
204
  await closing;
191
- (0, chai_1.expect)(first.value).to.equal(1);
192
205
  (0, chai_1.expect)(log.statements).to.deep.equal([
193
206
  cursors_fixture_1.BEGIN,
194
207
  cursors_fixture_1.DECLARE,
195
208
  cursors_fixture_1.FETCH,
209
+ cursors_fixture_1.FETCH,
196
210
  cursors_fixture_1.CLOSE,
197
211
  cursors_fixture_1.ROLLBACK,
198
212
  cursors_fixture_1.RELEASE,
@@ -215,14 +229,12 @@ describe("the cursor registry", () => {
215
229
  await (0, cursors_1.CloseOneCursor)((0, cursors_fixture_1.NextReqId)());
216
230
  (0, chai_1.expect)((0, cursors_1.CountOpenCursors)()).to.equal(cursors_fixture_1.baseline);
217
231
  });
218
- it("answers done, acquiring nothing, after a close that preceded every read", async () => {
232
+ it("answers an empty batch, acquiring nothing, after a close that preceded every read", async () => {
219
233
  const log = (0, cursors_fixture_1.Recorder)();
220
234
  const reqId = (0, cursors_fixture_1.NextReqId)();
221
235
  const open = (0, cursors_fixture_1.Reopening)(log, 1, 2);
222
236
  await (0, cursors_1.CloseOneCursor)(reqId);
223
- const after = await (0, cursors_fixture_1.Read)(reqId, open);
224
- (0, chai_1.expect)(after.done).to.equal(true);
225
- (0, chai_1.expect)(after.value).to.equal(undefined);
237
+ (0, chai_1.expect)(await (0, cursors_fixture_1.Read)(reqId, open)).to.deep.equal([]);
226
238
  (0, chai_1.expect)(log.acquires).to.equal(0);
227
239
  (0, chai_1.expect)(log.statements).to.deep.equal([]);
228
240
  (0, chai_1.expect)((0, cursors_1.CountOpenCursors)()).to.equal(cursors_fixture_1.baseline);
@@ -1 +1 @@
1
- {"version":3,"file":"cursors.spec.js","sourceRoot":"","sources":["../../../src/test/unit/cursors.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cursors.spec.js","sourceRoot":"","sources":["../../../src/test/unit/cursors.spec.ts"],"names":[],"mappings":"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"}