flatsql 3.11.1 → 3.12.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.
Files changed (181) hide show
  1. package/README.md +61 -795
  2. package/bin/flatsql.mjs +76 -0
  3. package/cpp/README.md +18 -0
  4. package/cpp/include/flatsql/flatsql.h +162 -0
  5. package/cpp/include/flatsql/flatsql_io.h +159 -0
  6. package/docs/API-3.12.md +114 -0
  7. package/package.json +28 -123
  8. package/wasm/flatsql.wasm +0 -0
  9. package/wasm/index.d.ts +61 -548
  10. package/wasm/index.js +280 -1281
  11. package/wasm/integrity.json +6 -26
  12. package/wasm/runtime/LICENSE.sdk.txt +190 -0
  13. package/wasm/runtime/NOTICE.txt +2 -0
  14. package/wasm/runtime/browser-guest.mjs +1 -0
  15. package/wasm/runtime/browser-host.mjs +1 -0
  16. package/wasm/runtime/node-guest.mjs +2 -0
  17. package/wasm/runtime/node-host.mjs +5 -0
  18. package/wasm/runtime/opfsIoWorker.mjs +1 -0
  19. package/wasm/runtime/wasiThreadBrowserWorker.mjs +1 -0
  20. package/dist/artifacts/index.d.ts +0 -3
  21. package/dist/artifacts/index.d.ts.map +0 -1
  22. package/dist/artifacts/index.js +0 -3
  23. package/dist/artifacts/index.js.map +0 -1
  24. package/dist/artifacts/transport.d.ts +0 -5
  25. package/dist/artifacts/transport.d.ts.map +0 -1
  26. package/dist/artifacts/transport.js +0 -45
  27. package/dist/artifacts/transport.js.map +0 -1
  28. package/dist/artifacts/types.d.ts +0 -34
  29. package/dist/artifacts/types.d.ts.map +0 -1
  30. package/dist/artifacts/types.js +0 -2
  31. package/dist/artifacts/types.js.map +0 -1
  32. package/dist/btree/btree.d.ts +0 -34
  33. package/dist/btree/btree.d.ts.map +0 -1
  34. package/dist/btree/btree.js +0 -234
  35. package/dist/btree/btree.js.map +0 -1
  36. package/dist/btree/index.d.ts +0 -3
  37. package/dist/btree/index.d.ts.map +0 -1
  38. package/dist/btree/index.js +0 -3
  39. package/dist/btree/index.js.map +0 -1
  40. package/dist/btree/types.d.ts +0 -36
  41. package/dist/btree/types.d.ts.map +0 -1
  42. package/dist/btree/types.js +0 -55
  43. package/dist/btree/types.js.map +0 -1
  44. package/dist/cluster/index.d.ts +0 -11
  45. package/dist/cluster/index.d.ts.map +0 -1
  46. package/dist/cluster/index.js +0 -59
  47. package/dist/cluster/index.js.map +0 -1
  48. package/dist/response/artifact.d.ts +0 -4
  49. package/dist/response/artifact.d.ts.map +0 -1
  50. package/dist/response/artifact.js +0 -102
  51. package/dist/response/artifact.js.map +0 -1
  52. package/dist/response/cache-key.d.ts +0 -6
  53. package/dist/response/cache-key.d.ts.map +0 -1
  54. package/dist/response/cache-key.js +0 -114
  55. package/dist/response/cache-key.js.map +0 -1
  56. package/dist/response/index.d.ts +0 -5
  57. package/dist/response/index.d.ts.map +0 -1
  58. package/dist/response/index.js +0 -5
  59. package/dist/response/index.js.map +0 -1
  60. package/dist/response/memory-cache.d.ts +0 -17
  61. package/dist/response/memory-cache.d.ts.map +0 -1
  62. package/dist/response/memory-cache.js +0 -76
  63. package/dist/response/memory-cache.js.map +0 -1
  64. package/dist/response/types.d.ts +0 -57
  65. package/dist/response/types.d.ts.map +0 -1
  66. package/dist/response/types.js +0 -2
  67. package/dist/response/types.js.map +0 -1
  68. package/dist/schema/index.d.ts +0 -3
  69. package/dist/schema/index.d.ts.map +0 -1
  70. package/dist/schema/index.js +0 -3
  71. package/dist/schema/index.js.map +0 -1
  72. package/dist/schema/parser.d.ts +0 -25
  73. package/dist/schema/parser.d.ts.map +0 -1
  74. package/dist/schema/parser.js +0 -474
  75. package/dist/schema/parser.js.map +0 -1
  76. package/dist/schema/types.d.ts +0 -33
  77. package/dist/schema/types.d.ts.map +0 -1
  78. package/dist/schema/types.js +0 -29
  79. package/dist/schema/types.js.map +0 -1
  80. package/dist/standalone/index.d.ts +0 -3
  81. package/dist/standalone/index.d.ts.map +0 -1
  82. package/dist/standalone/index.js +0 -3
  83. package/dist/standalone/index.js.map +0 -1
  84. package/dist/standalone/process-client.d.ts +0 -85
  85. package/dist/standalone/process-client.d.ts.map +0 -1
  86. package/dist/standalone/process-client.js +0 -537
  87. package/dist/standalone/process-client.js.map +0 -1
  88. package/dist/standalone/wasmedge-runner.d.ts +0 -19
  89. package/dist/standalone/wasmedge-runner.d.ts.map +0 -1
  90. package/dist/standalone/wasmedge-runner.js +0 -108
  91. package/dist/standalone/wasmedge-runner.js.map +0 -1
  92. package/dist/storage/index.d.ts +0 -3
  93. package/dist/storage/index.d.ts.map +0 -1
  94. package/dist/storage/index.js +0 -3
  95. package/dist/storage/index.js.map +0 -1
  96. package/dist/storage/stacked-flatbuffers.d.ts +0 -38
  97. package/dist/storage/stacked-flatbuffers.d.ts.map +0 -1
  98. package/dist/storage/stacked-flatbuffers.js +0 -253
  99. package/dist/storage/stacked-flatbuffers.js.map +0 -1
  100. package/dist/storage/types.d.ts +0 -23
  101. package/dist/storage/types.d.ts.map +0 -1
  102. package/dist/storage/types.js +0 -27
  103. package/dist/storage/types.js.map +0 -1
  104. package/dist/stress/aggregate.d.ts +0 -3
  105. package/dist/stress/aggregate.d.ts.map +0 -1
  106. package/dist/stress/aggregate.js +0 -61
  107. package/dist/stress/aggregate.js.map +0 -1
  108. package/dist/stress/docker-compose.d.ts +0 -17
  109. package/dist/stress/docker-compose.d.ts.map +0 -1
  110. package/dist/stress/docker-compose.js +0 -156
  111. package/dist/stress/docker-compose.js.map +0 -1
  112. package/dist/stress/index.d.ts +0 -10
  113. package/dist/stress/index.d.ts.map +0 -1
  114. package/dist/stress/index.js +0 -10
  115. package/dist/stress/index.js.map +0 -1
  116. package/dist/stress/metrics.d.ts +0 -3
  117. package/dist/stress/metrics.d.ts.map +0 -1
  118. package/dist/stress/metrics.js +0 -83
  119. package/dist/stress/metrics.js.map +0 -1
  120. package/dist/stress/native-publish-event-workload.d.ts +0 -3
  121. package/dist/stress/native-publish-event-workload.d.ts.map +0 -1
  122. package/dist/stress/native-publish-event-workload.js +0 -465
  123. package/dist/stress/native-publish-event-workload.js.map +0 -1
  124. package/dist/stress/production-gate.d.ts +0 -4
  125. package/dist/stress/production-gate.d.ts.map +0 -1
  126. package/dist/stress/production-gate.js +0 -12
  127. package/dist/stress/production-gate.js.map +0 -1
  128. package/dist/stress/report.d.ts +0 -3
  129. package/dist/stress/report.d.ts.map +0 -1
  130. package/dist/stress/report.js +0 -174
  131. package/dist/stress/report.js.map +0 -1
  132. package/dist/stress/sds-discovery.d.ts +0 -4
  133. package/dist/stress/sds-discovery.d.ts.map +0 -1
  134. package/dist/stress/sds-discovery.js +0 -40
  135. package/dist/stress/sds-discovery.js.map +0 -1
  136. package/dist/stress/smoke-runner.d.ts +0 -3
  137. package/dist/stress/smoke-runner.d.ts.map +0 -1
  138. package/dist/stress/smoke-runner.js +0 -64
  139. package/dist/stress/smoke-runner.js.map +0 -1
  140. package/dist/stress/types.d.ts +0 -219
  141. package/dist/stress/types.d.ts.map +0 -1
  142. package/dist/stress/types.js +0 -2
  143. package/dist/stress/types.js.map +0 -1
  144. package/dist/stress/workload.d.ts +0 -6
  145. package/dist/stress/workload.d.ts.map +0 -1
  146. package/dist/stress/workload.js +0 -144
  147. package/dist/stress/workload.js.map +0 -1
  148. package/docs/PARTITION-STORE-WASM.md +0 -338
  149. package/docs/PARTITION-STORE.md +0 -2380
  150. package/docs/agents/response-artifacts.md +0 -65
  151. package/docs/response-artifacts.md +0 -86
  152. package/scripts/stress-docker.sh +0 -279
  153. package/sdm/flatsql-spatial.wasm +0 -0
  154. package/sdm/index.d.ts +0 -88
  155. package/sdm/index.js +0 -253
  156. package/sdm/manifest.json +0 -402
  157. package/stress/docker/Dockerfile +0 -11
  158. package/stress/docker/docker-compose.yml +0 -51
  159. package/stress/sds/aggregate.mjs +0 -97
  160. package/stress/sds/run.mjs +0 -105
  161. package/stress/sds/write-compose.mjs +0 -96
  162. package/wasm/flatsql-client.js +0 -280
  163. package/wasm/flatsql-io.d.ts +0 -97
  164. package/wasm/flatsql-io.js +0 -625
  165. package/wasm/flatsql-p4-threads.wasm +0 -0
  166. package/wasm/flatsql-ps-threads.wasm +0 -0
  167. package/wasm/flatsql-wasi-noeh.wasm +0 -0
  168. package/wasm/flatsql-wasi.wasm +0 -0
  169. package/wasm/flatsql.js +0 -2
  170. package/wasm/flatsql.worker.js +0 -209
  171. package/wasm/native/flatsql_wasmedge_runner.cpp +0 -858
  172. package/wasm/ps-node-fault.d.mts +0 -23
  173. package/wasm/ps-node-fault.mjs +0 -381
  174. package/wasm/ps-node-guest.mjs +0 -173
  175. package/wasm/ps-node-host.d.mts +0 -95
  176. package/wasm/ps-node-host.mjs +0 -476
  177. package/wasm/ps-node-imports.mjs +0 -847
  178. package/wasm/ps.d.ts +0 -21
  179. package/wasm/ps.js +0 -75
  180. package/wasm/wasi.d.ts +0 -11
  181. package/wasm/wasi.js +0 -51
@@ -1,465 +0,0 @@
1
- import { performance } from 'node:perf_hooks';
2
- const TABLE_NAME = 'PublishEventRecord';
3
- const FILE_IDENTIFIER = 'PUBL';
4
- const TEXT_ENCODER = new TextEncoder();
5
- const COLD_FANOUT_QUERIES_PER_CONCURRENCY = 256;
6
- const BYTES_PER_GIB = 1024 * 1024 * 1024;
7
- const FULL_MODE_STORAGE_TARGET_PCT = 0.96;
8
- const FULL_MODE_RECORD_OVERHEAD_BYTES = 256;
9
- const MAX_DERIVED_PAYLOAD_BYTES = 1024 * 1024;
10
- // The same three indexes the TypeScript workload creates (FILE_ID, RECORD_ID,
11
- // EVENT_INDEX), declared the engine's way, so both runtimes answer the same
12
- // point, LIMIT and range queries with the same access paths.
13
- const PUBLISH_EVENT_SCHEMA = `
14
- table PublishEventRecord {
15
- FILE_ID: string (key);
16
- RECORD_ID: string (index);
17
- EVENT_INDEX: int (index);
18
- PAYLOAD_SIZE: int;
19
- }
20
-
21
- root_type PublishEventRecord;
22
- `;
23
- function bytes(value) {
24
- return TEXT_ENCODER.encode(value).length;
25
- }
26
- function measuredDuration(start) {
27
- return Number(Math.max(performance.now() - start, 0.001).toFixed(3));
28
- }
29
- function basePayloadSize(nodeId, recordIndex) {
30
- return 96 + ((nodeId + recordIndex) % 7) * 32;
31
- }
32
- function payloadSize(manifest, nodeId, recordIndex) {
33
- const baseSize = basePayloadSize(nodeId, recordIndex);
34
- if (manifest.mode !== 'full') {
35
- return baseSize;
36
- }
37
- const targetBytesPerRecord = Math.floor((manifest.nodeStorageGb * BYTES_PER_GIB * FULL_MODE_STORAGE_TARGET_PCT) / Math.max(1, manifest.recordsPerNode));
38
- const derivedSize = Math.max(baseSize, targetBytesPerRecord - FULL_MODE_RECORD_OVERHEAD_BYTES);
39
- return Math.min(derivedSize, MAX_DERIVED_PAYLOAD_BYTES);
40
- }
41
- // BLOB cells come back from the engine as plain arrays of byte values; count
42
- // them as the bytes they are, not as the text of their digits.
43
- function isByteArray(cell) {
44
- return Array.isArray(cell) && (cell.length === 0 || typeof cell[0] === 'number');
45
- }
46
- function resultCellBytes(cell) {
47
- if (cell instanceof Uint8Array)
48
- return cell.length;
49
- if (isByteArray(cell))
50
- return cell.length;
51
- if (typeof cell === 'bigint')
52
- return bytes(cell.toString());
53
- if (cell === null || cell === undefined)
54
- return 0;
55
- return bytes(String(cell));
56
- }
57
- function queryResultBytes(result) {
58
- const columnBytes = result.columns.reduce((total, column) => total + bytes(column), 0);
59
- return result.rows.reduce((rowTotal, row) => rowTotal + row.reduce((cellTotal, cell) => cellTotal + resultCellBytes(cell), 0), columnBytes);
60
- }
61
- function rawFlatbufferBytes(result) {
62
- return result.rows.reduce((total, row) => total + row.reduce((cellTotal, cell) => {
63
- return cellTotal + (cell instanceof Uint8Array || isByteArray(cell) ? cell.length : 0);
64
- }, 0), 0);
65
- }
66
- function requestBytes(sql, params = []) {
67
- return bytes(sql) + params.reduce((total, param) => total + resultCellBytes(param), 0) + 16;
68
- }
69
- function findUseCase(manifest, id) {
70
- const useCase = manifest.useCases.find((candidate) => candidate.id === id);
71
- if (!useCase) {
72
- throw new Error(`Stress use case not found: ${id}`);
73
- }
74
- return useCase;
75
- }
76
- function baseMetric(manifest, useCase, nodeId, values, schema = TABLE_NAME) {
77
- return {
78
- runId: manifest.runId,
79
- nodeId,
80
- schema,
81
- useCase: useCase.id,
82
- operation: useCase.operation,
83
- measurement: 'measured',
84
- transport: manifest.transport,
85
- runtime: 'standalone',
86
- ...values,
87
- };
88
- }
89
- function buildSchemaSweepMetrics(manifest, assignmentSchemas, nodeId) {
90
- const useCase = findUseCase(manifest, 'schema-sweep');
91
- const schemaByName = new Map(manifest.schemas.map((schema) => [schema.name, schema]));
92
- return assignmentSchemas.map((schemaName) => {
93
- const schema = schemaByName.get(schemaName);
94
- return baseMetric(manifest, useCase, nodeId, {
95
- records: 1,
96
- requestBytes: schema ? bytes(schema.path) : bytes(schemaName),
97
- responseBytes: schema ? bytes(schema.name) + bytes(schema.rootType) : bytes(schemaName),
98
- flatbufferBytes: 0,
99
- storageBytes: 0,
100
- durationMs: 0.001,
101
- cacheHits: 0,
102
- cacheMisses: 0,
103
- cacheSize: 0,
104
- errors: 0,
105
- }, schemaName);
106
- });
107
- }
108
- function createDatabase(flatsql, dbName) {
109
- const db = flatsql.createDatabase(PUBLISH_EVENT_SCHEMA, dbName);
110
- db.registerFileId(FILE_IDENTIFIER, TABLE_NAME);
111
- db.enableDemoExtractors();
112
- return db;
113
- }
114
- function reserveFullModeStorage(db, manifest) {
115
- if (manifest.mode !== 'full') {
116
- return;
117
- }
118
- const targetBytes = Math.ceil(manifest.nodeStorageGb * BYTES_PER_GIB * FULL_MODE_STORAGE_TARGET_PCT);
119
- db.reserveStorageBytes(targetBytes);
120
- }
121
- function createRecord(flatsql, manifest, nodeId, index, hotRecordCount) {
122
- const fileId = index < hotRecordCount
123
- ? `publish-${manifest.runId}-${nodeId}-hot`
124
- : `publish-${manifest.runId}-${nodeId}-cold-${index}`;
125
- const recordId = `record-${nodeId}-${index}`;
126
- return {
127
- fileId,
128
- recordId,
129
- buffer: flatsql.createTestPublishEvent(fileId, recordId, index, payloadSize(manifest, nodeId, index)),
130
- };
131
- }
132
- function buildFixture(flatsql, manifest, nodeId) {
133
- const db = createDatabase(flatsql, `sds-stress-${manifest.runId}-${nodeId}`);
134
- reserveFullModeStorage(db, manifest);
135
- const recordCount = Math.max(1, manifest.recordsPerNode);
136
- const hotRecordCount = Math.max(1, Math.ceil(recordCount * manifest.hotQueryRatio));
137
- const coldLimit = Math.max(1, manifest.queryConcurrency * COLD_FANOUT_QUERIES_PER_CONCURRENCY);
138
- const coldFileIds = [];
139
- let firstRecordId = '';
140
- let firstRecordBytes = 0;
141
- let flatbufferBytes = 0;
142
- let batchBytes = 0;
143
- let batch = [];
144
- const start = performance.now();
145
- let index = 0;
146
- try {
147
- for (; index < recordCount; index++) {
148
- const record = createRecord(flatsql, manifest, nodeId, index, hotRecordCount);
149
- if (index === 0) {
150
- firstRecordId = record.recordId;
151
- firstRecordBytes = record.buffer.length;
152
- }
153
- if (index >= hotRecordCount && coldFileIds.length < coldLimit) {
154
- coldFileIds.push(record.fileId);
155
- }
156
- flatbufferBytes += record.buffer.length;
157
- batch.push(record.buffer);
158
- batchBytes += record.buffer.length + 4;
159
- if (batchBytes >= manifest.batchBytes) {
160
- db.ingestBuffers(batch);
161
- batch = [];
162
- batchBytes = 0;
163
- }
164
- }
165
- if (batch.length > 0) {
166
- db.ingestBuffers(batch);
167
- }
168
- }
169
- catch (error) {
170
- throw new Error(`fixture ingest failed at record ${index} of ${recordCount}, ` +
171
- `flatbufferBytes=${flatbufferBytes}, pendingBatchBytes=${batchBytes}: ${describeError(error)}`);
172
- }
173
- return {
174
- db,
175
- hotFileId: `publish-${manifest.runId}-${nodeId}-hot`,
176
- coldFileIds,
177
- firstRecordId,
178
- firstRecordBytes,
179
- flatbufferBytes,
180
- ingestDurationMs: measuredDuration(start),
181
- recordCount,
182
- };
183
- }
184
- function queryMetric(manifest, useCaseId, nodeId, fixture, sql, params, result, durationMs, cacheHits = 0, cacheMisses = 0, cacheSize = 0) {
185
- const useCase = findUseCase(manifest, useCaseId);
186
- const flatBytes = rawFlatbufferBytes(result);
187
- const responseBytes = useCaseId === 'raw-flatbuffer-retrieval' ? flatBytes : queryResultBytes(result);
188
- return baseMetric(manifest, useCase, nodeId, {
189
- records: result.rows.length,
190
- requestBytes: requestBytes(sql, params),
191
- responseBytes,
192
- flatbufferBytes: flatBytes,
193
- storageBytes: fixture.db.getStorageInfo().size,
194
- durationMs,
195
- cacheHits,
196
- cacheMisses,
197
- cacheSize,
198
- errors: 0,
199
- });
200
- }
201
- function runQuery(db, sql, params = []) {
202
- const start = performance.now();
203
- const result = db.query(sql, [...params]);
204
- return { result, durationMs: measuredDuration(start) };
205
- }
206
- function describeError(error) {
207
- if (error instanceof Error) {
208
- return error.stack ?? error.message;
209
- }
210
- return Object.prototype.toString.call(error);
211
- }
212
- function buildHotCacheMetric(manifest, fixture, nodeId) {
213
- const sql = `SELECT _data FROM ${TABLE_NAME} WHERE FILE_ID = ?`;
214
- fixture.db.registerQueryTemplate('hotFileIdRaw', sql, true);
215
- const before = fixture.db.getQueryCacheStats();
216
- let result;
217
- let durationMs = 0;
218
- const repetitions = Math.max(4, Math.min(32, manifest.queryConcurrency));
219
- for (let index = 0; index < repetitions; index++) {
220
- const start = performance.now();
221
- result = fixture.db.queryTemplate('hotFileIdRaw', [fixture.hotFileId]);
222
- durationMs += measuredDuration(start);
223
- }
224
- const after = fixture.db.getQueryCacheStats();
225
- const flatBytes = result ? rawFlatbufferBytes(result) : 0;
226
- return baseMetric(manifest, findUseCase(manifest, 'hot-file-id-cache'), nodeId, {
227
- records: (result?.rows.length ?? 0) * repetitions,
228
- requestBytes: requestBytes(sql, [fixture.hotFileId]) * repetitions,
229
- responseBytes: result ? queryResultBytes(result) * repetitions : 0,
230
- flatbufferBytes: flatBytes * repetitions,
231
- storageBytes: fixture.db.getStorageInfo().size,
232
- durationMs: Number(durationMs.toFixed(3)),
233
- cacheHits: after.hits - before.hits,
234
- cacheMisses: after.misses - before.misses,
235
- cacheSize: after.size,
236
- errors: 0,
237
- });
238
- }
239
- function buildColdFanoutMetric(manifest, fixture, nodeId) {
240
- const useCase = findUseCase(manifest, 'cold-file-id-fanout');
241
- const fileIds = fixture.coldFileIds.length > 0 ? fixture.coldFileIds : [fixture.hotFileId];
242
- const sql = `SELECT RECORD_ID, EVENT_INDEX FROM ${TABLE_NAME} WHERE FILE_ID = ?`;
243
- let records = 0;
244
- let requestTotal = 0;
245
- let responseTotal = 0;
246
- let durationMs = 0;
247
- for (const fileId of fileIds) {
248
- const query = runQuery(fixture.db, sql, [fileId]);
249
- records += query.result.rows.length;
250
- requestTotal += requestBytes(sql, [fileId]);
251
- responseTotal += queryResultBytes(query.result);
252
- durationMs += query.durationMs;
253
- }
254
- return baseMetric(manifest, useCase, nodeId, {
255
- records,
256
- requestBytes: requestTotal,
257
- responseBytes: responseTotal,
258
- flatbufferBytes: 0,
259
- storageBytes: fixture.db.getStorageInfo().size,
260
- durationMs: Number(durationMs.toFixed(3)),
261
- cacheHits: 0,
262
- cacheMisses: fileIds.length,
263
- cacheSize: fixture.db.getQueryCacheStats().size,
264
- errors: 0,
265
- });
266
- }
267
- function buildMixedCacheMetric(manifest, fixture, nodeId) {
268
- const sql = `SELECT RECORD_ID, PAYLOAD_SIZE FROM ${TABLE_NAME} WHERE FILE_ID = ?`;
269
- fixture.db.registerQueryTemplate('mixedFileId', sql, true);
270
- const before = fixture.db.getQueryCacheStats();
271
- const cold = fixture.coldFileIds[0] ?? fixture.hotFileId;
272
- const queries = [fixture.hotFileId, fixture.hotFileId, cold, fixture.hotFileId, cold, fixture.hotFileId];
273
- let records = 0;
274
- let requestTotal = 0;
275
- let responseTotal = 0;
276
- let durationMs = 0;
277
- for (const fileId of queries) {
278
- const start = performance.now();
279
- const result = fixture.db.queryTemplate('mixedFileId', [fileId]);
280
- durationMs += measuredDuration(start);
281
- records += result.rows.length;
282
- requestTotal += requestBytes(sql, [fileId]);
283
- responseTotal += queryResultBytes(result);
284
- }
285
- const after = fixture.db.getQueryCacheStats();
286
- return baseMetric(manifest, findUseCase(manifest, 'mixed-hot-cold-query'), nodeId, {
287
- records,
288
- requestBytes: requestTotal,
289
- responseBytes: responseTotal,
290
- flatbufferBytes: 0,
291
- storageBytes: fixture.db.getStorageInfo().size,
292
- durationMs: Number(durationMs.toFixed(3)),
293
- cacheHits: after.hits - before.hits,
294
- cacheMisses: after.misses - before.misses,
295
- cacheSize: after.size,
296
- errors: 0,
297
- });
298
- }
299
- function buildLoadAndRebuildMetric(flatsql, manifest, fixture, nodeId, useCaseId) {
300
- const useCase = findUseCase(manifest, useCaseId);
301
- const db = createDatabase(flatsql, `${manifest.runId}-${nodeId}-${useCaseId}`);
302
- const sourceStorageBytes = fixture.db.getStorageInfo().size;
303
- db.reserveStorageBytes(sourceStorageBytes);
304
- const start = performance.now();
305
- db.loadAndRebuildFrom(fixture.db);
306
- const durationMs = measuredDuration(start);
307
- const storageBytes = db.getStorageInfo().size;
308
- db.destroy();
309
- return baseMetric(manifest, useCase, nodeId, {
310
- records: fixture.recordCount,
311
- requestBytes: sourceStorageBytes,
312
- responseBytes: 64,
313
- flatbufferBytes: fixture.flatbufferBytes,
314
- storageBytes,
315
- durationMs,
316
- cacheHits: 0,
317
- cacheMisses: 0,
318
- cacheSize: 0,
319
- errors: 0,
320
- });
321
- }
322
- function buildCacheInvalidationMetric(flatsql, manifest, fixture, nodeId) {
323
- const sql = `SELECT RECORD_ID FROM ${TABLE_NAME} WHERE FILE_ID = ?`;
324
- fixture.db.registerQueryTemplate('cacheInvalidationFileId', sql, true);
325
- const before = fixture.db.getQueryCacheStats();
326
- const firstStart = performance.now();
327
- const first = fixture.db.queryTemplate('cacheInvalidationFileId', [fixture.hotFileId]);
328
- const firstDuration = measuredDuration(firstStart);
329
- fixture.db.queryTemplate('cacheInvalidationFileId', [fixture.hotFileId]);
330
- const churn = flatsql.createTestPublishEvent(fixture.hotFileId, `record-${nodeId}-churn`, fixture.recordCount + 1, payloadSize(manifest, nodeId, fixture.recordCount + 1));
331
- const ingestStart = performance.now();
332
- fixture.db.ingestOne(churn);
333
- const ingestDuration = measuredDuration(ingestStart);
334
- const thirdStart = performance.now();
335
- const third = fixture.db.queryTemplate('cacheInvalidationFileId', [fixture.hotFileId]);
336
- const thirdDuration = measuredDuration(thirdStart);
337
- const after = fixture.db.getQueryCacheStats();
338
- return baseMetric(manifest, findUseCase(manifest, 'cache-invalidation-churn'), nodeId, {
339
- records: first.rows.length + third.rows.length + 1,
340
- requestBytes: requestBytes(sql, [fixture.hotFileId]) * 3 + churn.length,
341
- responseBytes: queryResultBytes(first) + queryResultBytes(third),
342
- flatbufferBytes: churn.length,
343
- storageBytes: fixture.db.getStorageInfo().size,
344
- durationMs: Number((firstDuration + ingestDuration + thirdDuration).toFixed(3)),
345
- cacheHits: after.hits - before.hits,
346
- cacheMisses: after.misses - before.misses,
347
- cacheSize: after.size,
348
- errors: 0,
349
- });
350
- }
351
- function buildBandwidthStreamingMetric(flatsql, manifest, fixture, nodeId) {
352
- const useCase = findUseCase(manifest, 'bandwidth-constrained-streaming');
353
- const db = createDatabase(flatsql, `${manifest.runId}-${nodeId}-bandwidth`);
354
- const sourceStorageBytes = fixture.db.getStorageInfo().size;
355
- db.reserveStorageBytes(sourceStorageBytes);
356
- const start = performance.now();
357
- db.loadAndRebuildFrom(fixture.db);
358
- const durationMs = measuredDuration(start);
359
- const storageBytes = db.getStorageInfo().size;
360
- db.destroy();
361
- return baseMetric(manifest, useCase, nodeId, {
362
- records: fixture.recordCount,
363
- requestBytes: sourceStorageBytes,
364
- responseBytes: fixture.recordCount * 8,
365
- flatbufferBytes: fixture.flatbufferBytes,
366
- storageBytes,
367
- durationMs,
368
- cacheHits: 0,
369
- cacheMisses: 0,
370
- cacheSize: 0,
371
- errors: 0,
372
- });
373
- }
374
- export async function buildMeasuredStandalonePublishEventMetrics(manifest) {
375
- const { loadFlatSQLStandalone } = await import(new URL('../../test/support/legacy-standalone.js', import.meta.url).href);
376
- const flatsql = await loadFlatSQLStandalone();
377
- const metrics = [];
378
- for (const assignment of manifest.assignments) {
379
- let stage = 'build-fixture';
380
- let fixture;
381
- try {
382
- fixture = buildFixture(flatsql, manifest, assignment.nodeId);
383
- stage = 'schema-sweep';
384
- metrics.push(...buildSchemaSweepMetrics(manifest, assignment.schemas, assignment.nodeId));
385
- stage = 'bulk-streaming-ingest';
386
- metrics.push(baseMetric(manifest, findUseCase(manifest, 'bulk-streaming-ingest'), assignment.nodeId, {
387
- records: fixture.recordCount,
388
- requestBytes: fixture.flatbufferBytes + fixture.recordCount * 4,
389
- responseBytes: fixture.recordCount * 8,
390
- flatbufferBytes: fixture.flatbufferBytes,
391
- storageBytes: fixture.db.getStorageInfo().size,
392
- durationMs: fixture.ingestDurationMs,
393
- cacheHits: 0,
394
- cacheMisses: 0,
395
- cacheSize: 0,
396
- errors: 0,
397
- }));
398
- stage = 'hot-file-id-cache';
399
- metrics.push(buildHotCacheMetric(manifest, fixture, assignment.nodeId));
400
- stage = 'cold-file-id-fanout';
401
- metrics.push(buildColdFanoutMetric(manifest, fixture, assignment.nodeId));
402
- stage = 'mixed-hot-cold-query';
403
- metrics.push(buildMixedCacheMetric(manifest, fixture, assignment.nodeId));
404
- stage = 'raw-flatbuffer-retrieval';
405
- const rawSql = `SELECT _data FROM ${TABLE_NAME} WHERE FILE_ID = ?`;
406
- const rawStart = performance.now();
407
- const rawStream = fixture.db.queryRawFlatBufferStream(rawSql, [fixture.hotFileId]);
408
- metrics.push(baseMetric(manifest, findUseCase(manifest, 'raw-flatbuffer-retrieval'), assignment.nodeId, {
409
- records: 1,
410
- requestBytes: requestBytes(rawSql, [fixture.hotFileId]),
411
- responseBytes: rawStream.length,
412
- flatbufferBytes: rawStream.length,
413
- storageBytes: fixture.db.getStorageInfo().size,
414
- durationMs: measuredDuration(rawStart),
415
- cacheHits: 0,
416
- cacheMisses: 0,
417
- cacheSize: fixture.db.getQueryCacheStats().size,
418
- errors: 0,
419
- }));
420
- stage = 'sql-projection-query';
421
- const projectionSql = `SELECT RECORD_ID, EVENT_INDEX, PAYLOAD_SIZE FROM ${TABLE_NAME} WHERE FILE_ID = ?`;
422
- const projection = runQuery(fixture.db, projectionSql, [fixture.hotFileId]);
423
- metrics.push(queryMetric(manifest, 'sql-projection-query', assignment.nodeId, fixture, projectionSql, [fixture.hotFileId], projection.result, projection.durationMs));
424
- stage = 'raw-sql-query';
425
- const rawQuerySql = `SELECT RECORD_ID FROM ${TABLE_NAME} WHERE EVENT_INDEX BETWEEN 0 AND ?`;
426
- const rawQuery = runQuery(fixture.db, rawQuerySql, [Math.min(3, fixture.recordCount - 1)]);
427
- metrics.push(queryMetric(manifest, 'raw-sql-query', assignment.nodeId, fixture, rawQuerySql, [Math.min(3, fixture.recordCount - 1)], rawQuery.result, rawQuery.durationMs));
428
- stage = 'large-result-query';
429
- const largeResultSql = `SELECT RECORD_ID, FILE_ID FROM ${TABLE_NAME} LIMIT 5000`;
430
- const largeResult = runQuery(fixture.db, largeResultSql);
431
- metrics.push(queryMetric(manifest, 'large-result-query', assignment.nodeId, fixture, largeResultSql, [], largeResult.result, largeResult.durationMs));
432
- stage = 'node-fanout-query';
433
- const fanoutSql = `SELECT RECORD_ID FROM ${TABLE_NAME} WHERE FILE_ID = ?`;
434
- const fanout = runQuery(fixture.db, fanoutSql, [fixture.hotFileId]);
435
- metrics.push(queryMetric(manifest, 'node-fanout-query', assignment.nodeId, fixture, fanoutSql, [fixture.hotFileId], fanout.result, fanout.durationMs));
436
- stage = 'backfill-sync';
437
- metrics.push(buildLoadAndRebuildMetric(flatsql, manifest, fixture, assignment.nodeId, 'backfill-sync'));
438
- stage = 'restart-rebuild';
439
- metrics.push(buildLoadAndRebuildMetric(flatsql, manifest, fixture, assignment.nodeId, 'restart-rebuild'));
440
- stage = 'cache-invalidation-churn';
441
- metrics.push(buildCacheInvalidationMetric(flatsql, manifest, fixture, assignment.nodeId));
442
- stage = 'bandwidth-constrained-streaming';
443
- metrics.push(buildBandwidthStreamingMetric(flatsql, manifest, fixture, assignment.nodeId));
444
- stage = 'sds-domain-query-pack';
445
- const domainSql = `SELECT FILE_ID, RECORD_ID, PAYLOAD_SIZE FROM ${TABLE_NAME} WHERE RECORD_ID = ?`;
446
- const domain = runQuery(fixture.db, domainSql, [fixture.firstRecordId]);
447
- metrics.push(queryMetric(manifest, 'sds-domain-query-pack', assignment.nodeId, fixture, domainSql, [fixture.firstRecordId], domain.result, domain.durationMs));
448
- stage = 'udl-style-api-shape';
449
- const udlSql = `SELECT RECORD_ID, EVENT_INDEX FROM ${TABLE_NAME} WHERE FILE_ID = ? LIMIT 1`;
450
- const udl = runQuery(fixture.db, udlSql, [fixture.hotFileId]);
451
- metrics.push(queryMetric(manifest, 'udl-style-api-shape', assignment.nodeId, fixture, udlSql, [fixture.hotFileId], udl.result, udl.durationMs));
452
- if (fixture.firstRecordBytes === 0) {
453
- throw new Error('Native publish-event fixture did not create any records.');
454
- }
455
- }
456
- catch (error) {
457
- throw new Error(`Standalone PublishEventRecord workload failed at node ${assignment.nodeId} stage ${stage}: ${describeError(error)}`);
458
- }
459
- finally {
460
- fixture?.db.destroy();
461
- }
462
- }
463
- return metrics;
464
- }
465
- //# sourceMappingURL=native-publish-event-workload.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"native-publish-event-workload.js","sourceRoot":"","sources":["../../src/stress/native-publish-event-workload.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { StressDerivedReport } from './types.js';
2
- export declare function formatProductionReadinessFailure(report: StressDerivedReport): string;
3
- export declare function assertProductionReadiness(report: StressDerivedReport): void;
4
- //# sourceMappingURL=production-gate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"production-gate.d.ts","sourceRoot":"","sources":["../../src/stress/production-gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAOpF;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAI3E"}
@@ -1,12 +0,0 @@
1
- export function formatProductionReadinessFailure(report) {
2
- const failed = report.productionReadiness.failedRequirements
3
- .map((requirement) => `${requirement.id}: required ${requirement.required}, actual ${requirement.actual}`)
4
- .join('; ');
5
- return `Production readiness gate failed for ${report.runId}: ${failed}`;
6
- }
7
- export function assertProductionReadiness(report) {
8
- if (report.productionReadiness.status !== 'pass') {
9
- throw new Error(formatProductionReadinessFailure(report));
10
- }
11
- }
12
- //# sourceMappingURL=production-gate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"production-gate.js","sourceRoot":"","sources":["../../src/stress/production-gate.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gCAAgC,CAAC,MAA2B;IAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,kBAAkB;SACzD,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CACnB,GAAG,WAAW,CAAC,EAAE,cAAc,WAAW,CAAC,QAAQ,YAAY,WAAW,CAAC,MAAM,EAAE,CACpF;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,wCAAwC,MAAM,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAA2B;IACnE,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { MetricEvent, StressDerivedReport, StressSummary, WorkloadManifest } from './types.js';
2
- export declare function buildDerivedStressReport(manifest: WorkloadManifest, metrics: readonly MetricEvent[], summary: StressSummary): StressDerivedReport;
3
- //# sourceMappingURL=report.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/stress/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EAEnB,aAAa,EACb,gBAAgB,EACjB,MAAM,YAAY,CAAC;AA4CpB,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,SAAS,WAAW,EAAE,EAC/B,OAAO,EAAE,aAAa,GACrB,mBAAmB,CAiLrB"}