diff --git a/packages/api/src/controllers/sessions.js b/packages/api/src/controllers/sessions.js
index 1a7f9fad4..e42844214 100644
--- a/packages/api/src/controllers/sessions.js
+++ b/packages/api/src/controllers/sessions.js
@@ -54,6 +54,9 @@ module.exports = {
this.dispatchMessage(sesid, 'Query execution finished');
}
const session = this.opened.find(x => x.sesid == sesid);
+ if (session.loadingReader_jslid) {
+ socket.emit(`session-jslid-done-${session.loadingReader_jslid}`);
+ }
if (session.killOnDone) {
this.kill({ sesid });
}
@@ -124,6 +127,7 @@ module.exports = {
const session = this.opened.find(x => x.sesid == sesid);
session.killOnDone = true;
const jslid = uuidv1();
+ session.loadingReader_jslid = jslid;
const fileName = queryName && appFolder ? path.join(appdir(), appFolder, `${queryName}.query.sql`) : null;
session.subprocess.send({ msgtype: 'executeReader', sql, fileName, jslid });
@@ -131,6 +135,15 @@ module.exports = {
return { jslid };
},
+ stopLoadingReader_meta: true,
+ async stopLoadingReader({ jslid }) {
+ const session = this.opened.find(x => x.loadingReader_jslid == jslid);
+ if (session) {
+ this.kill({ sesid: session.sesid });
+ }
+ return true;
+ },
+
// cancel_meta: true,
// async cancel({ sesid }) {
// const session = this.opened.find((x) => x.sesid == sesid);
diff --git a/packages/types/index.d.ts b/packages/types/index.d.ts
index 6b0174db4..9de4b755f 100644
--- a/packages/types/index.d.ts
+++ b/packages/types/index.d.ts
@@ -20,6 +20,7 @@ export interface OpenedSession {
conid: string;
database: string;
killOnDone?: boolean;
+ loadingReader_jslid: string;
subprocess: ChildProcess;
}
diff --git a/packages/web/src/tabs/QueryDataTab.svelte b/packages/web/src/tabs/QueryDataTab.svelte
index 4c1b794c1..227414ec6 100644
--- a/packages/web/src/tabs/QueryDataTab.svelte
+++ b/packages/web/src/tabs/QueryDataTab.svelte
@@ -1,16 +1,35 @@
@@ -49,6 +106,7 @@
{/if}
+