Bug description
Description: When running queries from SQL Lab against a Presto database connection, Superset returns a 401 Unauthorized error:
Presto Error
presto error: Unexpected status code 401
b'Unauthorized'
This may be triggered by:
Issue 1002 - The database returned an unexpected error.
See less
However, the same Presto connection works for creating datasets and charts
Screenshots/recordings
Superset version
4.1.2
Python version
3.10
Node version
16
Browser
Safari
Additional context
Environment: - Superset 4.1.1, 4.12 - Presto 0.289 - Kubernetes deployment
Logs
2025-05-22 05:38:20,251:INFO:superset.commands.sql_lab.execute:Triggering query_id: 2
2025-05-22 05:38:20,278:INFO:superset.sql_lab:Query 2: Executing 1 statement(s)
2025-05-22 05:38:20,278:INFO:superset.sql_lab:Query 2: Set query to 'running'
2025-05-22 05:38:20,301:INFO:superset.sql_lab:Query 2: Running statement 1 out of 1
2025-05-22 05:38:20,340:INFO:pyhive.presto:SELECT
*
FROM "bank_demo"."bank2024-03-04"
LIMIT 101
warnings.warn(
2025-05-22 05:38:20,693:WARNING:superset.views.error_handling:SupersetErrorsException
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1484, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1469, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
File "/usr/local/lib/python3.10/site-packages/flask_appbuilder/security/decorators.py", line 95, in wraps
return f(self, *args, **kwargs)
File "/app/superset/views/base_api.py", line 119, in wraps
duration, response = time_function(f, self, *args, **kwargs)
File "/app/superset/utils/core.py", line 1364, in time_function
response = func(*args, **kwargs)
File "/app/superset/views/base_api.py", line 91, in wraps
return f(self, *args, **kwargs)
File "/app/superset/utils/log.py", line 303, in wrapper
value = f(*args, **kwargs)
File "/app/superset/sqllab/api.py", line 409, in execute_sql_query
command_result: CommandResult = command.run()
File "/app/superset/utils/decorators.py", line 266, in wrapped
return on_error(ex)
File "/app/superset/utils/decorators.py", line 236, in on_error
raise ex
File "/app/superset/utils/decorators.py", line 259, in wrapped
result = func(*args, **kwargs)
File "/app/superset/commands/sql_lab/execute.py", line 105, in run
status = self._run_sql_json_exec_from_scratch()
File "/app/superset/commands/sql_lab/execute.py", line 158, in _run_sql_json_exec_from_scratch
return self._sql_json_executor.execute(
File "/app/superset/sqllab/sql_json_executer.py", line 111, in execute
raise SupersetErrorsException(
superset.exceptions.SupersetErrorsException: [SupersetError(message="presto error: Unexpected status code 401\nb'Unauthorized'", error_type=<SupersetErrorType.GENERIC_DB_ENGINE_ERROR: 'GENERIC_DB_ENGINE_ERROR'>, level=<ErrorLevel.ERROR: 'error'>, extra={'engine_name': 'Presto', 'issue_codes': [{'code': 1002, 'message': 'Issue 1002 - The database returned an unexpected error.'}]})]
Workarounds tried: - Disabling SQL validators for Presto
configOverrides:
superset_config.py: |
# Override SQL_VALIDATORS_BY_ENGINE to disable validation for Presto
SQL_VALIDATORS_BY_ENGINE = {
"presto": None,
"postgresql": "PostgreSQLValidator",
}
Checklist
- [x] I have searched Superset docs and Slack and didn't find a solution to my problem.
- [x] I have searched the GitHub issue tracker and didn't find a similar bug report.
- [x] I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section.
Comment From: msyavuz
Not familiar with Presto but i think this error comes from the DB_ENGINE directly. @betodealmeida might have some ideas.