This is an automated email from the ASF dual-hosted git repository.

villebro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 56397d7  fix: raise error in sqllab when using reserved column name 
(#9859)
56397d7 is described below

commit 56397d75cc6192eeed7ed4d353629f8144de3df5
Author: Ville Brofeldt <33317356+ville...@users.noreply.github.com>
AuthorDate: Wed Jun 10 16:32:43 2020 +0300

    fix: raise error in sqllab when using reserved column name (#9859)
---
 .../spec/javascripts/sqllab/ExploreResultsButton_spec.jsx     |  1 +
 superset-frontend/spec/javascripts/sqllab/fixtures.js         | 10 ++++++++++
 .../src/SqlLab/components/ExploreResultsButton.jsx            | 11 ++++++-----
 3 files changed, 17 insertions(+), 5 deletions(-)

diff --git 
a/superset-frontend/spec/javascripts/sqllab/ExploreResultsButton_spec.jsx 
b/superset-frontend/spec/javascripts/sqllab/ExploreResultsButton_spec.jsx
index ad6639b..f2e66b8 100644
--- a/superset-frontend/spec/javascripts/sqllab/ExploreResultsButton_spec.jsx
+++ b/superset-frontend/spec/javascripts/sqllab/ExploreResultsButton_spec.jsx
@@ -101,6 +101,7 @@ describe('ExploreResultsButton', () => {
       '1',
       '123',
       'CASE WHEN 1=1 THEN 1 ELSE 0 END',
+      '__TIMESTAMP',
     ]);
 
     const msgWrapper = 
shallow(wrapper.instance().renderInvalidColumnMessage());
diff --git a/superset-frontend/spec/javascripts/sqllab/fixtures.js 
b/superset-frontend/spec/javascripts/sqllab/fixtures.js
index 98bd202..a88f938 100644
--- a/superset-frontend/spec/javascripts/sqllab/fixtures.js
+++ b/superset-frontend/spec/javascripts/sqllab/fixtures.js
@@ -315,6 +315,16 @@ export const queryWithBadColumns = {
         name: 'CASE WHEN 1=1 THEN 1 ELSE 0 END',
         type: 'STRING',
       },
+      {
+        is_date: true,
+        name: '_TIMESTAMP',
+        type: 'TIMESTAMP',
+      },
+      {
+        is_date: true,
+        name: '__TIMESTAMP',
+        type: 'TIMESTAMP',
+      },
     ],
   },
 };
diff --git a/superset-frontend/src/SqlLab/components/ExploreResultsButton.jsx 
b/superset-frontend/src/SqlLab/components/ExploreResultsButton.jsx
index 37a46b3..2bdcdb0 100644
--- a/superset-frontend/src/SqlLab/components/ExploreResultsButton.jsx
+++ b/superset-frontend/src/SqlLab/components/ExploreResultsButton.jsx
@@ -104,10 +104,11 @@ class ExploreResultsButton extends React.PureComponent {
   getInvalidColumns() {
     const re1 = /^[A-Za-z_]\w*$/; // starts with char or _, then only alphanum
     const re2 = /__\d+$/; // does not finish with __ and then a number which 
screams dup col name
+    const re3 = /^__/; // is not a reserved column name e.g. __timestamp
 
     return this.props.query.results.selected_columns
       .map(col => col.name)
-      .filter(col => !re1.test(col) || re2.test(col));
+      .filter(col => !re1.test(col) || re2.test(col) || re3.test(col));
   }
   datasourceName() {
     const { query } = this.props;
@@ -194,13 +195,13 @@ class ExploreResultsButton extends React.PureComponent {
         </code>
         {t('cannot be used as a column name. Please use aliases (as in ')}
         <code>
-          SELECT count(*)
+          SELECT count(*)&nbsp;
           <strong>AS my_alias</strong>
         </code>
         ){' '}
-        {t(`limited to alphanumeric characters and underscores. Column aliases 
ending with
-          double underscores followed by a numeric value are not allowed for 
reasons
-          discussed in Github issue #5739.
+        {t(`limited to alphanumeric characters and underscores. Column aliases 
starting
+          with double underscores or ending with double underscores followed 
by a
+          numeric value are not allowed for reasons discussed in Github issue 
#5739.
           `)}
       </div>
     );

Reply via email to