boundlessdb 0.3.1 → 0.5.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/CHANGELOG.md +72 -0
- package/README.md +101 -10
- package/dist/browser.d.ts +2 -2
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +1 -1
- package/dist/browser.js.map +1 -1
- package/dist/event-store.browser.d.ts.map +1 -1
- package/dist/event-store.browser.js +68 -62
- package/dist/event-store.browser.js.map +1 -1
- package/dist/event-store.d.ts.map +1 -1
- package/dist/event-store.js +33 -28
- package/dist/event-store.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/query-builder.d.ts +35 -3
- package/dist/query-builder.d.ts.map +1 -1
- package/dist/query-builder.js +63 -4
- package/dist/query-builder.js.map +1 -1
- package/dist/storage/interface.d.ts +27 -9
- package/dist/storage/interface.d.ts.map +1 -1
- package/dist/storage/memory.d.ts +2 -3
- package/dist/storage/memory.d.ts.map +1 -1
- package/dist/storage/memory.js +22 -11
- package/dist/storage/memory.js.map +1 -1
- package/dist/storage/postgres.d.ts +11 -3
- package/dist/storage/postgres.d.ts.map +1 -1
- package/dist/storage/postgres.js +137 -78
- package/dist/storage/postgres.js.map +1 -1
- package/dist/storage/sqlite.d.ts +6 -3
- package/dist/storage/sqlite.d.ts.map +1 -1
- package/dist/storage/sqlite.js +115 -24
- package/dist/storage/sqlite.js.map +1 -1
- package/dist/storage/sqljs.d.ts +2 -3
- package/dist/storage/sqljs.d.ts.map +1 -1
- package/dist/storage/sqljs.js +72 -51
- package/dist/storage/sqljs.js.map +1 -1
- package/dist/types.d.ts +40 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +25 -1
- package/dist/types.js.map +1 -1
- package/package.json +5 -5
package/dist/storage/postgres.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* PostgreSQL Storage implementation using pg
|
|
3
3
|
*/
|
|
4
4
|
import { Pool } from 'pg';
|
|
5
|
-
import {
|
|
5
|
+
import { normalizeCondition, hasKeys } from '../types.js';
|
|
6
6
|
const SCHEMA = `
|
|
7
7
|
-- Events (Append-Only Log)
|
|
8
8
|
CREATE TABLE IF NOT EXISTS events (
|
|
@@ -90,64 +90,87 @@ export class PostgresStorage {
|
|
|
90
90
|
throw new Error('PostgresStorage not initialized. Call init() first.');
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
|
-
async
|
|
93
|
+
async appendWithCondition(eventsToStore, keys, condition) {
|
|
94
94
|
this.ensureInitialized();
|
|
95
95
|
if (eventsToStore.length !== keys.length) {
|
|
96
96
|
throw new Error('Events and keys arrays must have the same length');
|
|
97
97
|
}
|
|
98
98
|
if (eventsToStore.length === 0) {
|
|
99
|
-
|
|
99
|
+
const position = await this.getLatestPosition();
|
|
100
|
+
return { position };
|
|
100
101
|
}
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
102
|
+
const maxRetries = 3;
|
|
103
|
+
let attempt = 0;
|
|
104
|
+
while (attempt < maxRetries) {
|
|
105
|
+
attempt++;
|
|
106
|
+
const client = await this.pool.connect();
|
|
107
|
+
try {
|
|
108
|
+
// BEGIN with SERIALIZABLE isolation for conflict detection
|
|
109
|
+
await client.query('BEGIN ISOLATION LEVEL SERIALIZABLE');
|
|
110
|
+
// 1. Conflict check (if condition provided)
|
|
111
|
+
if (condition !== null) {
|
|
112
|
+
const conflictingEvents = await this.queryWithClient(client, condition.failIfEventsMatch, condition.after);
|
|
113
|
+
if (conflictingEvents.length > 0) {
|
|
114
|
+
await client.query('ROLLBACK');
|
|
115
|
+
return { conflicting: conflictingEvents };
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// 2. Batch insert all events in one query
|
|
119
|
+
const eventValues = [];
|
|
120
|
+
const eventParams = [];
|
|
121
|
+
for (let i = 0; i < eventsToStore.length; i++) {
|
|
122
|
+
const event = eventsToStore[i];
|
|
123
|
+
const offset = i * 5;
|
|
124
|
+
eventValues.push(`($${offset + 1}, $${offset + 2}, $${offset + 3}, $${offset + 4}, $${offset + 5})`);
|
|
125
|
+
eventParams.push(event.id, event.type, JSON.stringify(event.data), event.metadata ? JSON.stringify(event.metadata) : null, event.timestamp.toISOString());
|
|
126
|
+
}
|
|
127
|
+
const result = await client.query(`INSERT INTO events (event_id, event_type, data, metadata, timestamp)
|
|
128
|
+
VALUES ${eventValues.join(', ')}
|
|
129
|
+
RETURNING position`, eventParams);
|
|
130
|
+
const positions = result.rows.map(row => BigInt(row.position));
|
|
131
|
+
const lastPosition = positions[positions.length - 1];
|
|
132
|
+
// 3. Batch insert all keys in one query
|
|
133
|
+
const keyValues = [];
|
|
134
|
+
const keyParams = [];
|
|
135
|
+
let keyParamIdx = 1;
|
|
136
|
+
for (let i = 0; i < keys.length; i++) {
|
|
137
|
+
const position = positions[i].toString();
|
|
138
|
+
for (const key of keys[i]) {
|
|
139
|
+
keyValues.push(`($${keyParamIdx}, $${keyParamIdx + 1}, $${keyParamIdx + 2})`);
|
|
140
|
+
keyParams.push(position, key.name, key.value);
|
|
141
|
+
keyParamIdx += 3;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (keyValues.length > 0) {
|
|
145
|
+
await client.query(`INSERT INTO event_keys (position, key_name, key_value)
|
|
146
|
+
VALUES ${keyValues.join(', ')}`, keyParams);
|
|
147
|
+
}
|
|
148
|
+
await client.query('COMMIT');
|
|
149
|
+
return { position: lastPosition };
|
|
112
150
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const keyValues = [];
|
|
120
|
-
const keyParams = [];
|
|
121
|
-
let keyParamIdx = 1;
|
|
122
|
-
for (let i = 0; i < keys.length; i++) {
|
|
123
|
-
const position = positions[i].toString();
|
|
124
|
-
for (const key of keys[i]) {
|
|
125
|
-
keyValues.push(`($${keyParamIdx}, $${keyParamIdx + 1}, $${keyParamIdx + 2})`);
|
|
126
|
-
keyParams.push(position, key.name, key.value);
|
|
127
|
-
keyParamIdx += 3;
|
|
151
|
+
catch (error) {
|
|
152
|
+
await client.query('ROLLBACK');
|
|
153
|
+
// Retry on serialization failure (PostgreSQL error code 40001)
|
|
154
|
+
if (error.code === '40001' && attempt < maxRetries) {
|
|
155
|
+
console.log(`[PostgresStorage] Serialization failure, retrying (attempt ${attempt}/${maxRetries})...`);
|
|
156
|
+
continue;
|
|
128
157
|
}
|
|
158
|
+
throw error;
|
|
129
159
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
VALUES ${keyValues.join(', ')}`, keyParams);
|
|
160
|
+
finally {
|
|
161
|
+
client.release();
|
|
133
162
|
}
|
|
134
|
-
await client.query('COMMIT');
|
|
135
|
-
return lastPosition;
|
|
136
|
-
}
|
|
137
|
-
catch (error) {
|
|
138
|
-
await client.query('ROLLBACK');
|
|
139
|
-
throw error;
|
|
140
|
-
}
|
|
141
|
-
finally {
|
|
142
|
-
client.release();
|
|
143
163
|
}
|
|
164
|
+
throw new Error(`[PostgresStorage] Failed after ${maxRetries} retries`);
|
|
144
165
|
}
|
|
145
|
-
|
|
146
|
-
|
|
166
|
+
/**
|
|
167
|
+
* Build PostgreSQL query from normalized conditions.
|
|
168
|
+
* Shared between queryWithClient and query methods.
|
|
169
|
+
*/
|
|
170
|
+
buildPostgresQuery(conditions, fromPosition, limit) {
|
|
147
171
|
const params = [];
|
|
148
172
|
let paramIndex = 1;
|
|
149
173
|
if (conditions.length === 0) {
|
|
150
|
-
// No conditions = return all events
|
|
151
174
|
let sql = `
|
|
152
175
|
SELECT position, event_id, event_type, data, metadata, timestamp
|
|
153
176
|
FROM events
|
|
@@ -162,17 +185,16 @@ export class PostgresStorage {
|
|
|
162
185
|
sql += ` LIMIT $${paramIndex}`;
|
|
163
186
|
params.push(limit);
|
|
164
187
|
}
|
|
165
|
-
|
|
166
|
-
return result.rows.map(row => this.rowToEvent(row));
|
|
188
|
+
return { sql, params };
|
|
167
189
|
}
|
|
168
|
-
//
|
|
169
|
-
const
|
|
170
|
-
const
|
|
171
|
-
|
|
190
|
+
// Normalize all conditions
|
|
191
|
+
const normalized = conditions.map(normalizeCondition);
|
|
192
|
+
const constrained = normalized.filter(hasKeys);
|
|
193
|
+
const unconstrained = normalized.filter(c => !hasKeys(c));
|
|
172
194
|
const ctes = [];
|
|
173
195
|
const cteNames = [];
|
|
174
196
|
const positionFilter = fromPosition !== undefined ? fromPosition.toString() : null;
|
|
175
|
-
// CTE for unconstrained conditions
|
|
197
|
+
// CTE for unconstrained conditions
|
|
176
198
|
if (unconstrained.length > 0) {
|
|
177
199
|
const typePlaceholders = unconstrained.map(() => {
|
|
178
200
|
const ph = `$${paramIndex}`;
|
|
@@ -192,62 +214,89 @@ export class PostgresStorage {
|
|
|
192
214
|
ctes.push(`unconstrained_matches AS (${cteSql})`);
|
|
193
215
|
cteNames.push('unconstrained_matches');
|
|
194
216
|
}
|
|
195
|
-
// Constrained conditions
|
|
196
|
-
//
|
|
197
|
-
//
|
|
217
|
+
// Constrained conditions — each condition is its own CTE
|
|
218
|
+
// Multi-key conditions use INTERSECT within a CTE
|
|
219
|
+
// Single-key conditions with the same (key_name, key_value) are grouped
|
|
220
|
+
// into one CTE with IN (type1, type2, ...) to avoid redundant index scans.
|
|
198
221
|
if (constrained.length > 0) {
|
|
199
|
-
//
|
|
222
|
+
// Separate multi-key (own CTE each) from single-key (groupable)
|
|
223
|
+
const multiKey = constrained.filter(c => c.keys.length > 1);
|
|
224
|
+
const singleKey = constrained.filter(c => c.keys.length === 1);
|
|
225
|
+
// Group single-key conditions by (key_name, key_value)
|
|
200
226
|
const keyGroups = new Map();
|
|
201
|
-
for (const c of
|
|
202
|
-
const groupKey = `${c.
|
|
227
|
+
for (const c of singleKey) {
|
|
228
|
+
const groupKey = `${c.keys[0].name}\0${c.keys[0].value}`;
|
|
203
229
|
let group = keyGroups.get(groupKey);
|
|
204
230
|
if (!group) {
|
|
205
|
-
group = {
|
|
231
|
+
group = { name: c.keys[0].name, value: c.keys[0].value, types: [] };
|
|
206
232
|
keyGroups.set(groupKey, group);
|
|
207
233
|
}
|
|
208
234
|
group.types.push(c.type);
|
|
209
235
|
}
|
|
210
|
-
//
|
|
211
|
-
|
|
236
|
+
// Emit grouped single-key CTEs
|
|
237
|
+
let groupIdx = 0;
|
|
212
238
|
for (const group of keyGroups.values()) {
|
|
213
|
-
|
|
239
|
+
const cteName = `constrained_${groupIdx}`;
|
|
214
240
|
const keyNameParam = `$${paramIndex}`;
|
|
215
|
-
params.push(group.
|
|
241
|
+
params.push(group.name);
|
|
216
242
|
paramIndex++;
|
|
217
243
|
const keyValueParam = `$${paramIndex}`;
|
|
218
244
|
params.push(group.value);
|
|
219
245
|
paramIndex++;
|
|
220
|
-
// event_type IN (...) params
|
|
221
246
|
const typeParams = group.types.map(t => {
|
|
222
247
|
const ph = `$${paramIndex}`;
|
|
223
248
|
params.push(t);
|
|
224
249
|
paramIndex++;
|
|
225
250
|
return ph;
|
|
226
251
|
});
|
|
227
|
-
let
|
|
252
|
+
let cteSql = `
|
|
228
253
|
SELECT e.position, e.event_id, e.event_type, e.data, e.metadata, e.timestamp
|
|
229
254
|
FROM event_keys k
|
|
230
255
|
INNER JOIN events e ON e.position = k.position
|
|
231
256
|
WHERE k.key_name = ${keyNameParam} AND k.key_value = ${keyValueParam}
|
|
232
257
|
AND e.event_type IN (${typeParams.join(', ')})`;
|
|
233
258
|
if (positionFilter !== null) {
|
|
234
|
-
|
|
259
|
+
cteSql += ` AND e.position > $${paramIndex}`;
|
|
235
260
|
params.push(positionFilter);
|
|
236
261
|
paramIndex++;
|
|
237
262
|
}
|
|
238
|
-
|
|
263
|
+
ctes.push(`${cteName} AS (${cteSql})`);
|
|
264
|
+
cteNames.push(cteName);
|
|
265
|
+
groupIdx++;
|
|
239
266
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
const
|
|
245
|
-
|
|
267
|
+
// Emit multi-key CTEs (INTERSECT, one CTE each)
|
|
268
|
+
for (let m = 0; m < multiKey.length; m++) {
|
|
269
|
+
const c = multiKey[m];
|
|
270
|
+
const cteName = `constrained_multi_${m}`;
|
|
271
|
+
const intersectParts = c.keys.map(key => {
|
|
272
|
+
const keyNameParam = `$${paramIndex}`;
|
|
273
|
+
params.push(key.name);
|
|
274
|
+
paramIndex++;
|
|
275
|
+
const keyValueParam = `$${paramIndex}`;
|
|
276
|
+
params.push(key.value);
|
|
277
|
+
paramIndex++;
|
|
278
|
+
let part = `
|
|
279
|
+
SELECT position FROM event_keys
|
|
280
|
+
WHERE key_name = ${keyNameParam} AND key_value = ${keyValueParam}`;
|
|
281
|
+
if (positionFilter !== null) {
|
|
282
|
+
part += ` AND position > $${paramIndex}`;
|
|
283
|
+
params.push(positionFilter);
|
|
284
|
+
paramIndex++;
|
|
285
|
+
}
|
|
286
|
+
return part;
|
|
287
|
+
});
|
|
288
|
+
const typeParam = `$${paramIndex}`;
|
|
289
|
+
params.push(c.type);
|
|
290
|
+
paramIndex++;
|
|
291
|
+
const cteSql = `
|
|
292
|
+
SELECT e.position, e.event_id, e.event_type, e.data, e.metadata, e.timestamp
|
|
293
|
+
FROM (${intersectParts.join('\n INTERSECT')}) keys
|
|
294
|
+
INNER JOIN events e ON e.position = keys.position
|
|
295
|
+
WHERE e.event_type = ${typeParam}`;
|
|
296
|
+
ctes.push(`${cteName} AS (${cteSql})`);
|
|
297
|
+
cteNames.push(cteName);
|
|
246
298
|
}
|
|
247
|
-
cteNames.push('constrained_matches');
|
|
248
299
|
}
|
|
249
|
-
// Build final query with UNION ALL (no duplicates: unconstrained and constrained
|
|
250
|
-
// conditions are disjoint by type, and within constrained groups types are explicit)
|
|
251
300
|
const unionParts = cteNames.map(name => `SELECT * FROM ${name}`);
|
|
252
301
|
let sql = `WITH ${ctes.join(',\n')}
|
|
253
302
|
SELECT * FROM (${unionParts.join(' UNION ALL ')}) AS combined
|
|
@@ -256,11 +305,21 @@ ORDER BY position`;
|
|
|
256
305
|
sql += ` LIMIT $${paramIndex}`;
|
|
257
306
|
params.push(limit);
|
|
258
307
|
}
|
|
259
|
-
|
|
308
|
+
return { sql, params };
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Query with specific client (for use within transactions)
|
|
312
|
+
*/
|
|
313
|
+
async queryWithClient(client, conditions, fromPosition, limit) {
|
|
314
|
+
const { sql, params } = this.buildPostgresQuery(conditions, fromPosition, limit);
|
|
315
|
+
const result = await client.query(sql, params);
|
|
260
316
|
return result.rows.map(row => this.rowToEvent(row));
|
|
261
317
|
}
|
|
262
|
-
async
|
|
263
|
-
|
|
318
|
+
async query(conditions, fromPosition, limit) {
|
|
319
|
+
this.ensureInitialized();
|
|
320
|
+
const { sql, params } = this.buildPostgresQuery(conditions, fromPosition, limit);
|
|
321
|
+
const result = await this.pool.query(sql, params);
|
|
322
|
+
return result.rows.map(row => this.rowToEvent(row));
|
|
264
323
|
}
|
|
265
324
|
async getLatestPosition() {
|
|
266
325
|
this.ensureInitialized();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/storage/postgres.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/storage/postgres.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/sqlite.d.ts
CHANGED
|
@@ -2,16 +2,19 @@
|
|
|
2
2
|
* SQLite Storage implementation using better-sqlite3
|
|
3
3
|
*/
|
|
4
4
|
import { type ExtractedKey, type QueryCondition, type StoredEvent } from '../types.js';
|
|
5
|
-
import type { EventStorage, EventToStore } from './interface.js';
|
|
5
|
+
import type { EventStorage, EventToStore, StorageAppendCondition, AppendWithConditionResult } from './interface.js';
|
|
6
6
|
/**
|
|
7
7
|
* SQLite-backed event storage
|
|
8
8
|
*/
|
|
9
9
|
export declare class SqliteStorage implements EventStorage {
|
|
10
10
|
private db;
|
|
11
11
|
constructor(path?: string);
|
|
12
|
-
|
|
12
|
+
appendWithCondition(eventsToStore: EventToStore[], keys: ExtractedKey[][], condition: StorageAppendCondition | null): Promise<AppendWithConditionResult>;
|
|
13
|
+
/**
|
|
14
|
+
* Synchronous query for use within transactions
|
|
15
|
+
*/
|
|
16
|
+
private querySync;
|
|
13
17
|
query(conditions: QueryCondition[], fromPosition?: bigint, limit?: number): Promise<StoredEvent[]>;
|
|
14
|
-
getEventsSince(conditions: QueryCondition[], sincePosition: bigint): Promise<StoredEvent[]>;
|
|
15
18
|
getLatestPosition(): Promise<bigint>;
|
|
16
19
|
close(): Promise<void>;
|
|
17
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAA4E,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAkE,MAAM,aAAa,CAAC;AACjO,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AA2CpH;;GAEG;AACH,qBAAa,aAAc,YAAW,YAAY;IAChD,OAAO,CAAC,EAAE,CAAoB;gBAElB,IAAI,GAAE,MAAmB;IAO/B,mBAAmB,CACvB,aAAa,EAAE,YAAY,EAAE,EAC7B,IAAI,EAAE,YAAY,EAAE,EAAE,EACtB,SAAS,EAAE,sBAAsB,GAAG,IAAI,GACvC,OAAO,CAAC,yBAAyB,CAAC;IAoErC;;OAEG;IACH,OAAO,CAAC,SAAS;IAwKX,KAAK,CACT,UAAU,EAAE,cAAc,EAAE,EAC5B,YAAY,CAAC,EAAE,MAAM,EACrB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,EAAE,CAAC;IAInB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;OAEG;IACH,YAAY,IAAI,WAAW,EAAE;IAU7B;;OAEG;IACH,UAAU,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAQ9E;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,aAAa,IAAI,MAAM,GAAG,IAAI;IAO9B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMjC;;OAEG;IACH,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,YAAY,EAAE,GAAG,IAAI;IAwBlE,OAAO,CAAC,UAAU;CAUnB"}
|
package/dist/storage/sqlite.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SQLite Storage implementation using better-sqlite3
|
|
3
3
|
*/
|
|
4
4
|
import Database from 'better-sqlite3';
|
|
5
|
-
import {
|
|
5
|
+
import { normalizeCondition, hasKeys } from '../types.js';
|
|
6
6
|
const SCHEMA = `
|
|
7
7
|
-- Events (Append-Only Log)
|
|
8
8
|
CREATE TABLE IF NOT EXISTS events (
|
|
@@ -45,13 +45,16 @@ export class SqliteStorage {
|
|
|
45
45
|
this.db.pragma('foreign_keys = ON');
|
|
46
46
|
this.db.exec(SCHEMA);
|
|
47
47
|
}
|
|
48
|
-
async
|
|
48
|
+
async appendWithCondition(eventsToStore, keys, condition) {
|
|
49
49
|
if (eventsToStore.length !== keys.length) {
|
|
50
50
|
throw new Error('Events and keys arrays must have the same length');
|
|
51
51
|
}
|
|
52
52
|
if (eventsToStore.length === 0) {
|
|
53
|
-
|
|
53
|
+
const position = await this.getLatestPosition();
|
|
54
|
+
return { position };
|
|
54
55
|
}
|
|
56
|
+
let lastPosition = 0n;
|
|
57
|
+
let conflicting;
|
|
55
58
|
const insertEvent = this.db.prepare(`
|
|
56
59
|
INSERT INTO events (event_id, event_type, data, metadata, timestamp)
|
|
57
60
|
VALUES (?, ?, ?, ?, ?)
|
|
@@ -60,9 +63,17 @@ export class SqliteStorage {
|
|
|
60
63
|
INSERT INTO event_keys (position, key_name, key_value)
|
|
61
64
|
VALUES (?, ?, ?)
|
|
62
65
|
`);
|
|
63
|
-
let lastPosition = 0n;
|
|
64
66
|
// Everything in one transaction for atomicity
|
|
65
67
|
const transaction = this.db.transaction(() => {
|
|
68
|
+
// 1. Conflict check (if condition provided)
|
|
69
|
+
if (condition !== null) {
|
|
70
|
+
const rows = this.querySync(condition.failIfEventsMatch, condition.after);
|
|
71
|
+
if (rows.length > 0) {
|
|
72
|
+
conflicting = rows;
|
|
73
|
+
return; // Exit transaction without inserting
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// 2. Insert events
|
|
66
77
|
for (let i = 0; i < eventsToStore.length; i++) {
|
|
67
78
|
const event = eventsToStore[i];
|
|
68
79
|
const eventKeys = keys[i];
|
|
@@ -77,9 +88,16 @@ export class SqliteStorage {
|
|
|
77
88
|
}
|
|
78
89
|
});
|
|
79
90
|
transaction();
|
|
80
|
-
|
|
91
|
+
// Return result
|
|
92
|
+
if (conflicting) {
|
|
93
|
+
return { conflicting };
|
|
94
|
+
}
|
|
95
|
+
return { position: lastPosition };
|
|
81
96
|
}
|
|
82
|
-
|
|
97
|
+
/**
|
|
98
|
+
* Synchronous query for use within transactions
|
|
99
|
+
*/
|
|
100
|
+
querySync(conditions, fromPosition, limit) {
|
|
83
101
|
if (conditions.length === 0) {
|
|
84
102
|
// No conditions = return all events
|
|
85
103
|
let sql = `
|
|
@@ -99,9 +117,11 @@ export class SqliteStorage {
|
|
|
99
117
|
const rows = this.db.prepare(sql).all(...params);
|
|
100
118
|
return rows.map(row => this.rowToEvent(row));
|
|
101
119
|
}
|
|
120
|
+
// Normalize all conditions to the internal format
|
|
121
|
+
const normalized = conditions.map(normalizeCondition);
|
|
102
122
|
// Separate conditions by type
|
|
103
|
-
const constrained =
|
|
104
|
-
const unconstrained =
|
|
123
|
+
const constrained = normalized.filter(hasKeys);
|
|
124
|
+
const unconstrained = normalized.filter(c => !hasKeys(c));
|
|
105
125
|
// Build CTE-based query with UNION for better index utilization
|
|
106
126
|
const ctes = [];
|
|
107
127
|
const cteNames = [];
|
|
@@ -123,29 +143,100 @@ export class SqliteStorage {
|
|
|
123
143
|
if (positionFilter !== null)
|
|
124
144
|
params.push(positionFilter);
|
|
125
145
|
}
|
|
126
|
-
// CTEs for constrained conditions (keys-first via INDEXED BY
|
|
146
|
+
// CTEs for constrained conditions (keys-first via INDEXED BY)
|
|
147
|
+
//
|
|
148
|
+
// Two strategies depending on whether a position filter is active:
|
|
149
|
+
//
|
|
150
|
+
// WITHOUT position filter (normal queries):
|
|
151
|
+
// Flat CTE with INDEXED BY. SQLite may choose idx_event_type as the
|
|
152
|
+
// driving index, but this is acceptable: it scans index pages (compact,
|
|
153
|
+
// cache-friendly) and does covering checks on idx_key_position. Only
|
|
154
|
+
// matching rows read data pages. At 50M events with warm cache: <1ms.
|
|
155
|
+
//
|
|
156
|
+
// WITH position filter (AppendCondition conflict checks):
|
|
157
|
+
// MATERIALIZED CTE forces key-index-first execution. Without this,
|
|
158
|
+
// SQLite scans ALL events of a type after the position (up to millions
|
|
159
|
+
// of index entries). With MATERIALIZED, it scans only key positions
|
|
160
|
+
// after the threshold — often zero rows. Fixes 2019ms → <1ms at 50M.
|
|
161
|
+
//
|
|
162
|
+
// Multi-key AND: INTERSECT within a CTE. Each key gets its own sub-select
|
|
163
|
+
// on idx_key_position; INTERSECT returns only positions with ALL keys.
|
|
164
|
+
// Single-key (1 element in keys[]): no INTERSECT — keep current efficient path.
|
|
127
165
|
if (constrained.length > 0) {
|
|
128
166
|
constrained.forEach((c, i) => {
|
|
129
|
-
|
|
130
|
-
SELECT e.position, e.event_id, e.event_type, e.data, e.metadata, e.timestamp
|
|
131
|
-
FROM event_keys k INDEXED BY idx_key_position
|
|
132
|
-
INNER JOIN events e ON e.position = k.position
|
|
133
|
-
WHERE k.key_name = ? AND k.key_value = ? AND e.event_type = ?`;
|
|
167
|
+
const isMultiKey = c.keys.length > 1;
|
|
134
168
|
if (positionFilter !== null) {
|
|
135
|
-
|
|
169
|
+
// MATERIALIZED: key positions first, then join events by PK
|
|
170
|
+
const keyCteName = `keys_${i}`;
|
|
171
|
+
if (isMultiKey) {
|
|
172
|
+
// Multi-key: INTERSECT within MATERIALIZED CTE
|
|
173
|
+
const intersectParts = c.keys.map(() => {
|
|
174
|
+
const part = `
|
|
175
|
+
SELECT position FROM event_keys INDEXED BY idx_key_position
|
|
176
|
+
WHERE key_name = ? AND key_value = ? AND position > ?`;
|
|
177
|
+
return part;
|
|
178
|
+
});
|
|
179
|
+
ctes.push(`${keyCteName} AS MATERIALIZED (${intersectParts.join('\n INTERSECT')})`);
|
|
180
|
+
for (const key of c.keys) {
|
|
181
|
+
params.push(key.name, key.value, positionFilter);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
// Single key: no INTERSECT needed
|
|
186
|
+
const keyCte = `
|
|
187
|
+
SELECT position FROM event_keys INDEXED BY idx_key_position
|
|
188
|
+
WHERE key_name = ? AND key_value = ? AND position > ?`;
|
|
189
|
+
ctes.push(`${keyCteName} AS MATERIALIZED (${keyCte})`);
|
|
190
|
+
params.push(c.keys[0].name, c.keys[0].value, positionFilter);
|
|
191
|
+
}
|
|
192
|
+
const cteName = `constrained_${i}`;
|
|
193
|
+
const cteSql = `
|
|
194
|
+
SELECT e.position, e.event_id, e.event_type, e.data, e.metadata, e.timestamp
|
|
195
|
+
FROM ${keyCteName} k
|
|
196
|
+
INNER JOIN events e ON e.position = k.position
|
|
197
|
+
WHERE e.event_type = ?`;
|
|
198
|
+
ctes.push(`${cteName} AS (${cteSql})`);
|
|
199
|
+
cteNames.push(cteName);
|
|
200
|
+
params.push(c.type);
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
if (isMultiKey) {
|
|
204
|
+
// Multi-key without position filter: INTERSECT in flat CTE
|
|
205
|
+
const cteName = `constrained_${i}`;
|
|
206
|
+
const intersectParts = c.keys.map(() => `
|
|
207
|
+
SELECT position FROM event_keys INDEXED BY idx_key_position
|
|
208
|
+
WHERE key_name = ? AND key_value = ?`);
|
|
209
|
+
const cteSql = `
|
|
210
|
+
SELECT e.position, e.event_id, e.event_type, e.data, e.metadata, e.timestamp
|
|
211
|
+
FROM (${intersectParts.join('\n INTERSECT')}) keys
|
|
212
|
+
INNER JOIN events e ON e.position = keys.position
|
|
213
|
+
WHERE e.event_type = ?`;
|
|
214
|
+
ctes.push(`${cteName} AS (${cteSql})`);
|
|
215
|
+
cteNames.push(cteName);
|
|
216
|
+
for (const key of c.keys) {
|
|
217
|
+
params.push(key.name, key.value);
|
|
218
|
+
}
|
|
219
|
+
params.push(c.type);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
// Single key: flat CTE, let SQLite choose join order, INDEXED BY guides key lookups
|
|
223
|
+
const cteName = `constrained_${i}`;
|
|
224
|
+
const cteSql = `
|
|
225
|
+
SELECT e.position, e.event_id, e.event_type, e.data, e.metadata, e.timestamp
|
|
226
|
+
FROM event_keys k INDEXED BY idx_key_position
|
|
227
|
+
INNER JOIN events e ON e.position = k.position
|
|
228
|
+
WHERE k.key_name = ? AND k.key_value = ? AND e.event_type = ?`;
|
|
229
|
+
ctes.push(`${cteName} AS (${cteSql})`);
|
|
230
|
+
cteNames.push(cteName);
|
|
231
|
+
params.push(c.keys[0].name, c.keys[0].value, c.type);
|
|
232
|
+
}
|
|
136
233
|
}
|
|
137
|
-
const cteName = `constrained_${i}`;
|
|
138
|
-
ctes.push(`${cteName} AS (${cteSql})`);
|
|
139
|
-
cteNames.push(cteName);
|
|
140
|
-
params.push(c.key, c.value, c.type);
|
|
141
|
-
if (positionFilter !== null)
|
|
142
|
-
params.push(positionFilter);
|
|
143
234
|
});
|
|
144
235
|
}
|
|
145
236
|
// Build final query with UNION
|
|
146
237
|
const unionParts = cteNames.map(name => `SELECT * FROM ${name}`);
|
|
147
238
|
let sql = `WITH ${ctes.join(',\n')}
|
|
148
|
-
SELECT * FROM (${unionParts.join(' UNION ')}) AS combined
|
|
239
|
+
SELECT * FROM (${unionParts.join(' UNION ALL ')}) AS combined
|
|
149
240
|
ORDER BY position`;
|
|
150
241
|
if (limit !== undefined) {
|
|
151
242
|
sql += ' LIMIT ?';
|
|
@@ -155,8 +246,8 @@ ORDER BY position`;
|
|
|
155
246
|
const rows = stmt.all(...params);
|
|
156
247
|
return rows.map(row => this.rowToEvent(row));
|
|
157
248
|
}
|
|
158
|
-
async
|
|
159
|
-
return this.
|
|
249
|
+
async query(conditions, fromPosition, limit) {
|
|
250
|
+
return this.querySync(conditions, fromPosition, limit);
|
|
160
251
|
}
|
|
161
252
|
async getLatestPosition() {
|
|
162
253
|
const row = this.db.prepare('SELECT MAX(position) as pos FROM events').get();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"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"}
|