mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-09-21 14:59:57 +00:00
Fix checkstyle (#19099)
This commit is contained in:
parent
31b1132389
commit
c664ab93f6
@ -13,6 +13,7 @@ import traceback
|
||||
from typing import Iterable, Optional
|
||||
|
||||
from ibm_db_sa.base import ischema_names
|
||||
from ibm_db_sa.reflection import DB2Reflector, OS390Reflector
|
||||
from sqlalchemy.engine.reflection import Inspector
|
||||
from sqlalchemy.engine.row import LegacyRow
|
||||
from sqlalchemy.sql.sqltypes import BOOLEAN
|
||||
@ -26,6 +27,7 @@ from metadata.generated.schema.metadataIngestion.workflow import (
|
||||
from metadata.ingestion.api.steps import InvalidSourceException
|
||||
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
||||
from metadata.ingestion.source.database.common_db_source import CommonDbSourceService
|
||||
from metadata.ingestion.source.database.db2.utils import get_unique_constraints
|
||||
from metadata.utils.logger import ingestion_logger
|
||||
|
||||
logger = ingestion_logger()
|
||||
@ -34,6 +36,10 @@ logger = ingestion_logger()
|
||||
ischema_names.update({"BOOLEAN": BOOLEAN})
|
||||
|
||||
|
||||
DB2Reflector.get_unique_constraints = get_unique_constraints
|
||||
OS390Reflector.get_unique_constraints = get_unique_constraints
|
||||
|
||||
|
||||
class Db2Source(CommonDbSourceService):
|
||||
"""
|
||||
Implements the necessary methods to extract
|
||||
|
@ -0,0 +1,63 @@
|
||||
# Copyright 2021 Collate
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
"""
|
||||
Module to define overriden dialect methods
|
||||
"""
|
||||
from sqlalchemy import and_, join, sql
|
||||
from sqlalchemy.engine import reflection
|
||||
|
||||
|
||||
@reflection.cache
|
||||
def get_unique_constraints(
|
||||
self, connection, table_name, schema=None, **kw
|
||||
): # pylint: disable=unused-argument
|
||||
"""Small Method to override the Dialect default as it is not filtering properly the Schema and Table Name."""
|
||||
current_schema = self.denormalize_name(schema or self.default_schema_name)
|
||||
table_name = self.denormalize_name(table_name)
|
||||
syskeycol = self.sys_keycoluse
|
||||
sysconst = self.sys_tabconst
|
||||
query = (
|
||||
sql.select(syskeycol.c.constname, syskeycol.c.colname)
|
||||
.select_from(
|
||||
join(
|
||||
syskeycol,
|
||||
sysconst,
|
||||
and_(
|
||||
syskeycol.c.constname == sysconst.c.constname,
|
||||
syskeycol.c.tabschema == sysconst.c.tabschema,
|
||||
syskeycol.c.tabname == sysconst.c.tabname,
|
||||
),
|
||||
)
|
||||
)
|
||||
.where(
|
||||
and_(
|
||||
sysconst.c.tabname == table_name,
|
||||
sysconst.c.tabschema == current_schema,
|
||||
sysconst.c.type == "U",
|
||||
)
|
||||
)
|
||||
.order_by(syskeycol.c.constname)
|
||||
)
|
||||
unique_consts = []
|
||||
curr_const = None
|
||||
for r in connection.execute(query):
|
||||
if curr_const == r[0]:
|
||||
unique_consts[-1]["column_names"].append(self.normalize_name(r[1]))
|
||||
else:
|
||||
curr_const = r[0]
|
||||
unique_consts.append(
|
||||
{
|
||||
"name": self.normalize_name(curr_const),
|
||||
"column_names": [self.normalize_name(r[1])],
|
||||
}
|
||||
)
|
||||
return unique_consts
|
Loading…
x
Reference in New Issue
Block a user