mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-11-02 03:29:03 +00:00
Add better handling of no columns found/permission issue exceptions (#23695)
This commit is contained in:
parent
3d49b6689d
commit
b15dc8fe42
@ -20,6 +20,7 @@ import sqlalchemy.types as sqltypes
|
||||
import sqlparse
|
||||
from snowflake.sqlalchemy.custom_types import VARIANT, StructuredType
|
||||
from snowflake.sqlalchemy.snowdialect import SnowflakeDialect, ischema_names
|
||||
from sqlalchemy import exc as sa_exc
|
||||
from sqlalchemy.engine.reflection import Inspector
|
||||
from sqlparse.sql import Function, Identifier, Token
|
||||
|
||||
@ -948,17 +949,26 @@ class SnowflakeSource(
|
||||
table_name = result[6].split(".")[-1]
|
||||
# Can't fetch source of stream is source is dropped or no priviledge
|
||||
if table_name == "No privilege or table dropped":
|
||||
logger.debug(
|
||||
f"Couldn't fetch columns of stream [{result and result[1]}],"
|
||||
f" due to error on source: {table_name}. Result: {result}"
|
||||
logger.warning(
|
||||
f"Couldn't fetch columns of stream [{result and result[1]}] "
|
||||
f"(schema: '{schema_name}', db: '{db_name}') due to error on"
|
||||
f" source: [{table_name}]. Result: {result}"
|
||||
)
|
||||
return []
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
columns = inspector.get_columns(
|
||||
table_name, schema_name, table_type=table_type, db_name=db_name
|
||||
)
|
||||
try:
|
||||
columns = inspector.get_columns(
|
||||
table_name, schema_name, table_type=table_type, db_name=db_name
|
||||
)
|
||||
except sa_exc.NoSuchTableError:
|
||||
logger.warning(
|
||||
f"Table [{table_name}] (schema: '{schema_name}', db: '{db_name}') not found."
|
||||
" Unable to fetch columns. Please check if the configured Snowflake user has"
|
||||
" necessary grants on this table."
|
||||
)
|
||||
return []
|
||||
|
||||
if table_type == TableType.Stream:
|
||||
columns = [*columns, *DEFAULT_STREAM_COLUMNS]
|
||||
|
||||
@ -268,9 +268,17 @@ class SqlColumnHandlerMixin:
|
||||
|
||||
table_columns = []
|
||||
|
||||
columns = self._get_columns_internal(
|
||||
schema_name, table_name, db_name, inspector, table_type
|
||||
)
|
||||
try:
|
||||
columns = self._get_columns_internal(
|
||||
schema_name, table_name, db_name, inspector, table_type
|
||||
)
|
||||
except Exception as exc:
|
||||
logger.debug(traceback.format_exc())
|
||||
logger.warning(
|
||||
f"Unexpected exception getting columns for table [{table_name}] "
|
||||
f"(schema: '{schema_name}', db: '{db_name}'): {exc}"
|
||||
)
|
||||
columns = []
|
||||
|
||||
def process_column(column: dict):
|
||||
(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user