Skip to content

Commit 622aa32

Browse files
authored
Merge pull request #186 from duckdb/jray/add-sync-to-close-disconnect-flush
add sync to close, disconnect, and flush
2 parents 64ee08a + c7095be commit 622aa32

File tree

10 files changed

+52
-52
lines changed

10 files changed

+52
-52
lines changed

api/src/DuckDBAppender.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ export class DuckDBAppender {
4242
constructor(appender: duckdb.Appender) {
4343
this.appender = appender;
4444
}
45-
public close() {
46-
duckdb.appender_close(this.appender);
45+
public closeSync() {
46+
duckdb.appender_close_sync(this.appender);
4747
}
48-
public flush() {
49-
duckdb.appender_flush(this.appender);
48+
public flushSync() {
49+
duckdb.appender_flush_sync(this.appender);
5050
}
5151
public get columnCount(): number {
5252
return duckdb.appender_column_count(this.appender);

api/src/DuckDBConnection.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ export class DuckDBConnection {
2323
}
2424
return (await DuckDBInstance.fromCache()).connect();
2525
}
26-
/** Same as disconnect. */
27-
public close() {
28-
return this.disconnect();
26+
/** Same as disconnectSync. */
27+
public closeSync() {
28+
return this.disconnectSync();
2929
}
30-
public disconnect() {
31-
return duckdb.disconnect(this.connection);
30+
public disconnectSync() {
31+
return duckdb.disconnect_sync(this.connection);
3232
}
3333
public interrupt() {
3434
duckdb.interrupt(this.connection);

api/src/DuckDBInstance.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class DuckDBInstance {
2929
return new DuckDBConnection(await duckdb.connect(this.db));
3030
}
3131

32-
public close() {
33-
duckdb.close(this.db);
32+
public closeSync() {
33+
duckdb.close_sync(this.db);
3434
}
3535
}

api/test/api.test.ts

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -382,14 +382,14 @@ describe('api', () => {
382382
42,
383383
]);
384384
}
385-
instance.close();
385+
instance.closeSync();
386386
});
387387
test('disconnecting connections', async () => {
388388
const instance = await DuckDBInstance.create();
389389
const connection = await instance.connect();
390390
const prepared1 = await connection.prepare('select 1');
391391
assert.isDefined(prepared1);
392-
connection.disconnect();
392+
connection.disconnectSync();
393393
try {
394394
await connection.prepare('select 2');
395395
assert.fail('should throw');
@@ -400,7 +400,7 @@ describe('api', () => {
400400
);
401401
}
402402
// ensure double-disconnect doesn't break anything
403-
connection.disconnect();
403+
connection.disconnectSync();
404404
});
405405
test('should support running prepared statements', async () => {
406406
await withConnection(async (connection) => {
@@ -1443,7 +1443,7 @@ describe('api', () => {
14431443
await connection.run('create table target(col0 int)');
14441444
const appender = await connection.createAppender('target');
14451445
appender.appendDataChunk(chunk);
1446-
appender.flush();
1446+
appender.flushSync();
14471447

14481448
const result = await connection.run('from target');
14491449
const resultChunk = await result.fetchChunk();
@@ -1477,7 +1477,7 @@ describe('api', () => {
14771477
await connection.run('create table target1(col0 int)');
14781478
const appender1 = await connection.createAppender('target1');
14791479
appender1.appendDataChunk(chunk);
1480-
appender1.flush();
1480+
appender1.flushSync();
14811481

14821482
const result1 = await connection.run('from target1');
14831483
const result1Chunk = await result1.fetchChunk();
@@ -1494,7 +1494,7 @@ describe('api', () => {
14941494
await connection.run('create table target2(col0 int)');
14951495
const appender2 = await connection.createAppender('target2');
14961496
appender2.appendDataChunk(chunk);
1497-
appender2.flush();
1497+
appender2.flushSync();
14981498

14991499
const result2 = await connection.run('from target2');
15001500
const result2Chunk = await result2.fetchChunk();
@@ -1516,7 +1516,7 @@ describe('api', () => {
15161516
await connection.run('create table target(col0 varchar)');
15171517
const appender = await connection.createAppender('target');
15181518
appender.appendDataChunk(chunk);
1519-
appender.flush();
1519+
appender.flushSync();
15201520

15211521
const result = await connection.run('from target');
15221522
const resultChunk = await result.fetchChunk();
@@ -1552,7 +1552,7 @@ describe('api', () => {
15521552
await connection.run('create table target(col0 blob)');
15531553
const appender = await connection.createAppender('target');
15541554
appender.appendDataChunk(chunk);
1555-
appender.flush();
1555+
appender.flushSync();
15561556

15571557
const result = await connection.run('from target');
15581558
const resultChunk = await result.fetchChunk();
@@ -1579,7 +1579,7 @@ describe('api', () => {
15791579
await connection.run('create table target(col0 integer[])');
15801580
const appender = await connection.createAppender('target');
15811581
appender.appendDataChunk(chunk);
1582-
appender.flush();
1582+
appender.flushSync();
15831583

15841584
const result = await connection.run('from target');
15851585
const resultChunk = await result.fetchChunk();
@@ -1626,7 +1626,7 @@ describe('api', () => {
16261626
await connection.run('create table target(col0 integer[][])');
16271627
const appender = await connection.createAppender('target');
16281628
appender.appendDataChunk(chunk);
1629-
appender.flush();
1629+
appender.flushSync();
16301630

16311631
const result = await connection.run('from target');
16321632
const resultChunk = await result.fetchChunk();
@@ -1653,7 +1653,7 @@ describe('api', () => {
16531653
await connection.run('create table target(col0 integer[3])');
16541654
const appender = await connection.createAppender('target');
16551655
appender.appendDataChunk(chunk);
1656-
appender.flush();
1656+
appender.flushSync();
16571657

16581658
const result = await connection.run('from target');
16591659
const resultChunk = await result.fetchChunk();
@@ -1680,7 +1680,7 @@ describe('api', () => {
16801680
await connection.run('create table target(col0 varchar[3])');
16811681
const appender = await connection.createAppender('target');
16821682
appender.appendDataChunk(chunk);
1683-
appender.flush();
1683+
appender.flushSync();
16841684

16851685
const result = await connection.run('from target');
16861686
const resultChunk = await result.fetchChunk();
@@ -1712,7 +1712,7 @@ describe('api', () => {
17121712
);
17131713
const appender = await connection.createAppender('target');
17141714
appender.appendDataChunk(chunk);
1715-
appender.flush();
1715+
appender.flushSync();
17161716

17171717
const result = await connection.run('from target');
17181718
const resultChunk = await result.fetchChunk();
@@ -1752,7 +1752,7 @@ describe('api', () => {
17521752
);
17531753
const appender = await connection.createAppender('target');
17541754
appender.appendDataChunk(chunk);
1755-
appender.flush();
1755+
appender.flushSync();
17561756

17571757
const result = await connection.run('from target');
17581758
const resultChunk = await result.fetchChunk();
@@ -1784,7 +1784,7 @@ describe('api', () => {
17841784
);
17851785
const appender = await connection.createAppender('target');
17861786
appender.appendDataChunk(chunk);
1787-
appender.flush();
1787+
appender.flushSync();
17881788

17891789
const result = await connection.run('from target');
17901790
const resultChunk = await result.fetchChunk();
@@ -1898,7 +1898,7 @@ describe('api', () => {
18981898
}
18991899
appender.endRow();
19001900
}
1901-
appender.flush();
1901+
appender.flushSync();
19021902

19031903
const result = await connection.run('from target');
19041904
const resultChunk = await result.fetchChunk();

api/test/bench/write.bench.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ for (const batchSize of [1, 1000]) {
5555
appender.appendFloat(Math.random() * 1_000_000);
5656
appender.endRow();
5757
}
58-
appender.close();
58+
appender.closeSync();
5959
},
6060
{
6161
setup,

bindings/pkgs/@duckdb/node-bindings/duckdb.d.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ export function open(path?: string, config?: Config): Promise<Database>;
259259
// not exposed: consolidated into open
260260

261261
// DUCKDB_API void duckdb_close(duckdb_database *database);
262-
export function close(database: Database): void;
262+
export function close_sync(database: Database): void;
263263

264264
// DUCKDB_API duckdb_state duckdb_connect(duckdb_database database, duckdb_connection *out_connection);
265265
export function connect(database: Database): Promise<Connection>;
@@ -271,7 +271,7 @@ export function interrupt(connection: Connection): void;
271271
export function query_progress(connection: Connection): QueryProgress;
272272

273273
// DUCKDB_API void duckdb_disconnect(duckdb_connection *connection);
274-
export function disconnect(connection: Connection): void;
274+
export function disconnect_sync(connection: Connection): void;
275275

276276
// DUCKDB_API const char *duckdb_library_version();
277277
export function library_version(): string;
@@ -1078,10 +1078,10 @@ export function appender_column_type(appender: Appender, column_index: number):
10781078
// not exposed: other appender functions throw
10791079

10801080
// DUCKDB_API duckdb_state duckdb_appender_flush(duckdb_appender appender);
1081-
export function appender_flush(appender: Appender): void;
1081+
export function appender_flush_sync(appender: Appender): void;
10821082

10831083
// DUCKDB_API duckdb_state duckdb_appender_close(duckdb_appender appender);
1084-
export function appender_close(appender: Appender): void;
1084+
export function appender_close_sync(appender: Appender): void;
10851085

10861086
// DUCKDB_API duckdb_state duckdb_appender_destroy(duckdb_appender *appender);
10871087
// not exposed: destroyed in finalizer

bindings/src/duckdb_node_bindings.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1182,11 +1182,11 @@ class DuckDBNodeAddon : public Napi::Addon<DuckDBNodeAddon> {
11821182
InstanceMethod("get_or_create_from_cache", &DuckDBNodeAddon::get_or_create_from_cache),
11831183

11841184
InstanceMethod("open", &DuckDBNodeAddon::open),
1185-
InstanceMethod("close", &DuckDBNodeAddon::close),
1185+
InstanceMethod("close_sync", &DuckDBNodeAddon::close_sync),
11861186
InstanceMethod("connect", &DuckDBNodeAddon::connect),
11871187
InstanceMethod("interrupt", &DuckDBNodeAddon::interrupt),
11881188
InstanceMethod("query_progress", &DuckDBNodeAddon::query_progress),
1189-
InstanceMethod("disconnect", &DuckDBNodeAddon::disconnect),
1189+
InstanceMethod("disconnect_sync", &DuckDBNodeAddon::disconnect_sync),
11901190

11911191
InstanceMethod("library_version", &DuckDBNodeAddon::library_version),
11921192

@@ -1405,8 +1405,8 @@ class DuckDBNodeAddon : public Napi::Addon<DuckDBNodeAddon> {
14051405
InstanceMethod("appender_create_ext", &DuckDBNodeAddon::appender_create_ext),
14061406
InstanceMethod("appender_column_count", &DuckDBNodeAddon::appender_column_count),
14071407
InstanceMethod("appender_column_type", &DuckDBNodeAddon::appender_column_type),
1408-
InstanceMethod("appender_flush", &DuckDBNodeAddon::appender_flush),
1409-
InstanceMethod("appender_close", &DuckDBNodeAddon::appender_close),
1408+
InstanceMethod("appender_flush_sync", &DuckDBNodeAddon::appender_flush_sync),
1409+
InstanceMethod("appender_close_sync", &DuckDBNodeAddon::appender_close_sync),
14101410
InstanceMethod("appender_end_row", &DuckDBNodeAddon::appender_end_row),
14111411
InstanceMethod("append_default", &DuckDBNodeAddon::append_default),
14121412
InstanceMethod("append_bool", &DuckDBNodeAddon::append_bool),
@@ -1497,7 +1497,7 @@ class DuckDBNodeAddon : public Napi::Addon<DuckDBNodeAddon> {
14971497

14981498
// DUCKDB_API void duckdb_close(duckdb_database *database);
14991499
// function close(database: Database): void
1500-
Napi::Value close(const Napi::CallbackInfo& info) {
1500+
Napi::Value close_sync(const Napi::CallbackInfo& info) {
15011501
auto env = info.Env();
15021502
auto database_holder_ptr = GetDatabaseHolderFromExternal(env, info[0]);
15031503
// duckdb_close is a no-op if already closed
@@ -1539,7 +1539,7 @@ class DuckDBNodeAddon : public Napi::Addon<DuckDBNodeAddon> {
15391539

15401540
// DUCKDB_API void duckdb_disconnect(duckdb_connection *connection);
15411541
// function disconnect(connection: Connection): void
1542-
Napi::Value disconnect(const Napi::CallbackInfo& info) {
1542+
Napi::Value disconnect_sync(const Napi::CallbackInfo& info) {
15431543
auto env = info.Env();
15441544
auto connection_holder_ptr = GetConnectionHolderFromExternal(env, info[0]);
15451545
// duckdb_disconnect is a no-op if already disconnected
@@ -3949,7 +3949,7 @@ class DuckDBNodeAddon : public Napi::Addon<DuckDBNodeAddon> {
39493949

39503950
// DUCKDB_API duckdb_state duckdb_appender_flush(duckdb_appender appender);
39513951
// function appender_flush(appender: Appender): void
3952-
Napi::Value appender_flush(const Napi::CallbackInfo& info) {
3952+
Napi::Value appender_flush_sync(const Napi::CallbackInfo& info) {
39533953
auto env = info.Env();
39543954
auto appender = GetAppenderFromExternal(env, info[0]);
39553955
if (duckdb_appender_flush(appender)) {
@@ -3960,7 +3960,7 @@ class DuckDBNodeAddon : public Napi::Addon<DuckDBNodeAddon> {
39603960

39613961
// DUCKDB_API duckdb_state duckdb_appender_close(duckdb_appender appender);
39623962
// function appender_close(appender: Appender): void
3963-
Napi::Value appender_close(const Napi::CallbackInfo& info) {
3963+
Napi::Value appender_close_sync(const Napi::CallbackInfo& info) {
39643964
auto env = info.Env();
39653965
auto appender = GetAppenderFromExternal(env, info[0]);
39663966
if (duckdb_appender_close(appender)) {

bindings/test/appender.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ suite('appender', () => {
6666
duckdb.appender_end_row(appender);
6767
duckdb.append_int32(appender, 33);
6868
duckdb.appender_end_row(appender);
69-
duckdb.appender_flush(appender);
69+
duckdb.appender_flush_sync(appender);
7070

7171
const result = await duckdb.query(connection, 'from appender_target');
7272
await expectResult(result, {
@@ -210,8 +210,8 @@ suite('appender', () => {
210210

211211
duckdb.appender_end_row(appender);
212212
// explicitly calling both flush and close is unnecessary because close does a flush, but this exercises them.
213-
duckdb.appender_flush(appender);
214-
duckdb.appender_close(appender);
213+
duckdb.appender_flush_sync(appender);
214+
duckdb.appender_close_sync(appender);
215215

216216
const result = await duckdb.query(connection, 'from appender_target');
217217
await expectResult(result, {
@@ -319,7 +319,7 @@ suite('appender', () => {
319319
if (source_chunk) {
320320
duckdb.append_data_chunk(appender, source_chunk);
321321
}
322-
duckdb.appender_flush(appender);
322+
duckdb.appender_flush_sync(appender);
323323

324324
const result = await duckdb.query(connection, 'from appender_target');
325325
await expectResult(result, {

bindings/test/connection.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ suite('connection', () => {
88
const prepared1 = await duckdb.prepare(connection, 'select 1');
99
expect(prepared1).toBeDefined();
1010
const { extracted_statements } = await duckdb.extract_statements(connection, 'select 10; select 20');
11-
duckdb.disconnect(connection);
11+
duckdb.disconnect_sync(connection);
1212
await expect(async () => await duckdb.prepare(connection, 'select 2'))
1313
.rejects.toStrictEqual(new Error('Failed to prepare: connection disconnected'));
1414
await expect(async () => await duckdb.query(connection, 'select 3'))
@@ -25,9 +25,9 @@ suite('connection', () => {
2525
await withConnection(async (connection) => {
2626
const prepared1 = await duckdb.prepare(connection, 'select 1');
2727
expect(prepared1).toBeDefined();
28-
duckdb.disconnect(connection);
28+
duckdb.disconnect_sync(connection);
2929
// ensure a second disconnect is a no-op
30-
duckdb.disconnect(connection);
30+
duckdb.disconnect_sync(connection);
3131
await expect(async () => await duckdb.prepare(connection, 'select 3'))
3232
.rejects.toStrictEqual(new Error('Failed to prepare: connection disconnected'));
3333
});

bindings/test/open.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,28 @@ suite('open', () => {
55
test('no args', async () => {
66
const db = await duckdb.open();
77
expect(db).toBeTruthy();
8-
duckdb.close(db);
8+
duckdb.close_sync(db);
99
});
1010
test('memory arg', async () => {
1111
const db = await duckdb.open(':memory:');
1212
expect(db).toBeTruthy();
13-
duckdb.close(db);
13+
duckdb.close_sync(db);
1414
});
1515
test('with config', async () => {
1616
const config = duckdb.create_config();
1717
duckdb.set_config(config, 'custom_user_agent', 'my_user_agent');
1818
const db = await duckdb.open(':memory:', config);
1919
expect(db).toBeTruthy();
20-
duckdb.close(db);
20+
duckdb.close_sync(db);
2121
});
2222
test('close', async () => {
2323
const db = await duckdb.open();
2424
expect(db).toBeTruthy();
25-
duckdb.close(db);
25+
duckdb.close_sync(db);
2626
await expect(async () => await duckdb.connect(db)).rejects.toStrictEqual(
2727
new Error('Failed to connect: instance closed')
2828
);
2929
// double-close should be a no-op
30-
duckdb.close(db);
30+
duckdb.close_sync(db);
3131
});
3232
});

0 commit comments

Comments
 (0)