orez 0.0.35 → 0.0.37
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 +28 -17
- package/dist/cli.d.ts +6 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +57 -10
- package/dist/cli.js.map +1 -1
- package/package.json +2 -2
- package/src/cli.ts +59 -10
- package/src/restore-stress.test.ts +188 -0
package/README.md
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
1
|
# orez
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[Zero](https://zero.rocicorp.dev) and [PGlite](https://pglite.dev) made to play well together, with no native dependencies. Helped by a custom WASM fork of SQLite's [bedrock branch](https://sqlite.org/src/timeline?t=begin-concurrent) called [bedrock-sqlite](https://www.npmjs.com/package/bedrock-sqlite), and [pgsql-parser](https://www.npmjs.com/package/pgsql-parser) (the real PostgreSQL C parser compiled to WASM) for SQL analysis. No Docker, no Postgres install, no `node-gyp`, no platform-specific binaries.
|
|
4
4
|
|
|
5
5
|
```
|
|
6
6
|
bunx orez
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
Starts PGlite (WASM Postgres), a TCP proxy, and zero-cache with WASM SQLite. Exports a CLI, programmatic API, and Vite plugin. Comes with PGlite extensions `pgvector` and `pg_trgm` enabled by default.
|
|
9
|
+
Starts PGlite (WASM Postgres), a TCP proxy, and zero-cache with WASM SQLite. Exports a CLI, programmatic API, and Vite plugin. Comes with PGlite extensions `pgvector` and `pg_trgm` enabled by default. Includes `pg_dump` and `pg_restore` subcommands that can restore production Postgres dumps directly into PGlite — handling COPY→INSERT conversion, unsupported extension filtering, idempotent DDL rewriting, and WASM memory management automatically.
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
12
|
-
<img src="logo.svg" alt="orez" width="320" />
|
|
12
|
+
<img src="logo.svg" alt="orez is hebrew for rice — zero, pglite, and sqlite-wasm hanging out" width="320" />
|
|
13
13
|
</p>
|
|
14
14
|
|
|
15
|
-
## Install
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
bun install orez
|
|
19
|
-
```
|
|
20
|
-
|
|
21
15
|
## CLI
|
|
22
16
|
|
|
23
17
|
```
|
|
@@ -45,6 +39,10 @@ Ports auto-increment if already in use.
|
|
|
45
39
|
|
|
46
40
|
## Programmatic
|
|
47
41
|
|
|
42
|
+
```
|
|
43
|
+
bun install orez
|
|
44
|
+
```
|
|
45
|
+
|
|
48
46
|
```typescript
|
|
49
47
|
import { startZeroLite } from 'orez'
|
|
50
48
|
|
|
@@ -169,7 +167,7 @@ The pgoutput encoder produces spec-compliant binary messages: Begin, Relation, I
|
|
|
169
167
|
|
|
170
168
|
## Tests
|
|
171
169
|
|
|
172
|
-
|
|
170
|
+
145 tests — 108 orez tests across 8 test files covering the full stack from binary encoding to TCP-level integration, plus 37 bedrock-sqlite tests covering the WASM SQLite engine:
|
|
173
171
|
|
|
174
172
|
```
|
|
175
173
|
bun run test # orez tests
|
|
@@ -238,17 +236,30 @@ pg_restore options:
|
|
|
238
236
|
--clean drop and recreate public schema before restoring
|
|
239
237
|
```
|
|
240
238
|
|
|
241
|
-
|
|
239
|
+
`pg_restore` also supports connecting to a running orez instance via wire protocol — just pass `--pg-port`:
|
|
240
|
+
|
|
241
|
+
```
|
|
242
|
+
bunx orez pg_restore backup.sql --pg-port 6434
|
|
243
|
+
bunx orez pg_restore backup.sql --pg-port 6434 --pg-user user --pg-password password
|
|
244
|
+
bunx orez pg_restore backup.sql --direct # force direct PGlite access, skip wire protocol
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Restore streams the dump file line-by-line so it can handle large dumps without loading everything into memory. SQL is parsed using [pgsql-parser](https://www.npmjs.com/package/pgsql-parser) (the real PostgreSQL C parser compiled to WASM) for accurate statement classification and rewriting.
|
|
242
248
|
|
|
243
|
-
|
|
244
|
-
- `SET transaction_timeout` (PostgreSQL 18+ artifact)
|
|
245
|
-
- psql meta-commands like `\restrict`
|
|
249
|
+
### What restore handles automatically
|
|
246
250
|
|
|
247
|
-
|
|
251
|
+
- **COPY FROM stdin → INSERT**: PGlite WASM doesn't support the COPY protocol, so COPY blocks are converted to batched multi-row INSERTs (50 rows per statement, flushed at 1MB)
|
|
252
|
+
- **Unsupported extensions**: `pg_stat_statements`, `pg_buffercache`, `pg_cron`, etc. — CREATE, DROP, and COMMENT ON EXTENSION statements are skipped
|
|
253
|
+
- **Idempotent DDL**: `CREATE SCHEMA` → `IF NOT EXISTS`, `CREATE FUNCTION/VIEW` → `OR REPLACE`
|
|
254
|
+
- **Oversized rows**: Rows larger than 16MB are skipped with a warning (PGlite WASM crashes around 24MB per value)
|
|
255
|
+
- **Missing table references**: DDL errors from filtered dumps (e.g. ALTER TABLE on excluded tables) log a warning and continue
|
|
256
|
+
- **Transaction batching**: Data statements are grouped 200 per transaction with CHECKPOINT every 3 batches to manage WASM memory
|
|
257
|
+
- **PostgreSQL 18+ artifacts**: `SET transaction_timeout` silently skipped
|
|
258
|
+
- **psql meta-commands**: `\restrict` and similar silently skipped
|
|
248
259
|
|
|
249
|
-
|
|
260
|
+
This means you can take a `pg_dump` from a production Postgres database and restore it directly into orez — incompatible statements are handled automatically.
|
|
250
261
|
|
|
251
|
-
Standard Postgres tools (`pg_dump`, `pg_restore`, `psql`) also work against the running proxy since orez presents a standard PostgreSQL 16.4 version string over the wire.
|
|
262
|
+
When orez is not running, `pg_restore` opens PGlite directly. When orez is running, pass `--pg-port` to restore through the wire protocol. Standard Postgres tools (`pg_dump`, `pg_restore`, `psql`) also work against the running proxy since orez presents a standard PostgreSQL 16.4 version string over the wire.
|
|
252
263
|
|
|
253
264
|
## Extra: orez/s3
|
|
254
265
|
|
package/dist/cli.d.ts
CHANGED
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAqOA,wBAAsB,YAAY,CAChC,EAAE,EAAE;IAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,EAC/C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAgOhD"}
|
package/dist/cli.js
CHANGED
|
@@ -220,7 +220,7 @@ function copyValueToLiteral(val) {
|
|
|
220
220
|
return "'" + result.replace(/'/g, "''") + "'";
|
|
221
221
|
}
|
|
222
222
|
// stream a sql dump file statement-by-statement with transaction batching
|
|
223
|
-
async function execDumpFile(db, filePath) {
|
|
223
|
+
export async function execDumpFile(db, filePath) {
|
|
224
224
|
const { createReadStream } = await import('node:fs');
|
|
225
225
|
const { createInterface } = await import('node:readline');
|
|
226
226
|
const rl = createInterface({
|
|
@@ -238,7 +238,12 @@ async function execDumpFile(db, filePath) {
|
|
|
238
238
|
let copyTarget = null;
|
|
239
239
|
// accumulate COPY rows for multi-row INSERT (reduces statement count ~50x)
|
|
240
240
|
const COPY_ROWS_PER_INSERT = 50;
|
|
241
|
+
// flush early if accumulated SQL exceeds this (prevents WASM OOM on huge rows)
|
|
242
|
+
const COPY_BATCH_MAX_BYTES = 1_000_000;
|
|
243
|
+
// skip individual rows larger than this — PGlite WASM crashes around 24MB
|
|
244
|
+
const MAX_ROW_BYTES = 16_000_000;
|
|
241
245
|
let copyRows = [];
|
|
246
|
+
let copyRowsBytes = 0;
|
|
242
247
|
async function flushCopyRows() {
|
|
243
248
|
if (copyRows.length === 0 || !copyTarget)
|
|
244
249
|
return;
|
|
@@ -248,6 +253,7 @@ async function execDumpFile(db, filePath) {
|
|
|
248
253
|
executed += copyRows.length;
|
|
249
254
|
batchCount += copyRows.length;
|
|
250
255
|
copyRows = [];
|
|
256
|
+
copyRowsBytes = 0;
|
|
251
257
|
}
|
|
252
258
|
async function flushBatch() {
|
|
253
259
|
if (inBatch) {
|
|
@@ -276,8 +282,28 @@ async function execDumpFile(db, filePath) {
|
|
|
276
282
|
continue;
|
|
277
283
|
}
|
|
278
284
|
const values = line.split('\t').map(copyValueToLiteral);
|
|
279
|
-
|
|
280
|
-
|
|
285
|
+
const row = `(${values.join(', ')})`;
|
|
286
|
+
// skip rows that exceed WASM memory limits (~24MB crashes PGlite)
|
|
287
|
+
if (row.length > MAX_ROW_BYTES) {
|
|
288
|
+
log.orez(`skipping oversized row (${(row.length / 1_000_000).toFixed(1)}MB) in ${copyTarget.table}`);
|
|
289
|
+
skipped++;
|
|
290
|
+
continue;
|
|
291
|
+
}
|
|
292
|
+
// flush accumulated rows before adding if this would exceed size limit
|
|
293
|
+
if (copyRows.length > 0 && copyRowsBytes + row.length > COPY_BATCH_MAX_BYTES) {
|
|
294
|
+
if (!inBatch) {
|
|
295
|
+
await db.exec('BEGIN');
|
|
296
|
+
inBatch = true;
|
|
297
|
+
}
|
|
298
|
+
await flushCopyRows();
|
|
299
|
+
if (batchCount >= BATCH_SIZE) {
|
|
300
|
+
await flushBatch();
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
copyRows.push(row);
|
|
304
|
+
copyRowsBytes += row.length;
|
|
305
|
+
if (copyRows.length >= COPY_ROWS_PER_INSERT ||
|
|
306
|
+
copyRowsBytes >= COPY_BATCH_MAX_BYTES) {
|
|
281
307
|
if (!inBatch) {
|
|
282
308
|
await db.exec('BEGIN');
|
|
283
309
|
inBatch = true;
|
|
@@ -357,18 +383,39 @@ async function execDumpFile(db, filePath) {
|
|
|
357
383
|
await db.exec('BEGIN');
|
|
358
384
|
inBatch = true;
|
|
359
385
|
}
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
386
|
+
try {
|
|
387
|
+
await db.exec(rewritten);
|
|
388
|
+
executed++;
|
|
389
|
+
batchCount++;
|
|
390
|
+
if (batchCount >= BATCH_SIZE) {
|
|
391
|
+
await flushBatch();
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
catch (err) {
|
|
395
|
+
// non-fatal data errors (duplicate keys from internal tables, etc.)
|
|
396
|
+
log.orez(`warning: ${err?.message?.split('\n')[0] ?? err}`);
|
|
397
|
+
skipped++;
|
|
398
|
+
// transaction is aborted, rollback and start fresh
|
|
399
|
+
try {
|
|
400
|
+
await db.exec('ROLLBACK');
|
|
401
|
+
}
|
|
402
|
+
catch { }
|
|
403
|
+
inBatch = false;
|
|
404
|
+
batchCount = 0;
|
|
365
405
|
}
|
|
366
406
|
}
|
|
367
407
|
else {
|
|
368
408
|
// DDL runs outside batches
|
|
369
409
|
await flushBatch();
|
|
370
|
-
|
|
371
|
-
|
|
410
|
+
try {
|
|
411
|
+
await db.exec(rewritten);
|
|
412
|
+
executed++;
|
|
413
|
+
}
|
|
414
|
+
catch (err) {
|
|
415
|
+
// non-fatal DDL errors (missing tables from filtered dumps, etc.)
|
|
416
|
+
log.orez(`warning: ${err?.message?.split('\n')[0] ?? err}`);
|
|
417
|
+
skipped++;
|
|
418
|
+
}
|
|
372
419
|
}
|
|
373
420
|
}
|
|
374
421
|
// flush remaining batch + buffer
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "orez",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.37",
|
|
4
4
|
"description": "PGlite-powered zero-sync development backend. No Docker required.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"@electric-sql/pglite": "^0.2.17",
|
|
47
47
|
"@electric-sql/pglite-tools": "0.2.4",
|
|
48
48
|
"@rocicorp/zero": ">=0.1.0",
|
|
49
|
-
"bedrock-sqlite": "0.0.
|
|
49
|
+
"bedrock-sqlite": "0.0.29",
|
|
50
50
|
"citty": "^0.2.0",
|
|
51
51
|
"pg-gateway": "^0.3.0-beta.4",
|
|
52
52
|
"postgres": "^3.4.5",
|
package/src/cli.ts
CHANGED
|
@@ -227,7 +227,7 @@ function copyValueToLiteral(val: string): string {
|
|
|
227
227
|
}
|
|
228
228
|
|
|
229
229
|
// stream a sql dump file statement-by-statement with transaction batching
|
|
230
|
-
async function execDumpFile(
|
|
230
|
+
export async function execDumpFile(
|
|
231
231
|
db: { exec: (sql: string) => Promise<unknown> },
|
|
232
232
|
filePath: string
|
|
233
233
|
): Promise<{ executed: number; skipped: number }> {
|
|
@@ -251,7 +251,12 @@ async function execDumpFile(
|
|
|
251
251
|
let copyTarget: { table: string; columns: string[] } | null = null
|
|
252
252
|
// accumulate COPY rows for multi-row INSERT (reduces statement count ~50x)
|
|
253
253
|
const COPY_ROWS_PER_INSERT = 50
|
|
254
|
+
// flush early if accumulated SQL exceeds this (prevents WASM OOM on huge rows)
|
|
255
|
+
const COPY_BATCH_MAX_BYTES = 1_000_000
|
|
256
|
+
// skip individual rows larger than this — PGlite WASM crashes around 24MB
|
|
257
|
+
const MAX_ROW_BYTES = 16_000_000
|
|
254
258
|
let copyRows: string[] = []
|
|
259
|
+
let copyRowsBytes = 0
|
|
255
260
|
|
|
256
261
|
async function flushCopyRows() {
|
|
257
262
|
if (copyRows.length === 0 || !copyTarget) return
|
|
@@ -262,6 +267,7 @@ async function execDumpFile(
|
|
|
262
267
|
executed += copyRows.length
|
|
263
268
|
batchCount += copyRows.length
|
|
264
269
|
copyRows = []
|
|
270
|
+
copyRowsBytes = 0
|
|
265
271
|
}
|
|
266
272
|
|
|
267
273
|
async function flushBatch() {
|
|
@@ -292,8 +298,35 @@ async function execDumpFile(
|
|
|
292
298
|
continue
|
|
293
299
|
}
|
|
294
300
|
const values = line.split('\t').map(copyValueToLiteral)
|
|
295
|
-
|
|
296
|
-
|
|
301
|
+
const row = `(${values.join(', ')})`
|
|
302
|
+
|
|
303
|
+
// skip rows that exceed WASM memory limits (~24MB crashes PGlite)
|
|
304
|
+
if (row.length > MAX_ROW_BYTES) {
|
|
305
|
+
log.orez(
|
|
306
|
+
`skipping oversized row (${(row.length / 1_000_000).toFixed(1)}MB) in ${copyTarget.table}`
|
|
307
|
+
)
|
|
308
|
+
skipped++
|
|
309
|
+
continue
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
// flush accumulated rows before adding if this would exceed size limit
|
|
313
|
+
if (copyRows.length > 0 && copyRowsBytes + row.length > COPY_BATCH_MAX_BYTES) {
|
|
314
|
+
if (!inBatch) {
|
|
315
|
+
await db.exec('BEGIN')
|
|
316
|
+
inBatch = true
|
|
317
|
+
}
|
|
318
|
+
await flushCopyRows()
|
|
319
|
+
if (batchCount >= BATCH_SIZE) {
|
|
320
|
+
await flushBatch()
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
copyRows.push(row)
|
|
325
|
+
copyRowsBytes += row.length
|
|
326
|
+
if (
|
|
327
|
+
copyRows.length >= COPY_ROWS_PER_INSERT ||
|
|
328
|
+
copyRowsBytes >= COPY_BATCH_MAX_BYTES
|
|
329
|
+
) {
|
|
297
330
|
if (!inBatch) {
|
|
298
331
|
await db.exec('BEGIN')
|
|
299
332
|
inBatch = true
|
|
@@ -379,17 +412,33 @@ async function execDumpFile(
|
|
|
379
412
|
await db.exec('BEGIN')
|
|
380
413
|
inBatch = true
|
|
381
414
|
}
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
415
|
+
try {
|
|
416
|
+
await db.exec(rewritten)
|
|
417
|
+
executed++
|
|
418
|
+
batchCount++
|
|
419
|
+
if (batchCount >= BATCH_SIZE) {
|
|
420
|
+
await flushBatch()
|
|
421
|
+
}
|
|
422
|
+
} catch (err: any) {
|
|
423
|
+
// non-fatal data errors (duplicate keys from internal tables, etc.)
|
|
424
|
+
log.orez(`warning: ${err?.message?.split('\n')[0] ?? err}`)
|
|
425
|
+
skipped++
|
|
426
|
+
// transaction is aborted, rollback and start fresh
|
|
427
|
+
try { await db.exec('ROLLBACK') } catch {}
|
|
428
|
+
inBatch = false
|
|
429
|
+
batchCount = 0
|
|
387
430
|
}
|
|
388
431
|
} else {
|
|
389
432
|
// DDL runs outside batches
|
|
390
433
|
await flushBatch()
|
|
391
|
-
|
|
392
|
-
|
|
434
|
+
try {
|
|
435
|
+
await db.exec(rewritten)
|
|
436
|
+
executed++
|
|
437
|
+
} catch (err: any) {
|
|
438
|
+
// non-fatal DDL errors (missing tables from filtered dumps, etc.)
|
|
439
|
+
log.orez(`warning: ${err?.message?.split('\n')[0] ?? err}`)
|
|
440
|
+
skipped++
|
|
441
|
+
}
|
|
393
442
|
}
|
|
394
443
|
}
|
|
395
444
|
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { writeFileSync, unlinkSync } from 'node:fs'
|
|
2
|
+
import { tmpdir } from 'node:os'
|
|
3
|
+
import { join } from 'node:path'
|
|
4
|
+
|
|
5
|
+
import { PGlite } from '@electric-sql/pglite'
|
|
6
|
+
import { loadModule } from 'pgsql-parser'
|
|
7
|
+
import postgres from 'postgres'
|
|
8
|
+
import { describe, it, expect, beforeAll, afterEach } from 'vitest'
|
|
9
|
+
|
|
10
|
+
import { execDumpFile } from './cli.js'
|
|
11
|
+
import { getConfig } from './config.js'
|
|
12
|
+
import { startPgProxy } from './pg-proxy.js'
|
|
13
|
+
|
|
14
|
+
import type { Server } from 'node:net'
|
|
15
|
+
import type { AddressInfo } from 'node:net'
|
|
16
|
+
|
|
17
|
+
// generate a pg_dump-style SQL file with COPY data
|
|
18
|
+
function generateDump(opts: {
|
|
19
|
+
tables: number
|
|
20
|
+
rowsPerTable: number
|
|
21
|
+
columnsPerTable: number
|
|
22
|
+
}): string {
|
|
23
|
+
const lines: string[] = []
|
|
24
|
+
lines.push('-- pg_dump style output')
|
|
25
|
+
lines.push('SET statement_timeout = 0;')
|
|
26
|
+
lines.push("SET client_encoding = 'UTF8';")
|
|
27
|
+
lines.push('')
|
|
28
|
+
|
|
29
|
+
for (let t = 0; t < opts.tables; t++) {
|
|
30
|
+
const tableName = `test_table_${t}`
|
|
31
|
+
const cols = Array.from({ length: opts.columnsPerTable }, (_, i) => `col_${i} TEXT`)
|
|
32
|
+
lines.push(`CREATE TABLE ${tableName} (id SERIAL PRIMARY KEY, ${cols.join(', ')});`)
|
|
33
|
+
lines.push('')
|
|
34
|
+
|
|
35
|
+
// COPY block
|
|
36
|
+
const colNames = Array.from({ length: opts.columnsPerTable }, (_, i) => `col_${i}`)
|
|
37
|
+
lines.push(`COPY ${tableName} (id, ${colNames.join(', ')}) FROM stdin;`)
|
|
38
|
+
|
|
39
|
+
for (let r = 0; r < opts.rowsPerTable; r++) {
|
|
40
|
+
const vals = Array.from({ length: opts.columnsPerTable }, (_, i) => {
|
|
41
|
+
if (r % 17 === 0 && i === 0) return '\\N'
|
|
42
|
+
if (r % 13 === 0 && i === 1) return `value with tab\\there`
|
|
43
|
+
if (r % 11 === 0 && i === 2) return `O'Brien's "quoted" value\\nwith newline`
|
|
44
|
+
return `row_${r}_col_${i}_${'x'.repeat(20)}`
|
|
45
|
+
})
|
|
46
|
+
lines.push(`${r + 1}\t${vals.join('\t')}`)
|
|
47
|
+
}
|
|
48
|
+
lines.push('\\.')
|
|
49
|
+
lines.push('')
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return lines.join('\n')
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
describe('restore stress', () => {
|
|
56
|
+
let tmpFile: string
|
|
57
|
+
|
|
58
|
+
beforeAll(async () => {
|
|
59
|
+
await loadModule()
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
afterEach(() => {
|
|
63
|
+
try {
|
|
64
|
+
unlinkSync(tmpFile)
|
|
65
|
+
} catch {}
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
it('direct: 5 tables x 500 rows', async () => {
|
|
69
|
+
const dump = generateDump({ tables: 5, rowsPerTable: 500, columnsPerTable: 5 })
|
|
70
|
+
tmpFile = join(tmpdir(), `orez-stress-${Date.now()}.sql`)
|
|
71
|
+
writeFileSync(tmpFile, dump)
|
|
72
|
+
|
|
73
|
+
const db = new PGlite({ relaxedDurability: true })
|
|
74
|
+
await db.waitReady
|
|
75
|
+
|
|
76
|
+
const { executed, skipped } = await execDumpFile(db, tmpFile)
|
|
77
|
+
|
|
78
|
+
for (let t = 0; t < 5; t++) {
|
|
79
|
+
const result = await db.query(`SELECT count(*) as cnt FROM test_table_${t}`)
|
|
80
|
+
expect(Number(result.rows[0].cnt)).toBe(500)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
console.log(`direct: ${executed} executed, ${skipped} skipped`)
|
|
84
|
+
await db.close()
|
|
85
|
+
}, 60_000)
|
|
86
|
+
|
|
87
|
+
it('direct: 2 tables x 5000 rows (memory pressure)', async () => {
|
|
88
|
+
const dump = generateDump({ tables: 2, rowsPerTable: 5000, columnsPerTable: 5 })
|
|
89
|
+
tmpFile = join(tmpdir(), `orez-stress-large-${Date.now()}.sql`)
|
|
90
|
+
writeFileSync(tmpFile, dump)
|
|
91
|
+
|
|
92
|
+
const db = new PGlite({ relaxedDurability: true })
|
|
93
|
+
await db.waitReady
|
|
94
|
+
|
|
95
|
+
const { executed, skipped } = await execDumpFile(db, tmpFile)
|
|
96
|
+
|
|
97
|
+
for (let t = 0; t < 2; t++) {
|
|
98
|
+
const result = await db.query(`SELECT count(*) as cnt FROM test_table_${t}`)
|
|
99
|
+
expect(Number(result.rows[0].cnt)).toBe(5000)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
console.log(`large direct: ${executed} executed, ${skipped} skipped`)
|
|
103
|
+
await db.close()
|
|
104
|
+
}, 120_000)
|
|
105
|
+
|
|
106
|
+
it('wire: 3 tables x 1000 rows through pg proxy', async () => {
|
|
107
|
+
const dump = generateDump({ tables: 3, rowsPerTable: 1000, columnsPerTable: 5 })
|
|
108
|
+
tmpFile = join(tmpdir(), `orez-stress-wire-${Date.now()}.sql`)
|
|
109
|
+
writeFileSync(tmpFile, dump)
|
|
110
|
+
|
|
111
|
+
const db = new PGlite({ relaxedDurability: true })
|
|
112
|
+
await db.waitReady
|
|
113
|
+
|
|
114
|
+
const config = { ...getConfig(), pgPort: 0 }
|
|
115
|
+
const server: Server = await startPgProxy(db, config)
|
|
116
|
+
const port = (server.address() as AddressInfo).port
|
|
117
|
+
|
|
118
|
+
try {
|
|
119
|
+
const sql = postgres({
|
|
120
|
+
host: '127.0.0.1',
|
|
121
|
+
port,
|
|
122
|
+
user: 'user',
|
|
123
|
+
password: 'password',
|
|
124
|
+
database: 'postgres',
|
|
125
|
+
max: 1,
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
const wireDb = { exec: (query: string) => sql.unsafe(query) as Promise<unknown> }
|
|
129
|
+
const { executed, skipped } = await execDumpFile(wireDb, tmpFile)
|
|
130
|
+
|
|
131
|
+
for (let t = 0; t < 3; t++) {
|
|
132
|
+
const result =
|
|
133
|
+
await sql`SELECT count(*) as cnt FROM test_table_${sql.unsafe(String(t))}`
|
|
134
|
+
// use direct db to verify
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// verify via direct PGlite
|
|
138
|
+
for (let t = 0; t < 3; t++) {
|
|
139
|
+
const result = await db.query(`SELECT count(*) as cnt FROM test_table_${t}`)
|
|
140
|
+
expect(Number(result.rows[0].cnt)).toBe(1000)
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
console.log(`wire: ${executed} executed, ${skipped} skipped`)
|
|
144
|
+
await sql.end()
|
|
145
|
+
} finally {
|
|
146
|
+
server.close()
|
|
147
|
+
await db.close()
|
|
148
|
+
}
|
|
149
|
+
}, 120_000)
|
|
150
|
+
|
|
151
|
+
it('wire: 2 tables x 3000 rows (memory pressure via proxy)', async () => {
|
|
152
|
+
const dump = generateDump({ tables: 2, rowsPerTable: 3000, columnsPerTable: 8 })
|
|
153
|
+
tmpFile = join(tmpdir(), `orez-stress-wire-large-${Date.now()}.sql`)
|
|
154
|
+
writeFileSync(tmpFile, dump)
|
|
155
|
+
|
|
156
|
+
const db = new PGlite({ relaxedDurability: true })
|
|
157
|
+
await db.waitReady
|
|
158
|
+
|
|
159
|
+
const config = { ...getConfig(), pgPort: 0 }
|
|
160
|
+
const server: Server = await startPgProxy(db, config)
|
|
161
|
+
const port = (server.address() as AddressInfo).port
|
|
162
|
+
|
|
163
|
+
try {
|
|
164
|
+
const sql = postgres({
|
|
165
|
+
host: '127.0.0.1',
|
|
166
|
+
port,
|
|
167
|
+
user: 'user',
|
|
168
|
+
password: 'password',
|
|
169
|
+
database: 'postgres',
|
|
170
|
+
max: 1,
|
|
171
|
+
})
|
|
172
|
+
|
|
173
|
+
const wireDb = { exec: (query: string) => sql.unsafe(query) as Promise<unknown> }
|
|
174
|
+
const { executed, skipped } = await execDumpFile(wireDb, tmpFile)
|
|
175
|
+
|
|
176
|
+
for (let t = 0; t < 2; t++) {
|
|
177
|
+
const result = await db.query(`SELECT count(*) as cnt FROM test_table_${t}`)
|
|
178
|
+
expect(Number(result.rows[0].cnt)).toBe(3000)
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
console.log(`wire large: ${executed} executed, ${skipped} skipped`)
|
|
182
|
+
await sql.end()
|
|
183
|
+
} finally {
|
|
184
|
+
server.close()
|
|
185
|
+
await db.close()
|
|
186
|
+
}
|
|
187
|
+
}, 180_000)
|
|
188
|
+
})
|