fix(node): accept exist_ok in createTable (#4432)

TypeScript CreateTableOptions.mode omitted exist_ok even though
createTable already forwards that mode to the native client.

closes: #2900

---------

Co-authored-by: Preston Zhao <195942578+canyang25@users.noreply.github.com>
This commit is contained in:
Preston Zhao
2026-10-23 02:43:21 +08:00
committed by GitHub
co-authored by Preston Zhao
parent e489d0cd7b
commit cc9f01ae26
3 changed files with 22 additions and 2 deletions
+4 -1
View File
@@ -65,7 +65,7 @@ then no error will be raised.
### mode
```ts
mode: "overwrite" | "create";
mode: "overwrite" | "create" | "exist_ok";
```
The mode to use when creating the table.
@@ -76,6 +76,9 @@ happen. Any provided data will be ignored.
If this is set to "overwrite" then any existing table will be replaced.
If this is set to "exist_ok" then an existing table is opened and any
provided data is ignored.
***
### schema?
+14
View File
@@ -117,6 +117,20 @@ describe("given a connection", () => {
await expect(tbl.countRows()).resolves.toBe(1);
});
it("should keep the existing table when mode is exist_ok", async () => {
const created = await db.createTable("test", [{ id: 1 }, { id: 2 }], {
mode: "exist_ok",
});
await expect(created.countRows()).resolves.toBe(2);
const reopened = await db.createTable("test", [{ id: 9 }], {
mode: "exist_ok",
});
await expect(reopened.countRows()).resolves.toBe(2);
const rows = (await reopened.query().toArray()) as { id: number }[];
expect(rows.map((row) => row.id).sort()).toEqual([1, 2]);
});
it("should respect limit and page token when listing tables", async () => {
const db = await connect(tmpDir.name);
+4 -1
View File
@@ -53,8 +53,11 @@ export interface CreateTableOptions {
* happen. Any provided data will be ignored.
*
* If this is set to "overwrite" then any existing table will be replaced.
*
* If this is set to "exist_ok" then an existing table is opened and any
* provided data is ignored.
*/
mode: "create" | "overwrite";
mode: "create" | "overwrite" | "exist_ok";
/**
* If this is true and the table already exists and the mode is "create"
* then no error will be raised.