This is an automated email from the ASF dual-hosted git repository.
gianm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new d10dd2fca08 fix: web console workbench result menu, Mod+Enter, and
BigInt cells (#20777)
d10dd2fca08 is described below
commit d10dd2fca088dd290f168d3b9b715f0d706d1e5b
Author: Vadim Ogievetsky <[email protected]>
AuthorDate: Wed Oct 28 20:30:30 2026 -0700
fix: web console workbench result menu, Mod+Enter, and BigInt cells (#20777)
- Result column header menu (no parsed query) showed DESC for both copy
items
- Mod+Enter in the query editor also inserted a blank line via CodeMirror's
defaultKeymap
- BigInt values in numeric result columns were not formatted with digit
grouping
---
.../flexible-query-input/flexible-query-input.tsx | 23 ++++++++++++++++++++--
.../result-table-pane/result-table-pane.tsx | 5 +++--
2 files changed, 24 insertions(+), 4 deletions(-)
diff --git
a/web-console/src/views/workbench-view/flexible-query-input/flexible-query-input.tsx
b/web-console/src/views/workbench-view/flexible-query-input/flexible-query-input.tsx
index fa05028d2ab..05672f1fa10 100644
---
a/web-console/src/views/workbench-view/flexible-query-input/flexible-query-input.tsx
+++
b/web-console/src/views/workbench-view/flexible-query-input/flexible-query-input.tsx
@@ -18,8 +18,10 @@
import { Intent } from '@blueprintjs/core';
import { IconNames } from '@blueprintjs/icons';
-import { Compartment } from '@codemirror/state';
+import { closeCompletion } from '@codemirror/autocomplete';
+import { Compartment, Prec } from '@codemirror/state';
import type { EditorView } from '@codemirror/view';
+import { keymap } from '@codemirror/view';
import React from 'react';
import { CodeEditor } from '../../../components';
@@ -37,6 +39,20 @@ import './flexible-query-input.scss';
const V_PADDING = 10;
+// Mod+Enter and Mod+Shift+Enter are the global run / preview hotkeys (see
RunPanel). Claim them in the
+// editor so CodeMirror does not also act on them (defaultKeymap binds
Mod-Enter to insertBlankLine).
+// The event still bubbles up to the hotkey handler.
+const runKeyHandler = (view: EditorView) => {
+ closeCompletion(view);
+ return true;
+};
+const RUN_KEYS_EXTENSION = Prec.highest(
+ keymap.of([
+ { key: 'Mod-Enter', run: runKeyHandler },
+ { key: 'Mod-Shift-Enter', run: runKeyHandler },
+ ]),
+);
+
export interface FlexibleQueryInputProps {
/** Gives you the CodeMirror EditorView (to use with focusEditorAt for
example) */
ref?: React.Ref<EditorView | undefined>;
@@ -95,7 +111,10 @@ export function FlexibleQueryInput(props:
FlexibleQueryInputProps) {
() => (subQueriesEnabled ? subQueryMarkers(handleRunSubQuery) : []),
[subQueriesEnabled, handleRunSubQuery],
);
- const extensions = useConstant(() =>
subQueryCompartment.of(subQueryExtension));
+ const extensions = useConstant(() => [
+ RUN_KEYS_EXTENSION,
+ subQueryCompartment.of(subQueryExtension),
+ ]);
React.useEffect(() => {
editorViewRef.current?.dispatch({
diff --git
a/web-console/src/views/workbench-view/result-table-pane/result-table-pane.tsx
b/web-console/src/views/workbench-view/result-table-pane/result-table-pane.tsx
index 83b5340e2fe..be1003e4267 100644
---
a/web-console/src/views/workbench-view/result-table-pane/result-table-pane.tsx
+++
b/web-console/src/views/workbench-view/result-table-pane/result-table-pane.tsx
@@ -52,6 +52,7 @@ import {
filterMap,
formatNumber,
getNumericColumnBraces,
+ isNumberLike,
oneOf,
prettyPrintSql,
timeFormatToSql,
@@ -572,7 +573,7 @@ export const ResultTablePane = React.memo(function
ResultTablePane(props: Result
const descOrderBy = orderByExpression.toOrderByExpression('DESC');
const ascOrderBy = orderByExpression.toOrderByExpression('ASC');
const descOrderByPretty = prettyPrintSql(descOrderBy);
- const ascOrderByPretty = prettyPrintSql(descOrderBy);
+ const ascOrderByPretty = prettyPrintSql(ascOrderBy);
menuItems.push(
<MenuItem
@@ -724,7 +725,7 @@ export const ResultTablePane = React.memo(function
ResultTablePane(props: Result
{numericColumnBraces[i] ? (
<BracedText
className="table-padding"
- text={typeof value === 'number' ?
formatNumber(value) : String(value)}
+ text={isNumberLike(value) ? formatNumber(value) :
String(value)}
braces={numericColumnBraces[i]}
padFractionalPart
/>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]