From 890461bcf827d2ba559a33745d50d98a758843db Mon Sep 17 00:00:00 2001 From: "SPRINX0\\prochazka" Date: Wed, 2 Apr 2025 16:39:23 +0200 Subject: [PATCH] duckDb: singleConnection query --- packages/types/engines.d.ts | 1 + .../src/query/SimpleQueryResultTabs.svelte | 52 +++++++++++++++++++ packages/web/src/tabs/QueryTab.svelte | 43 ++++++++++----- .../src/frontend/driver.js | 1 + 4 files changed, 84 insertions(+), 13 deletions(-) create mode 100644 packages/web/src/query/SimpleQueryResultTabs.svelte diff --git a/packages/types/engines.d.ts b/packages/types/engines.d.ts index a6fc762b6..0e63245d6 100644 --- a/packages/types/engines.d.ts +++ b/packages/types/engines.d.ts @@ -310,6 +310,7 @@ export interface EngineDriver extends FilterBehaviourProvider { analyserClass?: any; dumperClass?: any; + singleConnectionOnly?: boolean; } export interface DatabaseModification { diff --git a/packages/web/src/query/SimpleQueryResultTabs.svelte b/packages/web/src/query/SimpleQueryResultTabs.svelte new file mode 100644 index 000000000..91b53f676 --- /dev/null +++ b/packages/web/src/query/SimpleQueryResultTabs.svelte @@ -0,0 +1,52 @@ + + + + + {#if grider && display} + + {/if} + + + {#if result?.errorMessage} + + {:else if result?.rows} + + {/if} + + diff --git a/packages/web/src/tabs/QueryTab.svelte b/packages/web/src/tabs/QueryTab.svelte index e564e9338..1f05a94ff 100644 --- a/packages/web/src/tabs/QueryTab.svelte +++ b/packages/web/src/tabs/QueryTab.svelte @@ -143,6 +143,7 @@ import { isProApp } from '../utility/proTools'; import HorizontalSplitter from '../elements/HorizontalSplitter.svelte'; import QueryAiAssistant from '../query/QueryAiAssistant.svelte'; + import SimpleQueryResultTabs from '../query/SimpleQueryResultTabs.svelte'; export let tabid; export let conid; @@ -196,6 +197,8 @@ let isInTransaction = false; let isAutocommit = false; + let simpleQueryDataResult = null; + onMount(() => { intervalId = setInterval(() => { if (sessionId) { @@ -323,6 +326,16 @@ return; } + if (driver?.singleConnectionOnly) { + simpleQueryDataResult = await apiCall('database-connections/query-data', { + conid, + database, + sql, + }); + visibleResultTabs = true; + return; + } + executeStartLine = startLine; executeNumber++; visibleResultTabs = true; @@ -642,19 +655,23 @@ {/if} - - - - - + {#if driver?.singleConnectionOnly} + + {:else} + + + + + + {/if} diff --git a/plugins/dbgate-plugin-duckdb/src/frontend/driver.js b/plugins/dbgate-plugin-duckdb/src/frontend/driver.js index 70c39b282..71a966f7b 100644 --- a/plugins/dbgate-plugin-duckdb/src/frontend/driver.js +++ b/plugins/dbgate-plugin-duckdb/src/frontend/driver.js @@ -53,6 +53,7 @@ const driver = { title: 'DuckDB', readOnlySessions: true, supportsTransactions: true, + singleConnectionOnly: true, getQuerySplitterOptions: (usage) => usage == 'editor'