From 2450ca070002f36849e968974e1d87360e60c4cf Mon Sep 17 00:00:00 2001 From: LZS911 <932177767@qq.com> Date: Mon, 2 Feb 2026 16:32:38 +0800 Subject: [PATCH] feat: support sqle ee issue 2636 --- webapp/package.json | 2 +- .../packages/core-localization/src/locales/en.ts | 1 + .../packages/core-localization/src/locales/zh.ts | 1 + .../src/TableViewer/TableError.tsx | 9 ++++++++- .../plugin-sql-editor/src/QueryDataSource.ts | 15 ++++++++++++++- webapp/packages/product-default/package.json | 2 +- 6 files changed, 26 insertions(+), 4 deletions(-) diff --git a/webapp/package.json b/webapp/package.json index 3805590d252..0b38423a7cd 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -55,4 +55,4 @@ "vitest": "^3" }, "packageManager": "yarn@4.9.2" -} \ No newline at end of file +} diff --git a/webapp/packages/core-localization/src/locales/en.ts b/webapp/packages/core-localization/src/locales/en.ts index fdb69da8314..5f895f6632e 100644 --- a/webapp/packages/core-localization/src/locales/en.ts +++ b/webapp/packages/core-localization/src/locales/en.ts @@ -14,6 +14,7 @@ export default [ ['ui_processing_cancel', 'Cancel'], ['ui_processing_canceling', 'Cancelling...'], ['ui_create_workflow', 'Create Workflow'], + ['ui_still_execute', 'Execute Anyway'], ['ui_processing_canceled', 'Canceled'], ['ui_processing_reload', 'Reload'], ['ui_processing_retry', 'Retry'], diff --git a/webapp/packages/core-localization/src/locales/zh.ts b/webapp/packages/core-localization/src/locales/zh.ts index 98ff74b3de8..70dd27e20c6 100644 --- a/webapp/packages/core-localization/src/locales/zh.ts +++ b/webapp/packages/core-localization/src/locales/zh.ts @@ -13,6 +13,7 @@ export default [ ['ui_processing_loading', '加载中...'], ['ui_processing_cancel', '取消'], ['ui_create_workflow', '发起变更工单'], + ['ui_still_execute', '仍要执行'], ['ui_processing_canceling', '取消中...'], ['ui_processing_canceled', '已取消'], ['ui_processing_retry', '重试'], diff --git a/webapp/packages/plugin-data-viewer/src/TableViewer/TableError.tsx b/webapp/packages/plugin-data-viewer/src/TableViewer/TableError.tsx index 261d98616af..2e52b3f5170 100644 --- a/webapp/packages/plugin-data-viewer/src/TableViewer/TableError.tsx +++ b/webapp/packages/plugin-data-viewer/src/TableViewer/TableError.tsx @@ -22,7 +22,7 @@ import { ConnectionSchemaManagerService } from '@cloudbeaver/plugin-datasource-c import { NavigationTabsService } from '@cloudbeaver/plugin-navigation-tabs'; import { ConnectionInfoResource, createConnectionParam } from '@cloudbeaver/core-connections'; import { CommonDialogService, DialogueStateResult } from '@cloudbeaver/core-dialogs'; -import { LocalStorageSqlDataSource, SqlDataSourceService } from '@cloudbeaver/plugin-sql-editor'; +import { LocalStorageSqlDataSource, QueryDataSource, SqlDataSourceService } from '@cloudbeaver/plugin-sql-editor'; import { isSQLEditorTab, SqlEditorNavigatorService } from '@cloudbeaver/plugin-sql-editor-navigation-tab'; import { SqlEditorSessionClosedDialog } from './SqlEditorSessionClosedDialog.js'; @@ -150,6 +150,10 @@ export const TableError = observer(function TableError({ model, loading, } }, [navigationTabsService, sqlDataSourceService, commonDialogService, connectionInfo, sqlEditorNavigatorService]); + const onStillExecute = useCallback(async () => { + await (model.source as QueryDataSource).requestWithExecuteAnyway(); + }, [model]); + useEffect(() => { const SQL_CONTEXT_ERROR_CODE = '508'; if (errorInfo.error !== model.source.error) { @@ -195,6 +199,9 @@ export const TableError = observer(function TableError({ model, loading, + ); diff --git a/webapp/packages/plugin-sql-editor/src/QueryDataSource.ts b/webapp/packages/plugin-sql-editor/src/QueryDataSource.ts index 4cda3fa0b07..7d20a53e3ec 100644 --- a/webapp/packages/plugin-sql-editor/src/QueryDataSource.ts +++ b/webapp/packages/plugin-sql-editor/src/QueryDataSource.ts @@ -41,6 +41,8 @@ export interface IQueryRequestInfo extends IRequestInfo { export class QueryDataSource extends ResultSetDataSource { currentTask: ITask | null; override requestInfo: IQueryRequestInfo; + /** When true, passes isExecuteAnyway to the API for re-execution despite previous errors */ + executeAnyway = false; override get canCancel(): boolean { return this.currentTask?.cancellable || false; @@ -175,6 +177,16 @@ export class QueryDataSource { + this.executeAnyway = true; + try { + await this.requestData(); + } finally { + this.executeAnyway = false; + } + } + async request(prevResults: IDatabaseResultSet[]): Promise { const options = this.options; const executionContext = this.executionContext; @@ -241,7 +253,8 @@ export class QueryDataSource[0] & { isExecuteAnyway?: boolean }); return taskInfo; } diff --git a/webapp/packages/product-default/package.json b/webapp/packages/product-default/package.json index 493c1c74611..dfe34e4199d 100644 --- a/webapp/packages/product-default/package.json +++ b/webapp/packages/product-default/package.json @@ -55,4 +55,4 @@ "tailwindcss": "4.0.7", "typescript": "^5" } -} \ No newline at end of file +}