Incubator-superset: "TypeError: 'dict' object does not support indexing" from CSV endpoint when SQL query contains "%" symbol

Created on 3 May 2017  路  1Comment  路  Source: apache/incubator-superset

There is a somewhat similar issue that was closed earlier, but this is specifically with the csv endpoint for SQL Lab. I believe this is an issue with submitting a '%' to SqlAlchemy.

Superset version

0.17.6
deployed on ubuntu 16.04.2
Using the postgresql+psycopg2 connection string to a redshift db.

Expected results

I expect to get a .csv file back from the csv endpoint.

Actual results

Traceback (most recent call last):
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/flask/app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/flask/app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/flask/app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/flask/_compat.py", line 33, in reraise
    raise value
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/flask/app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/flask/app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/superset/utils.py", line 573, in wraps
    return f(self, *args, **kwargs)
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/superset/models/core.py", line 757, in wrapper
    value = f(*args, **kwargs)
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/superset/views/core.py", line 2045, in csv
    df = query.database.get_df(sql, query.schema)
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/superset/models/core.py", line 578, in get_df
    cur = eng.execute(sql, schema=schema)
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 2064, in execute
    return connection.execute(statement, *multiparams, **params)
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 939, in execute
    return self._execute_text(object, multiparams, params)
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1097, in _execute_text
    statement, parameters
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1189, in _execute_context
    context)
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1405, in _handle_dbapi_exception
    util.reraise(*exc_info)
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/sqlalchemy/util/compat.py", line 187, in reraise
    raise value
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context
    context)
  File "/home/ubuntu/virtualenvs/superset/lib/python3.5/site-packages/sqlalchemy/engine/default.py", line 470, in do_execute
    cursor.execute(statement, parameters)
TypeError: 'dict' object does not support indexing

Steps to reproduce

Here is the query submitted:

SELECT firstname, lastname FROM bf_raw.bf_user
where firstname like 'A%' limit 10

Most helpful comment

Looks like this fix has been reverted in the latest superset. >22.0. The logic that moved the query to sql alchemy is now back in pandas sans raw_connection which causes a problem with the '%' character again.
Should I open a new issue with a new stack trace? Or reopen the same issue?

>All comments

Looks like this fix has been reverted in the latest superset. >22.0. The logic that moved the query to sql alchemy is now back in pandas sans raw_connection which causes a problem with the '%' character again.
Should I open a new issue with a new stack trace? Or reopen the same issue?

Was this page helpful?
0 / 5 - 0 ratings