Open deviardn opened 2 months ago
Hey @deviardn! 👋 I'm here to help you with any bugs, questions, or contributions you have while waiting for a human maintainer. Let's squash those bugs together!
To resolve the "Microsoft SQL Server Error: 'str' object has no attribute 'set'" error in Apache Superset version 4.0.2 when using the SQL Lab menu, you should apply the fix from the pull request #27577 which addresses issues with SQL Server in the sqlglot
library.
Here is the relevant fix:
# Ensure you have the latest version of sqlglot that includes the fix for SQL Server.
# You can update sqlglot by running:
pip install --upgrade sqlglot
This update should resolve the error by ensuring that the correct handling for SQL Server is applied [1].
To continue talking to Dosu, mention @dosu.
Not sure if it's related or the same issue to the issue I'm facing: https://github.com/apache/superset/issues/29853
If these are the same, let's close one in favor of the other.
@rusackas I've tested the suggestion with sqlglot, it's not the same issue.
I have captured the error log here:
2024-09-06 02:07:16,653:INFO:superset.sql_lab:Query 970: Executing 1 statement(s)
Query 970: Set query to 'running'
2024-09-06 02:07:16,653:INFO:superset.sql_lab:Query 970: Set query to 'running'
Query 970: Running statement 1 out of 1
2024-09-06 02:07:17,246:INFO:superset.sql_lab:Query 970: Running statement 1 out of 1
0.0.0.11 - - [06/Sep/2024:02:07:17 +0000] "POST /superset/log/?explode=events&dashboard_id=46 HTTP/1.1" 200 1 "https://superset.local/sqllab/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0"
2024-09-06 02:07:18,020:DEBUG:root:Query 970: Running query: select * from suppliers
LIMIT 1001
2024-09-06 02:07:18,035:DEBUG:root:Query 970: Handling cursor
Query 970: Storing results in results backend, key: 363e3e52-01cd-4938-b61a-1d0f6da2060a
2024-09-06 02:07:18,053:INFO:superset.sql_lab:Query 970: Storing results in results backend, key: 363e3e52-01cd-4938-b61a-1d0f6da2060a
0.0.0.11 - - [06/Sep/2024:02:07:18 +0000] "GET /api/v1/query/updated_since?q=(last_updated_ms:1725588358985) HTTP/1.1" 200 432 "https://superset.local/sqllab/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0"
SupersetErrorsException
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1823, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1799, 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 127, in wraps
raise ex
File "/app/superset/views/base_api.py", line 121, in wraps
duration, response = time_function(f, self, *args, **kwargs)
File "/app/superset/utils/core.py", line 1470, in time_function
response = func(*args, **kwargs)
File "/app/superset/views/base_api.py", line 93, in wraps
return f(self, *args, **kwargs)
File "/app/superset/utils/log.py", line 255, 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/commands/sql_lab/execute.py", line 121, in run
raise ex
File "/app/superset/commands/sql_lab/execute.py", line 103, in run
status = self._run_sql_json_exec_from_scratch()
File "/app/superset/commands/sql_lab/execute.py", line 163, in _run_sql_json_exec_from_scratch
raise ex
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="int() argument must be a string, a bytes-like object or a real number, not 'set'", error_type=<SupersetErrorType.GENERIC_DB_ENGINE_ERROR: 'GENERIC_DB_ENGINE_ERROR'>, level=<ErrorLevel.ERROR: 'error'>, extra={'engine_name': 'MySQL', 'issue_codes': [{'code': 1002, 'message': 'Issue 1002 - The database returned an unexpected error.'}]})]
2024-09-06 02:07:18,423:WARNING:superset.views.base:SupersetErrorsException
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1823, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1799, 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 127, in wraps
raise ex
File "/app/superset/views/base_api.py", line 121, in wraps
duration, response = time_function(f, self, *args, **kwargs)
File "/app/superset/utils/core.py", line 1470, in time_function
response = func(*args, **kwargs)
File "/app/superset/views/base_api.py", line 93, in wraps
return f(self, *args, **kwargs)
File "/app/superset/utils/log.py", line 255, 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/commands/sql_lab/execute.py", line 121, in run
raise ex
File "/app/superset/commands/sql_lab/execute.py", line 103, in run
status = self._run_sql_json_exec_from_scratch()
File "/app/superset/commands/sql_lab/execute.py", line 163, in _run_sql_json_exec_from_scratch
raise ex
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="int() argument must be a string, a bytes-like object or a real number, not 'set'", error_type=<SupersetErrorType.GENERIC_DB_ENGINE_ERROR: 'GENERIC_DB_ENGINE_ERROR'>, level=<ErrorLevel.ERROR: 'error'>, extra={'engine_name': 'MySQL', 'issue_codes': [{'code': 1002, 'message': 'Issue 1002 - The database returned an unexpected error.'}]})]
10.1.176.0 - - [06/Sep/2024:02:07:18 +0000] "POST /api/v1/sqllab/execute/ HTTP/1.1" 500 306 "https://superset.local/sqllab/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0"
Just tried running the example in docker compose: https://superset.apache.org/docs/installation/docker-compose/
and the error persists:
superset_app | The above exception was the direct cause of the following exception:
superset_app |
superset_app | Traceback (most recent call last):
superset_app | File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1484, in full_dispatch_request
superset_app | rv = self.dispatch_request()
superset_app | File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1469, in dispatch_request
superset_app | return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
superset_app | File "/usr/local/lib/python3.10/site-packages/flask_appbuilder/security/decorators.py", line 177, in wraps
superset_app | return f(self, *args, **kwargs)
superset_app | File "/app/superset/views/sql_lab/views.py", line 239, in post
superset_app | db.session.query(TableSchema).filter(
superset_app | File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/query.py", line 3222, in delete
superset_app | result = self.session.execute(
superset_app | File "/usr/local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 1717, in execute
superset_app | result = conn._execute_20(statement, params or {}, execution_options)
superset_app | File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20
superset_app | return meth(self, args_10style, kwargs_10style, execution_options)
superset_app | File "/usr/local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection
superset_app | return connection._execute_clauseelement(
superset_app | File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement
superset_app | ret = self._execute_context(
superset_app | File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context
superset_app | self._handle_dbapi_exception(
superset_app | File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2134, in _handle_dbapi_exception
superset_app | util.raise_(
superset_app | File "/usr/local/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
superset_app | raise exception
superset_app | File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context
superset_app | self.dialect.do_execute(
superset_app | File "/usr/local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
superset_app | cursor.execute(statement, parameters)
superset_app | sqlalchemy.exc.DataError: (psycopg2.errors.InvalidTextRepresentation) invalid input syntax for type integer: "tWZzbZWySAW"
superset_app | LINE 1: ...OM table_schema WHERE table_schema.tab_state_id = 'tWZzbZWyS...
superset_app | ^
superset_app |
superset_app | [SQL: DELETE FROM table_schema WHERE table_schema.tab_state_id = %(tab_state_id_1)s AND table_schema.database_id = %(database_id_1)s AND table_schema.catalog IS NULL AND table_schema.schema = %(schema_1)s AND table_schema."table" = %(table_1)s]
superset_app | [parameters: {'tab_state_id_1': 'tWZzbZWySAW', 'database_id_1': 1, 'schema_1': 'public', 'table_1': 'bart_lines'}]
superset_app | (Background on this error at: https://sqlalche.me/e/14/9h9h)
Bug description
Sorry, my English is not good. I am using apache superset version 4.0.2. I tried using the SQL Lab menu, I got an error like in the picture. what do I have to do? Thank You
How to reproduce the bug
Screenshots/recordings
No response
Superset version
4.0.2
Python version
3.9
Node version
16
Browser
Chrome
Additional context
No response
Checklist