-
Notifications
You must be signed in to change notification settings - Fork 14.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: Trino - handle proper exception type in get_create_view #22921
Conversation
TrinoEngineSpec inherits PrestoBaseEngineSpec while the underlying sqlalchemy engine is throwing a different exception type if the table is not a view. ``` Traceback (most recent call last): File "/opt/superset/lib/python3.9/site-packages/flask_appbuilder/api/__init__.py", line 109, in wraps return f(self, *args, **kwargs) File "/opt/superset/lib/python3.9/site-packages/superset/views/base_api.py", line 113, in wraps raise ex File "/opt/superset/lib/python3.9/site-packages/superset/views/base_api.py", line 110, in wraps duration, response = time_function(f, self, *args, **kwargs) File "/opt/superset/lib/python3.9/site-packages/superset/utils/core.py", line 1524, in time_function response = func(*args, **kwargs) File "/opt/superset/lib/python3.9/site-packages/superset/utils/log.py", line 245, in wrapper value = f(*args, **kwargs) File "/opt/superset/lib/python3.9/site-packages/superset/databases/api.py", line 601, in table_extra_metadata payload = database.db_engine_spec.extra_table_metadata( File "/opt/superset/lib/python3.9/site-packages/superset/db_engine_specs/presto.py", line 927, in extra_table_metadata Any, cls.get_create_view(database, schema_name, table_name) File "/opt/superset/lib/python3.9/site-packages/superset/db_engine_specs/presto.py", line 951, in get_create_view cls.execute(cursor, sql) File "/opt/superset/lib/python3.9/site-packages/superset/db_engine_specs/base.py", line 1261, in execute raise cls.get_dbapi_mapped_exception(ex) File "/opt/superset/lib/python3.9/site-packages/superset/db_engine_specs/base.py", line 1259, in execute cursor.execute(query) File "/opt/superset/lib/python3.9/site-packages/trino/dbapi.py", line 439, in execute result = self._query.execute() File "/opt/superset/lib/python3.9/site-packages/trino/client.py", line 765, in execute self._result.rows += self.fetch() File "/opt/superset/lib/python3.9/site-packages/trino/client.py", line 780, in fetch status = self._request.process(response) File "/opt/superset/lib/python3.9/site-packages/trino/client.py", line 581, in process raise self._process_error(response["error"], response.get("id")) trino.exceptions.TrinoUserError: TrinoUserError(type=USER_ERROR, name=NOT_SUPPORTED, message="line 1:1: Relation 'asdf' is a table, not a view", query_id=20230131_110859_18306_tzku9) ```
Thanks for the contribution! Approving CI run... nag us here (or on Slack) if it needs to be run again. Pinging a few people for review that know their way around this spot. |
Codecov Report
@@ Coverage Diff @@
## master #22921 +/- ##
==========================================
- Coverage 67.36% 67.35% -0.01%
==========================================
Files 1876 1876
Lines 72066 72073 +7
Branches 7868 7868
==========================================
+ Hits 48545 48547 +2
- Misses 21504 21509 +5
Partials 2017 2017
Flags with carried forward coverage won't be shown. Click here to find out more.
📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more |
Marked PR as draft while making |
Not sure about 2.0.2's timeline at the moment. It should also be in 2.1 or 3.0, whichever gets released first, since both cut from |
SUMMARY
TrinoEngineSpec inherits PrestoBaseEngineSpec while the underlying sqlalchemy engine is throwing a different exception type if the table is not a view.
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
TESTING INSTRUCTIONS
Open "SQL Lab" with Trino connection and browse up to some specific table.
While the table info is loaded well, the error is shown to the user in the bottom right corner.
ADDITIONAL INFORMATION