Skip to content

Commit c95a6bf

Browse files
committed
ProgressUpdate
1 parent 971f049 commit c95a6bf

File tree

7 files changed

+31
-9
lines changed

7 files changed

+31
-9
lines changed

lib/src/webdb.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -797,8 +797,8 @@ class ProgressBarCustom : public ProgressBarDisplay {
797797
to_send = 1.0;
798798
}
799799
~ProgressBarCustom() {}
800-
static void SendMessage(bool end, double percentage, double times) {
801-
emscripten::val::global("DUCKDB_RUNTIME").call<void>("progressUpdate", end, percentage, times);
800+
static void SendMessage(double end, double percentage, double times) {
801+
emscripten::val::global("DUCKDB_RUNTIME").call<void>("progressUpdate", end ? 1.0 : 0.0, percentage, times);
802802
}
803803

804804
public:

packages/duckdb-wasm/src/bindings/runtime.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,6 @@ export interface DuckDBRuntime {
135135
syncFile(mod: DuckDBModule, fileId: number): void;
136136
closeFile(mod: DuckDBModule, fileId: number): void;
137137
getLastFileModificationTime(mod: DuckDBModule, fileId: number): number;
138-
progressUpdate(mod: DuckDBModule, final: number, a: number, b:number): void;
139138
truncateFile(mod: DuckDBModule, fileId: number, newSize: number): void;
140139
readFile(mod: DuckDBModule, fileId: number, buffer: number, bytes: number, location: number): number;
141140
writeFile(mod: DuckDBModule, fileId: number, buffer: number, bytes: number, location: number): number;
@@ -150,6 +149,9 @@ export interface DuckDBRuntime {
150149
checkFile(mod: DuckDBModule, pathPtr: number, pathLen: number): boolean;
151150
removeFile(mod: DuckDBModule, pathPtr: number, pathLen: number): void;
152151

152+
// Internal API - experimental
153+
progressUpdate(final: number, percentage: number, iteration:number): void;
154+
153155
// Call a scalar UDF function
154156
callScalarUDF(
155157
mod: DuckDBModule,
@@ -173,7 +175,7 @@ export const DEFAULT_RUNTIME: DuckDBRuntime = {
173175
getLastFileModificationTime: (_mod: DuckDBModule, _fileId: number): number => {
174176
return 0;
175177
},
176-
progressUpdate: (_mod: DuckDBModule, _fileId: number, a: number, b: number): void => {
178+
progressUpdate: (_final: number, _percentage: number, _iteration: number): void => {
177179
return;
178180
},
179181
truncateFile: (_mod: DuckDBModule, _fileId: number, _newSize: number): void => {},

packages/duckdb-wasm/src/bindings/runtime_browser.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
import { StatusCode } from '../status';
2+
import {
3+
WorkerResponseType,
4+
} from '../parallel/worker_request';
5+
26
import { addS3Headers, getHTTPUrl } from '../utils';
37

48
import {
@@ -550,9 +554,10 @@ export const BROWSER_RUNTIME: DuckDBRuntime & {
550554
}
551555
return 0;
552556
},
553-
progressUpdate: (_mod: DuckDBModule, done: number, a: number, b: number): void => {
554-
//postMessage("");
555-
console.log("Update progress: ", done, a, b);
557+
progressUpdate: (done: number, percentage: number, repeat: number): void => {
558+
if (postMessage) {
559+
postMessage({requestId: 0, type: WorkerResponseType.PROGRESS_UPDATE, data: {status: done?"completed":"in-progress", percentage: percentage, repetitions: repeat}});
560+
}
556561
},
557562
checkDirectory: (mod: DuckDBModule, pathPtr: number, pathLen: number) => {
558563
const path = readString(mod, pathPtr, pathLen);

packages/duckdb-wasm/src/bindings/runtime_node.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ export const NODE_RUNTIME: DuckDBRuntime & {
196196
}
197197
return 0;
198198
},
199-
progressUpdate: (_mod: DuckDBModule, _fileId: number, a: number, b: number): void => {
199+
progressUpdate: (_final: number, _percentage: number, _iteration: number): void => {
200200
return;
201201
},
202202
getLastFileModificationTime: (mod: DuckDBModule, fileId: number) => {

packages/duckdb-wasm/src/log.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ export type LogEntry<O, T, E, V> = {
4141
readonly value: V;
4242
};
4343

44+
export type ProgressEntry = {
45+
readonly status: string;
46+
readonly percentage: string;
47+
readonly repetitions: string;
48+
}
49+
4450
export type LogEntryVariant =
4551
| LogEntry<LogOrigin.BINDINGS, LogTopic.INSTANTIATE, LogEvent.ERROR, string>
4652
| LogEntry<LogOrigin.BINDINGS, LogTopic.QUERY, LogEvent.START, void>

packages/duckdb-wasm/src/parallel/async_bindings.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ export class AsyncDuckDB implements AsyncDuckDBBindings {
3232
/** Instantiate the module */
3333
protected _onInstantiationProgress: ((p: InstantiationProgress) => void)[] = [];
3434

35+
/** Progress callbacks */
36+
//protected _onProgressCallback: ((p: InstantiationProgress) => void)[] = [];
37+
3538
/** The logger */
3639
protected readonly _logger: Logger;
3740
/** The worker */
@@ -122,6 +125,10 @@ export class AsyncDuckDB implements AsyncDuckDBBindings {
122125
const response = event.data as WorkerResponseVariant;
123126
switch (response.type) {
124127
// Request failed?
128+
case WorkerResponseType.PROGRESS_UPDATE: {
129+
console.log(response.data);
130+
return;
131+
}
125132
case WorkerResponseType.LOG: {
126133
this._logger.log(response.data);
127134
return;

packages/duckdb-wasm/src/parallel/worker_request.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { CSVInsertOptions, JSONInsertOptions, ArrowInsertOptions } from '../bindings/insert_options';
2-
import { LogEntryVariant } from '../log';
2+
import { LogEntryVariant, ProgressEntry } from '../log';
33
import { ScriptTokens } from '../bindings/tokens';
44
import { FileStatistics } from '../bindings/file_stats';
55
import { DuckDBConfig } from '../bindings/config';
@@ -56,6 +56,7 @@ export enum WorkerResponseType {
5656
FILE_STATISTICS = 'FILE_STATISTICS',
5757
INSTANTIATE_PROGRESS = 'INSTANTIATE_PROGRESS',
5858
LOG = 'LOG',
59+
PROGRESS_UPDATE = 'PROGRESS_UPDATE',
5960
OK = 'OK',
6061
PREPARED_STATEMENT_ID = 'PREPARED_STATEMENT_ID',
6162
QUERY_PLAN = 'QUERY_PLAN',
@@ -152,6 +153,7 @@ export type WorkerResponseVariant =
152153
| WorkerResponse<WorkerResponseType.FILE_STATISTICS, FileStatistics>
153154
| WorkerResponse<WorkerResponseType.INSTANTIATE_PROGRESS, InstantiationProgress>
154155
| WorkerResponse<WorkerResponseType.LOG, LogEntryVariant>
156+
| WorkerResponse<WorkerResponseType.PROGRESS_UPDATE, ProgressEntry>
155157
| WorkerResponse<WorkerResponseType.OK, null>
156158
| WorkerResponse<WorkerResponseType.PREPARED_STATEMENT_ID, number>
157159
| WorkerResponse<WorkerResponseType.QUERY_PLAN, Uint8Array>

0 commit comments

Comments
 (0)