diff --git a/.changeset/dry-moons-smile.md b/.changeset/dry-moons-smile.md new file mode 100644 index 000000000..ad66a2d90 --- /dev/null +++ b/.changeset/dry-moons-smile.md @@ -0,0 +1,5 @@ +--- +'@electric-sql/pglite': patch +--- + +Allow setting initial memory size. diff --git a/packages/pglite/src/pglite.ts b/packages/pglite/src/pglite.ts index cf569e7f1..1814b9224 100644 --- a/packages/pglite/src/pglite.ts +++ b/packages/pglite/src/pglite.ts @@ -300,11 +300,19 @@ export class PGlite fsBundleBuffer = buffer }) + const wasmMemory = new WebAssembly.Memory({ + initial: options.initialMemory + ? options.initialMemory / (64 * 1024) + : 2048, + maximum: 32768, + }) + let emscriptenOpts: Partial = { thisProgram: postgresExePath, WASM_PREFIX, arguments: args, noExitRuntime: true, + wasmMemory: wasmMemory, // Provide a stdin that returns EOF to avoid browser prompt stdin: () => null, print: (text: string) => { diff --git a/packages/pglite/src/postgresMod.ts b/packages/pglite/src/postgresMod.ts index c1520d93e..35e13f7c2 100644 --- a/packages/pglite/src/postgresMod.ts +++ b/packages/pglite/src/postgresMod.ts @@ -22,6 +22,7 @@ export interface PostgresMod thisProgram: string stdin: (() => number | null) | null FS: FS + wasmMemory: WebAssembly.Memory PROXYFS: Emscripten.FileSystemType WASM_PREFIX: string pg_extensions: Record> diff --git a/packages/pglite/tests/basic.test.ts b/packages/pglite/tests/basic.test.ts index 9a058762f..db88ebe38 100644 --- a/packages/pglite/tests/basic.test.ts +++ b/packages/pglite/tests/basic.test.ts @@ -651,6 +651,17 @@ await testEsmCjsAndDTC(async (importType) => { }) }) + it('initialMemory works', async () => { + const wantedMemSize = 512 * 1024 * 1024 + const db = await PGlite.create({ + initialMemory: wantedMemSize, + }) + + const instanceMemSize = db.Module.HEAPU8.buffer.byteLength + + expect(instanceMemSize).toEqual(wantedMemSize) + }) + // this tests the parameter 'max_parallel_workers_per_gather=0', it('it shouldnt use parallel workers on gather', async () => { const db = await PGlite.create() diff --git a/postgres-pglite b/postgres-pglite index ac31093ac..0c98d7c9c 160000 --- a/postgres-pglite +++ b/postgres-pglite @@ -1 +1 @@ -Subproject commit ac31093ac4d9291a167c11a1eac9dc956d4fab77 +Subproject commit 0c98d7c9c9bd3b0d01cb6728c4802b705f05ee54