camusdb 0.2.0 → 0.3.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 +65 -4
- package/dist/auth/rest-login-client.d.ts.map +1 -1
- package/dist/auth/rest-login-client.js +15 -1
- package/dist/auth/rest-login-client.js.map +1 -1
- package/dist/auth/token-provider.d.ts +14 -0
- package/dist/auth/token-provider.d.ts.map +1 -1
- package/dist/auth/token-provider.js +39 -11
- package/dist/auth/token-provider.js.map +1 -1
- package/dist/client.d.ts +24 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +78 -8
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +29 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +42 -8
- package/dist/json.js.map +1 -1
- package/dist/own-record.d.ts +16 -0
- package/dist/own-record.d.ts.map +1 -0
- package/dist/own-record.js +18 -0
- package/dist/own-record.js.map +1 -0
- package/dist/query-stream.d.ts +4 -4
- package/dist/query-stream.js +4 -4
- package/dist/result-set.d.ts +4 -2
- package/dist/result-set.d.ts.map +1 -1
- package/dist/result-set.js +25 -8
- package/dist/result-set.js.map +1 -1
- package/dist/retry.d.ts +4 -1
- package/dist/retry.d.ts.map +1 -1
- package/dist/retry.js +16 -4
- package/dist/retry.js.map +1 -1
- package/dist/runtime.js +2 -0
- package/dist/runtime.js.map +1 -1
- package/dist/sequence.d.ts +62 -0
- package/dist/sequence.d.ts.map +1 -0
- package/dist/sequence.js +70 -0
- package/dist/sequence.js.map +1 -0
- package/dist/sql-syntax.d.ts +21 -1
- package/dist/sql-syntax.d.ts.map +1 -1
- package/dist/sql-syntax.js +30 -1
- package/dist/sql-syntax.js.map +1 -1
- package/dist/statements.d.ts.map +1 -1
- package/dist/statements.js +5 -0
- package/dist/statements.js.map +1 -1
- package/dist/transport/grpc/batch-frames.d.ts +67 -0
- package/dist/transport/grpc/batch-frames.d.ts.map +1 -0
- package/dist/transport/grpc/batch-frames.js +111 -0
- package/dist/transport/grpc/batch-frames.js.map +1 -0
- package/dist/transport/grpc/batcher.d.ts +132 -3
- package/dist/transport/grpc/batcher.d.ts.map +1 -1
- package/dist/transport/grpc/batcher.js +389 -30
- package/dist/transport/grpc/batcher.js.map +1 -1
- package/dist/transport/grpc/grpc-transport.d.ts +8 -1
- package/dist/transport/grpc/grpc-transport.d.ts.map +1 -1
- package/dist/transport/grpc/grpc-transport.js +59 -8
- package/dist/transport/grpc/grpc-transport.js.map +1 -1
- package/dist/transport/grpc/messages.d.ts +18 -2
- package/dist/transport/grpc/messages.d.ts.map +1 -1
- package/dist/transport/grpc/messages.js +6 -0
- package/dist/transport/grpc/messages.js.map +1 -1
- package/dist/transport/grpc/proto.d.ts +1 -1
- package/dist/transport/grpc/proto.d.ts.map +1 -1
- package/dist/transport/grpc/proto.js.map +1 -1
- package/dist/transport/http.d.ts.map +1 -1
- package/dist/transport/http.js +5 -1
- package/dist/transport/http.js.map +1 -1
- package/dist/transport/ndjson-row-source.d.ts.map +1 -1
- package/dist/transport/ndjson-row-source.js +16 -3
- package/dist/transport/ndjson-row-source.js.map +1 -1
- package/dist/transport/rest-transport.d.ts.map +1 -1
- package/dist/transport/rest-transport.js +5 -2
- package/dist/transport/rest-transport.js.map +1 -1
- package/dist/transport/transport.d.ts +4 -3
- package/dist/transport/transport.d.ts.map +1 -1
- package/dist/transport/transport.js.map +1 -1
- package/dist/values/encode.d.ts.map +1 -1
- package/dist/values/encode.js +7 -2
- package/dist/values/encode.js.map +1 -1
- package/dist/values/typed.d.ts.map +1 -1
- package/dist/values/typed.js +22 -1
- package/dist/values/typed.js.map +1 -1
- package/dist/values/uuid.d.ts +7 -1
- package/dist/values/uuid.d.ts.map +1 -1
- package/dist/values/uuid.js +15 -6
- package/dist/values/uuid.js.map +1 -1
- package/package.json +1 -1
- package/proto/camus_sql.proto +39 -2
|
@@ -48,6 +48,14 @@ export declare class PreparedStatementStaleError extends Error {
|
|
|
48
48
|
export interface BatchStream {
|
|
49
49
|
/** Identifies this stream. A handle registered on it is invalid on any other. */
|
|
50
50
|
readonly id: number;
|
|
51
|
+
/**
|
|
52
|
+
* True once this stream's server announced that it reads request frames.
|
|
53
|
+
*
|
|
54
|
+
* It never blocks, and it never goes back to false. It is false until the announcement arrives,
|
|
55
|
+
* and it stays false against a server that makes none. It belongs to one stream, so a rebuilt
|
|
56
|
+
* stream negotiates again on its own.
|
|
57
|
+
*/
|
|
58
|
+
readonly framesAnnounced: boolean;
|
|
51
59
|
send(request: GrpcBatchExecuteRequest): void;
|
|
52
60
|
/** Registers the callbacks that drive the reader loop. Called once, right after construction. */
|
|
53
61
|
listen(handlers: {
|
|
@@ -65,21 +73,59 @@ export interface BatchStream {
|
|
|
65
73
|
* share a transaction go to one stream, in arrival order, so the server sees them in the order the
|
|
66
74
|
* caller wrote them; autocommit statements are free to use any stream.
|
|
67
75
|
*
|
|
76
|
+
* Operations that wait together travel together. The pump writes the operations it drained for one
|
|
77
|
+
* stream as a single stream message — a frame — when that stream's server announced that it reads
|
|
78
|
+
* one, and it reads a response frame at any time. A frame never waits: it packs only the
|
|
79
|
+
* operations that already sit in the inbox, and a lone operation stays the plain single message it
|
|
80
|
+
* always was. It is a transport optimization alone. It gives no atomicity and no ordering that the
|
|
81
|
+
* stream does not already give.
|
|
82
|
+
*
|
|
68
83
|
* A stream that faults is rebuilt by the next write, and every operation that was in flight on the
|
|
69
84
|
* old one is failed so its caller can decide whether to replay it. Prepared statements are scoped
|
|
70
85
|
* to the stream that registered them, and a handle from a stream that is gone is refused at the
|
|
71
86
|
* last moment before it would be written.
|
|
87
|
+
*
|
|
88
|
+
* A stream is rotated when the credential it opened under is superseded. A stream presents its
|
|
89
|
+
* bearer token once, in its opening metadata, and then outlives it: the provider renews the token
|
|
90
|
+
* every few minutes, and the stream is meant to last a session. Whether the server tolerates that
|
|
91
|
+
* is the server's decision, and a server that re-checks the opening token per operation ends the
|
|
92
|
+
* stream at that token's expiry, with every transaction on it. The client does not rely on it.
|
|
93
|
+
*
|
|
94
|
+
* When the next unbound operation of a slot finds the credential changed, the slot opens a fresh
|
|
95
|
+
* stream under the new token, and the old one is retired. A retired stream takes no new work. It
|
|
96
|
+
* keeps serving the transactions that began on it, because a transaction cannot change streams,
|
|
97
|
+
* and the server rolls a transaction back when its stream closes. It is closed as soon as the last
|
|
98
|
+
* of them ends, or after `streamDrainTimeoutMs`. Rotation happens on the write path, so an idle
|
|
99
|
+
* client rotates on its first operation after the renewal, before that operation is sent.
|
|
72
100
|
*/
|
|
73
101
|
export declare class GrpcBatcher {
|
|
74
102
|
private readonly options;
|
|
75
103
|
private readonly streamFactory;
|
|
104
|
+
/**
|
|
105
|
+
* Reports the credential a stream opened now would carry, which in practice is the current
|
|
106
|
+
* bearer token. It is compared, never inspected: a value that differs from the one a stream
|
|
107
|
+
* opened under is what retires that stream. Undefined means that a stream carries no credential
|
|
108
|
+
* that can change, and that nothing is ever rotated.
|
|
109
|
+
*/
|
|
110
|
+
private readonly credentialStamp;
|
|
76
111
|
private readonly slots;
|
|
77
112
|
private readonly pending;
|
|
113
|
+
/**
|
|
114
|
+
* The stream each open transaction began on, by handle. An entry is written when a start is
|
|
115
|
+
* answered, and removed when the server answers the commit or the rollback, or when that stream
|
|
116
|
+
* ends. It is what lets a transaction keep its stream across a rotation of its slot.
|
|
117
|
+
*/
|
|
118
|
+
private readonly openTransactions;
|
|
119
|
+
/**
|
|
120
|
+
* Retired streams that still drain, so disposal can reach them: a slot references its current
|
|
121
|
+
* stream alone.
|
|
122
|
+
*/
|
|
123
|
+
private readonly retiring;
|
|
78
124
|
private requestIdSeq;
|
|
79
125
|
private roundRobin;
|
|
80
126
|
private transportIdSeq;
|
|
81
127
|
private disposed;
|
|
82
|
-
constructor(options: GrpcBatchOptions, streamFactory: (id: number) => BatchStream);
|
|
128
|
+
constructor(options: GrpcBatchOptions, streamFactory: (id: number) => BatchStream, credentialStamp?: () => unknown);
|
|
83
129
|
/** Reserves a stream for a transaction, so all of its operations land in one ordering chain. */
|
|
84
130
|
reserveSlot(): number;
|
|
85
131
|
enqueueQuery(request: GrpcSqlRequest, slotIndex: number | undefined, signal: AbortSignal | undefined, expectedTransportId?: number): Promise<BatchQueryResult>;
|
|
@@ -106,17 +152,100 @@ export declare class GrpcBatcher {
|
|
|
106
152
|
closePrepared(slotIndex: number, entry: PreparedSlotEntry, signal: AbortSignal | undefined): Promise<void>;
|
|
107
153
|
private enqueue;
|
|
108
154
|
private enqueueTracked;
|
|
155
|
+
/**
|
|
156
|
+
* Starts the slot's pump after the current turn, and not inside it.
|
|
157
|
+
*
|
|
158
|
+
* A caller that issues several statements at once — one `Promise.all` over six of them — queues
|
|
159
|
+
* them all in one synchronous turn. A pump that ran inside `enqueue` would write the first
|
|
160
|
+
* before the second was queued, and every operation would then travel alone. One microtask of
|
|
161
|
+
* delay costs no round trip, and it lets the operations that were issued together share a frame.
|
|
162
|
+
*/
|
|
163
|
+
private schedule;
|
|
109
164
|
/**
|
|
110
165
|
* Drains one slot's queue onto its stream.
|
|
111
166
|
*
|
|
112
167
|
* Only one pump runs per slot, so the slot's stream has exactly one writer and needs no lock.
|
|
113
168
|
*/
|
|
114
169
|
private pump;
|
|
115
|
-
|
|
116
|
-
|
|
170
|
+
/**
|
|
171
|
+
* Prepares one operation for the wire, then either writes it alone or adds it to the slot's run.
|
|
172
|
+
*
|
|
173
|
+
* A run is the set of operations that will share the next stream message. It holds consecutive
|
|
174
|
+
* operations bound for one stream. The operations of one drain can belong to different streams,
|
|
175
|
+
* so an operation for another stream flushes the run first. Operations are never reordered to
|
|
176
|
+
* fill a frame: the server chains the operations of a transaction by arrival order, and inbox
|
|
177
|
+
* order is the only order the callers gave.
|
|
178
|
+
*/
|
|
179
|
+
private stage;
|
|
180
|
+
/**
|
|
181
|
+
* Writes the slot's run: one frame, or the plain single message when one operation is left in
|
|
182
|
+
* it, so a quiet stream stays byte-identical to a stream without frames.
|
|
183
|
+
*
|
|
184
|
+
* A frame is never resent. A frame whose write failed may or may not have reached the server,
|
|
185
|
+
* which is true of every operation in it, so every one of them faults with the transport error.
|
|
186
|
+
* The retry contract above the batcher then decides, exactly as it does for the operations of a
|
|
187
|
+
* stream that faulted.
|
|
188
|
+
*/
|
|
189
|
+
private flush;
|
|
190
|
+
private send;
|
|
191
|
+
/**
|
|
192
|
+
* False for an operation whose caller left — it was cancelled, or it timed out — before the
|
|
193
|
+
* operation was written. The server is never asked to run it.
|
|
194
|
+
*
|
|
195
|
+
* A rollback and a close are written whatever happens. Each one only releases what the server
|
|
196
|
+
* holds, which is a transaction's locks or a statement handle, and nothing else would.
|
|
197
|
+
*/
|
|
198
|
+
private mustStillBeWritten;
|
|
199
|
+
/**
|
|
200
|
+
* The stream one operation belongs on.
|
|
201
|
+
*
|
|
202
|
+
* A transaction stays on the stream it began on, whatever the slot has moved to since. Anything
|
|
203
|
+
* else takes the slot's current stream, and that is where a credential change is noticed.
|
|
204
|
+
*/
|
|
205
|
+
private route;
|
|
206
|
+
/**
|
|
207
|
+
* Opens a fresh stream for a slot and makes it the current one.
|
|
208
|
+
*
|
|
209
|
+
* The stamp is read before the factory reads the credential itself. If the credential is renewed
|
|
210
|
+
* in between, the stream is stamped older than it is, and it rotates once more than it needs to.
|
|
211
|
+
* Read afterwards, it could be stamped newer than it is, and would never rotate at all.
|
|
212
|
+
*/
|
|
213
|
+
private connect;
|
|
214
|
+
/**
|
|
215
|
+
* Takes a stream out of rotation.
|
|
216
|
+
*
|
|
217
|
+
* It stays open for the transactions that began on it, and it closes when the last one ends — or
|
|
218
|
+
* after `streamDrainTimeoutMs`, because a transaction its caller abandoned would otherwise hold
|
|
219
|
+
* the stream, and its locks, open for good. Closing the stream is what makes the server roll
|
|
220
|
+
* such a transaction back.
|
|
221
|
+
*/
|
|
222
|
+
private retire;
|
|
223
|
+
private closeIfDrained;
|
|
224
|
+
/**
|
|
225
|
+
* Closes a stream once, and forgets everything that was riding on it.
|
|
226
|
+
*
|
|
227
|
+
* It runs whichever end closes the stream first: this client, when a retired stream has drained,
|
|
228
|
+
* or the server, through the stream's own close event.
|
|
229
|
+
*/
|
|
230
|
+
private close;
|
|
231
|
+
/** Drops an operation's hold on its stream, once however many paths race to do it. */
|
|
232
|
+
private release;
|
|
233
|
+
private transactionBegan;
|
|
234
|
+
private transactionEnded;
|
|
235
|
+
/**
|
|
236
|
+
* True when a transaction began on a stream that was rotated out, and is finishing there.
|
|
237
|
+
*
|
|
238
|
+
* Such a transaction must not run prepared. A slot keeps one registration per statement, and
|
|
239
|
+
* that registration belongs to the slot's current stream, where this transaction does not write.
|
|
240
|
+
* To register the statement on the retired stream instead would evict the entry every autocommit
|
|
241
|
+
* caller is using, and the two would re-prepare against each other until the old stream closes.
|
|
242
|
+
* To run the statement inline is always correct, and the window is short.
|
|
243
|
+
*/
|
|
244
|
+
isBoundToRetiredStream(txnIdPT: bigint, txnIdCounter: number): boolean;
|
|
117
245
|
private demux;
|
|
118
246
|
private complete;
|
|
119
247
|
private fault;
|
|
248
|
+
private finalizesTransaction;
|
|
120
249
|
private settle;
|
|
121
250
|
/** Fails every operation still in flight on a stream that closed, so its caller can replay. */
|
|
122
251
|
private failStreamPending;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batcher.d.ts","sourceRoot":"","sources":["../../../src/transport/grpc/batcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"batcher.d.ts","sourceRoot":"","sources":["../../../src/transport/grpc/batcher.ts"],"names":[],"mappings":"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"}
|