Skip to content

Commit

Permalink
ProgressUpdate
Browse files Browse the repository at this point in the history
  • Loading branch information
carlopi committed Jan 22, 2025
1 parent 971f049 commit 0b13b71
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 9 deletions.
4 changes: 2 additions & 2 deletions lib/src/webdb.cc
Original file line number Diff line number Diff line change
Expand Up @@ -797,8 +797,8 @@ class ProgressBarCustom : public ProgressBarDisplay {
to_send = 1.0;
}
~ProgressBarCustom() {}
static void SendMessage(bool end, double percentage, double times) {
emscripten::val::global("DUCKDB_RUNTIME").call<void>("progressUpdate", end, percentage, times);
static void SendMessage(double end, double percentage, double times) {
emscripten::val::global("DUCKDB_RUNTIME").call<void>("progressUpdate", end ? 1.0 : 0.0, percentage, times);
}

public:
Expand Down
4 changes: 2 additions & 2 deletions packages/duckdb-wasm/src/bindings/runtime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ export interface DuckDBRuntime {
syncFile(mod: DuckDBModule, fileId: number): void;
closeFile(mod: DuckDBModule, fileId: number): void;
getLastFileModificationTime(mod: DuckDBModule, fileId: number): number;
progressUpdate(mod: DuckDBModule, final: number, a: number, b:number): void;
progressUpdate(final: number, a: number, b:number): void;
truncateFile(mod: DuckDBModule, fileId: number, newSize: number): void;
readFile(mod: DuckDBModule, fileId: number, buffer: number, bytes: number, location: number): number;
writeFile(mod: DuckDBModule, fileId: number, buffer: number, bytes: number, location: number): number;
Expand Down Expand Up @@ -173,7 +173,7 @@ export const DEFAULT_RUNTIME: DuckDBRuntime = {
getLastFileModificationTime: (_mod: DuckDBModule, _fileId: number): number => {
return 0;
},
progressUpdate: (_mod: DuckDBModule, _fileId: number, a: number, b: number): void => {
progressUpdate: (_fileId: number, a: number, b: number): void => {
return;
},
truncateFile: (_mod: DuckDBModule, _fileId: number, _newSize: number): void => {},
Expand Down
15 changes: 12 additions & 3 deletions packages/duckdb-wasm/src/bindings/runtime_browser.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import { StatusCode } from '../status';
import {
WorkerResponseType,
} from '../parallel/worker_request';

import { addS3Headers, getHTTPUrl } from '../utils';

import {
Expand Down Expand Up @@ -550,9 +554,14 @@ export const BROWSER_RUNTIME: DuckDBRuntime & {
}
return 0;
},
progressUpdate: (_mod: DuckDBModule, done: number, a: number, b: number): void => {
//postMessage("");
console.log("Update progress: ", done, a, b);
progressUpdate: (done: number, percentage: number, repeat: number): void => {
if (postMessage) {
const map = new Map<string, string>();
map.set("status", done ? "completed" : "in-progress");
map.set("percentage", percentage);
map.set("repetitions", repeat);
postMessage({requestId: 0, type: WorkerResponseType.PROGRESS_UPDATE, data: {data: map}});
}
},
checkDirectory: (mod: DuckDBModule, pathPtr: number, pathLen: number) => {
const path = readString(mod, pathPtr, pathLen);
Expand Down
2 changes: 1 addition & 1 deletion packages/duckdb-wasm/src/bindings/runtime_node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ export const NODE_RUNTIME: DuckDBRuntime & {
}
return 0;
},
progressUpdate: (_mod: DuckDBModule, _fileId: number, a: number, b: number): void => {
progressUpdate: (_fileId: number, a: number, b: number): void => {
return;
},
getLastFileModificationTime: (mod: DuckDBModule, fileId: number) => {
Expand Down
4 changes: 4 additions & 0 deletions packages/duckdb-wasm/src/log.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ export type LogEntry<O, T, E, V> = {
readonly value: V;
};

export type ProgressEntry = {
readonly data: Map<string,string>;
}

export type LogEntryVariant =
| LogEntry<LogOrigin.BINDINGS, LogTopic.INSTANTIATE, LogEvent.ERROR, string>
| LogEntry<LogOrigin.BINDINGS, LogTopic.QUERY, LogEvent.START, void>
Expand Down
7 changes: 7 additions & 0 deletions packages/duckdb-wasm/src/parallel/async_bindings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ export class AsyncDuckDB implements AsyncDuckDBBindings {
/** Instantiate the module */
protected _onInstantiationProgress: ((p: InstantiationProgress) => void)[] = [];

/** Progress callbacks */
//protected _onProgressCallback: ((p: InstantiationProgress) => void)[] = [];

/** The logger */
protected readonly _logger: Logger;
/** The worker */
Expand Down Expand Up @@ -122,6 +125,10 @@ export class AsyncDuckDB implements AsyncDuckDBBindings {
const response = event.data as WorkerResponseVariant;
switch (response.type) {
// Request failed?
case WorkerResponseType.PROGRESS_UPDATE: {
console.log(response.data);
return;
}
case WorkerResponseType.LOG: {
this._logger.log(response.data);
return;
Expand Down
4 changes: 3 additions & 1 deletion packages/duckdb-wasm/src/parallel/worker_request.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { CSVInsertOptions, JSONInsertOptions, ArrowInsertOptions } from '../bindings/insert_options';
import { LogEntryVariant } from '../log';
import { LogEntryVariant, ProgressEntry } from '../log';
import { ScriptTokens } from '../bindings/tokens';
import { FileStatistics } from '../bindings/file_stats';
import { DuckDBConfig } from '../bindings/config';
Expand Down Expand Up @@ -56,6 +56,7 @@ export enum WorkerResponseType {
FILE_STATISTICS = 'FILE_STATISTICS',
INSTANTIATE_PROGRESS = 'INSTANTIATE_PROGRESS',
LOG = 'LOG',
PROGRESS_UPDATE = 'PROGRESS_UPDATE',
OK = 'OK',
PREPARED_STATEMENT_ID = 'PREPARED_STATEMENT_ID',
QUERY_PLAN = 'QUERY_PLAN',
Expand Down Expand Up @@ -152,6 +153,7 @@ export type WorkerResponseVariant =
| WorkerResponse<WorkerResponseType.FILE_STATISTICS, FileStatistics>
| WorkerResponse<WorkerResponseType.INSTANTIATE_PROGRESS, InstantiationProgress>
| WorkerResponse<WorkerResponseType.LOG, LogEntryVariant>
| WorkerResponse<WorkerResponseType.PROGRESS_UPDATE, ProgressEntry>
| WorkerResponse<WorkerResponseType.OK, null>
| WorkerResponse<WorkerResponseType.PREPARED_STATEMENT_ID, number>
| WorkerResponse<WorkerResponseType.QUERY_PLAN, Uint8Array>
Expand Down

0 comments on commit 0b13b71

Please sign in to comment.