You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@superset.apache.org by GitBox <gi...@apache.org> on 2021/08/20 10:36:50 UTC

[GitHub] [superset] grumpy-miner opened a new issue #16371: Custom SQL filters not working with Virtual (SQL) dataset containing Jinja template

grumpy-miner opened a new issue #16371:
URL: https://github.com/apache/superset/issues/16371


   When using Custom SQL filter in graphs where dataset is Virtual (SQL) dataset containing Jinja template as SQL, superset raises an error.
   
   ### Expected results
   
   Graph is rendered properly
   
   ### Actual results
   
   Superset raises `'NoneType' object has no attribute 'upper'`
   
   ```
   Traceback (most recent call last):
     File "/app/superset/viz.py", line 541, in get_df_payload
       df = self.get_df(query_obj)
     File "/app/superset/viz.py", line 277, in get_df
       self.results = self.datasource.query(query_obj)
     File "/app/superset/connectors/sqla/models.py", line 1438, in query
       query_str_ext = self.get_query_str_extended(query_obj)
     File "/app/superset/connectors/sqla/models.py", line 764, in get_query_str_extended
       sqlaq = self.get_sqla_query(**query_obj)
     File "/app/superset/connectors/sqla/models.py", line 1143, in get_sqla_query
       tbl = self.get_from_clause(template_processor)
     File "/app/superset/connectors/sqla/models.py", line 793, in get_from_clause
       from_sql = self.get_rendered_sql(template_processor)
     File "/app/superset/connectors/sqla/models.py", line 814, in get_rendered_sql
       sql = template_processor.process_template(sql)
     File "/app/superset/jinja_context.py", line 426, in process_template
       return template.render(context)
     File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 1090, in render
       self.environment.handle_exception()
     File "/usr/local/lib/python3.7/site-packages/jinja2/environment.py", line 832, in handle_exception
       reraise(*rewrite_traceback_stack(source=source))
     File "/usr/local/lib/python3.7/site-packages/jinja2/_compat.py", line 28, in reraise
       raise value.with_traceback(tb)
     File "<template>", line 2, in top-level template code
     File "/usr/local/lib/python3.7/site-packages/jinja2/sandbox.py", line 462, in call
       return __context.call(__obj, *args, **kwargs)
     File "/app/superset/jinja_context.py", line 323, in safe_proxy
       return_value = func(*args, **kwargs)
     File "/app/superset/jinja_context.py", line 211, in filter_values
       filters = self.get_filters(column, remove_filter)
     File "/app/superset/jinja_context.py", line 300, in get_filters
       op: str = flt["operator"].upper() if "operator" in flt else None
   AttributeError: 'NoneType' object has no attribute 'upper'
   ```
   
   #### Screenshots
   
   ![image](https://user-images.githubusercontent.com/81763239/130218707-444dc1ba-a858-4a74-bf30-6402176c9fdb.png)
   
   #### How to reproduce the bug
   
   1. Create table in database (in my case Postgres 13)
   ```
   CREATE TABLE test_table (
     id INTEGER,
     some_text TEXT,
     some_date TIMESTAMPTZ,
     some_integer INTEGER
   );
   ```
   2. Create Virtual dataset
   schema: public
   dataset_name: test_table
   SQL:
   ```
   select * from test_table
   {% if filter_values('tag')|length  %}
   where 1=1
   {% endif %}
   ```
   3. Create new chart with visualisation type `Time-series Bar Chart`
   4. Set `Group By`: `some_text`
   5. Set `Metrics`: `count(*)`
   6. Set `Filters` as Custom SQL with statement `where 1=1`
   7. Click `Run`
   
   ### Environment
   
   - superset version: Superset 0.0.0dev 
   - Superset [image: apache/superset:latest-dev, pulled 2021-08-19]
   - python version: Python 3.7.9
   - feature flags active:
     - ENABLE_TEMPLATE_PROCESSING
   ### Checklist
   
   Make sure to follow these steps before submitting your issue - thank you!
   
   - [x] I have checked the superset logs for python stacktraces and included it here as text if there are any.
   - [x] I have reproduced the issue with at least the latest released version of superset.
   - [x] I have checked the issue tracker for the same issue and I haven't found one similar.
   
   ### Additional context
   
   In url parameters of the chart there is parameter `operator` set to `null`
   
   In file superset/jinja_context.py line 300
   ```
   op: str = flt["operator"].upper() if "operator" in flt else None
   ```
   logic doesn't assume that `flt` dictionary can have `operator` with value `None` and that's what causes the problem 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


[GitHub] [superset] villebro closed issue #16371: Custom SQL filters not working with Virtual (SQL) dataset containing Jinja template

Posted by GitBox <gi...@apache.org>.
villebro closed issue #16371:
URL: https://github.com/apache/superset/issues/16371


   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


[GitHub] [superset] villebro commented on issue #16371: Custom SQL filters not working with Virtual (SQL) dataset containing Jinja template

Posted by GitBox <gi...@apache.org>.
villebro commented on issue #16371:
URL: https://github.com/apache/superset/issues/16371#issuecomment-944850756


   fixed by#16371


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org