You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by fj...@apache.org on 2019/08/22 16:09:48 UTC
[incubator-druid] branch master updated: Web-Console: Replace from
clause (#8371)
This is an automated email from the ASF dual-hosted git repository.
fjy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-druid.git
The following commit(s) were added to refs/heads/master by this push:
new 5274c5a Web-Console: Replace from clause (#8371)
5274c5a is described below
commit 5274c5ab733bd12b8ff5da7405a55d65500f63cf
Author: mcbrewster <37...@users.noreply.github.com>
AuthorDate: Thu Aug 22 10:09:37 2019 -0600
Web-Console: Replace from clause (#8371)
* add replace from
* add failture state
* fix uninential downgrade
* use uppercase for SQL keywords
---
web-console/README.md | 2 +-
web-console/package-lock.json | 6 ++---
web-console/package.json | 2 +-
.../__snapshots__/query-view.spec.tsx.snap | 1 +
.../query-view/column-tree/column-tree.spec.tsx | 1 +
.../views/query-view/column-tree/column-tree.tsx | 31 ++++++++++++++++++++--
web-console/src/views/query-view/query-view.tsx | 13 ++++++++-
7 files changed, 48 insertions(+), 8 deletions(-)
diff --git a/web-console/README.md b/web-console/README.md
index 0f13ce8..5fa5f7f 100644
--- a/web-console/README.md
+++ b/web-console/README.md
@@ -42,7 +42,7 @@ As part of this repo:
- `public/` - The compiled destination of the file powering this console
- `assets/` - The images (and other assets) used within the console
- `script/` - Some helper bash scripts for running this console
-- `src/` - This directory (together with `lib`) constitutes all the source code for this console
+- `src/` - This directory (together with `lib`) constitutes all the source code for this console
Generated/copied dynamically
diff --git a/web-console/package-lock.json b/web-console/package-lock.json
index cc9543a..075d4cc 100644
--- a/web-console/package-lock.json
+++ b/web-console/package-lock.json
@@ -4428,9 +4428,9 @@
"integrity": "sha512-0sYnfUHHMoajaud/i5BHKA12bUxiWEHJ9rxGqVEppFxsEcxef0TZQ5J59lU+UniEBcz/sG5fTESRyS7cOm3tSQ=="
},
"druid-query-toolkit": {
- "version": "0.3.21",
- "resolved": "https://registry.npmjs.org/druid-query-toolkit/-/druid-query-toolkit-0.3.21.tgz",
- "integrity": "sha512-CdMLIqXy3pzjZb8iq2n6B8R7jTKVyAuAUdnH6kF0EbP1Fb2XSh8Kg8O88Ew+3ye4R9PY86a4LlXMPW4NSyKX+A==",
+ "version": "0.3.23",
+ "resolved": "https://registry.npmjs.org/druid-query-toolkit/-/druid-query-toolkit-0.3.23.tgz",
+ "integrity": "sha512-6wVAGFw1sjLT9U5f7QNaIKCS0VgUfWLn/X8YWf3YQN3awSCxClzFUQnLKnHeIEb7ot0ca4H6axlb7NpzGqmtzA==",
"requires": {
"tslib": "^1.10.0"
}
diff --git a/web-console/package.json b/web-console/package.json
index 169209b..d5a9542 100644
--- a/web-console/package.json
+++ b/web-console/package.json
@@ -61,7 +61,7 @@
"d3": "^5.10.1",
"d3-array": "^2.3.1",
"druid-console": "0.0.2",
- "druid-query-toolkit": "^0.3.21",
+ "druid-query-toolkit": "^0.3.23",
"file-saver": "^2.0.2",
"has-own-prop": "^2.0.0",
"hjson": "^3.1.2",
diff --git a/web-console/src/views/query-view/__snapshots__/query-view.spec.tsx.snap b/web-console/src/views/query-view/__snapshots__/query-view.spec.tsx.snap
index 6e4c469..21140aa 100644
--- a/web-console/src/views/query-view/__snapshots__/query-view.spec.tsx.snap
+++ b/web-console/src/views/query-view/__snapshots__/query-view.spec.tsx.snap
@@ -16,6 +16,7 @@ exports[`sql view matches snapshot 1`] = `
hasGroupBy={[Function]}
onQueryStringChange={[Function]}
queryAst={[Function]}
+ replaceFrom={[Function]}
/>
<t
customClassName=""
diff --git a/web-console/src/views/query-view/column-tree/column-tree.spec.tsx b/web-console/src/views/query-view/column-tree/column-tree.spec.tsx
index 8edfafd..815efe4 100644
--- a/web-console/src/views/query-view/column-tree/column-tree.spec.tsx
+++ b/web-console/src/views/query-view/column-tree/column-tree.spec.tsx
@@ -59,6 +59,7 @@ describe('column tree', () => {
] as ColumnMetadata[]
}
onQueryStringChange={() => {}}
+ replaceFrom={() => null}
/>
);
diff --git a/web-console/src/views/query-view/column-tree/column-tree.tsx b/web-console/src/views/query-view/column-tree/column-tree.tsx
index 31db912..fcaf8ab 100644
--- a/web-console/src/views/query-view/column-tree/column-tree.tsx
+++ b/web-console/src/views/query-view/column-tree/column-tree.tsx
@@ -27,7 +27,15 @@ import {
Tree,
} from '@blueprintjs/core';
import { IconNames } from '@blueprintjs/icons';
-import { Alias, FilterClause, RefExpression, SqlQuery, StringType } from 'druid-query-toolkit';
+import {
+ Alias,
+ FilterClause,
+ RefExpression,
+ refExpressionFactory,
+ SqlQuery,
+ stringFactory,
+ StringType,
+} from 'druid-query-toolkit';
import React, { ChangeEvent } from 'react';
import { Loader } from '../../../components';
@@ -136,6 +144,7 @@ export interface ColumnTreeProps {
filter?: FilterClause,
) => void;
filterByRow: (filters: RowFilter[], preferablyRun: boolean) => void;
+ replaceFrom: (table: RefExpression, preferablyRun: boolean) => void;
hasGroupBy: () => boolean;
queryAst: () => SqlQuery | undefined;
clear: (column: string, preferablyRun: boolean) => void;
@@ -173,7 +182,7 @@ export class ColumnTree extends React.PureComponent<ColumnTreeProps, ColumnTreeS
<Menu>
<MenuItem
icon={IconNames.FULLSCREEN}
- text={`Select ... from ${table}`}
+ text={`SELECT ... FROM ${table}`}
onClick={() => {
handleTableClick(
schema,
@@ -198,6 +207,24 @@ export class ColumnTree extends React.PureComponent<ColumnTreeProps, ColumnTreeS
copyAndAlert(table, `${table} query copied to clipboard`);
}}
/>
+ <Deferred
+ content={() => (
+ <>
+ {props.queryAst() && (
+ <MenuItem
+ icon={IconNames.EXCHANGE}
+ text={`Replace FROM with: ${table}`}
+ onClick={() => {
+ props.replaceFrom(
+ refExpressionFactory(stringFactory(table, `"`)),
+ true,
+ );
+ }}
+ />
+ )}
+ </>
+ )}
+ />
</Menu>
}
>
diff --git a/web-console/src/views/query-view/query-view.tsx b/web-console/src/views/query-view/query-view.tsx
index 4c8149b..69dc515 100644
--- a/web-console/src/views/query-view/query-view.tsx
+++ b/web-console/src/views/query-view/query-view.tsx
@@ -574,6 +574,13 @@ export class QueryView extends React.PureComponent<QueryViewProps, QueryViewStat
this.handleQueryStringChange(modifiedAst.toString(), preferablyRun);
};
+ private replaceFrom = (table: RefExpression, preferablyRun: boolean): void => {
+ const { queryAst } = this.state;
+ if (!queryAst) return;
+ const modifiedAst = queryAst.replaceFrom(table);
+ this.handleQueryStringChange(modifiedAst.toString(), preferablyRun);
+ };
+
private addAggregateColumn = (
columnName: string | RefExpression,
functionName: string,
@@ -698,7 +705,10 @@ export class QueryView extends React.PureComponent<QueryViewProps, QueryViewStat
private getCurrentFilters = () => {
const { queryAst } = this.state;
- return queryAst.getCurrentFilters();
+ if (queryAst) {
+ return queryAst.getCurrentFilters();
+ }
+ return [];
};
render(): JSX.Element {
@@ -730,6 +740,7 @@ export class QueryView extends React.PureComponent<QueryViewProps, QueryViewStat
defaultSchema={defaultSchema ? defaultSchema : 'druid'}
defaultTable={defaultTable}
currentFilters={this.getCurrentFilters}
+ replaceFrom={this.replaceFrom}
/>
)}
{this.renderMainArea()}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org