mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-08-21 15:38:11 +00:00
Fix oracle bulk view definitions and comments & improve metadata version (#10620)
* Add more info to client version * lower oracle views and comments
This commit is contained in:
parent
39fc6f86e1
commit
cd6ece1cf4
@ -28,7 +28,22 @@ class VersionParsingException(Exception):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
def get_version_from_string(raw_version: str) -> str:
|
def get_client_version_from_string(raw_version: str) -> str:
|
||||||
|
"""
|
||||||
|
Given a raw version string, such as `0.10.1.dev0` or
|
||||||
|
`0.11.0-SNAPSHOT`, we should extract the major.minor.patch
|
||||||
|
:param raw_version: raw string with version info
|
||||||
|
:return: Clean version string
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
return re.match(r"\d+.\d+.\d+.\d+", raw_version).group(0)
|
||||||
|
except AttributeError as err:
|
||||||
|
raise VersionParsingException(
|
||||||
|
f"Can't extract client version from {raw_version}: {err}"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def get_server_version_from_string(raw_version: str) -> str:
|
||||||
"""
|
"""
|
||||||
Given a raw version string, such as `0.10.1.dev0` or
|
Given a raw version string, such as `0.10.1.dev0` or
|
||||||
`0.11.0-SNAPSHOT`, we should extract the major.minor.patch
|
`0.11.0-SNAPSHOT`, we should extract the major.minor.patch
|
||||||
@ -39,7 +54,7 @@ def get_version_from_string(raw_version: str) -> str:
|
|||||||
return re.match(r"\d+.\d+.\d+", raw_version).group(0)
|
return re.match(r"\d+.\d+.\d+", raw_version).group(0)
|
||||||
except AttributeError as err:
|
except AttributeError as err:
|
||||||
raise VersionParsingException(
|
raise VersionParsingException(
|
||||||
f"Can't extract version from {raw_version}: {err}"
|
f"Can't extract server version from {raw_version}: {err}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -49,7 +64,7 @@ def get_client_version() -> str:
|
|||||||
:return: client version
|
:return: client version
|
||||||
"""
|
"""
|
||||||
raw_version = version("openmetadata-ingestion")
|
raw_version = version("openmetadata-ingestion")
|
||||||
return get_version_from_string(raw_version)
|
return get_client_version_from_string(raw_version)
|
||||||
|
|
||||||
|
|
||||||
def get_metadata_version() -> str:
|
def get_metadata_version() -> str:
|
||||||
|
@ -13,7 +13,7 @@ Mixin class containing Server and client specific methods
|
|||||||
|
|
||||||
To be used by OpenMetadata class
|
To be used by OpenMetadata class
|
||||||
"""
|
"""
|
||||||
from metadata.__version__ import get_client_version, get_version_from_string
|
from metadata.__version__ import get_client_version, get_server_version_from_string
|
||||||
from metadata.ingestion.ometa.client import REST
|
from metadata.ingestion.ometa.client import REST
|
||||||
from metadata.utils.logger import ometa_logger
|
from metadata.utils.logger import ometa_logger
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ class OMetaServerMixin:
|
|||||||
"Cannot Find Version at api/v1/system/version."
|
"Cannot Find Version at api/v1/system/version."
|
||||||
+ " If running the server in DEV mode locally, make sure to `mvn clean install`."
|
+ " If running the server in DEV mode locally, make sure to `mvn clean install`."
|
||||||
)
|
)
|
||||||
return get_version_from_string(raw_version)
|
return get_server_version_from_string(raw_version)
|
||||||
|
|
||||||
def validate_versions(self) -> None:
|
def validate_versions(self) -> None:
|
||||||
"""
|
"""
|
||||||
@ -65,7 +65,9 @@ class OMetaServerMixin:
|
|||||||
server_version = self.get_server_version()
|
server_version = self.get_server_version()
|
||||||
client_version = get_client_version()
|
client_version = get_client_version()
|
||||||
|
|
||||||
if server_version != client_version:
|
# Server version will be 0.13.2, vs 0.13.2.X from the client.
|
||||||
|
# If the server version is contained in the client version, then we're good to go
|
||||||
|
if server_version not in client_version:
|
||||||
raise VersionMismatchException(
|
raise VersionMismatchException(
|
||||||
f"Server version is {server_version} vs. Client version {client_version}. Both should match."
|
f"Server version is {server_version} vs. Client version {client_version}. Both should match."
|
||||||
)
|
)
|
||||||
|
@ -37,26 +37,39 @@ from metadata.utils.sqlalchemy_utils import (
|
|||||||
|
|
||||||
@reflection.cache
|
@reflection.cache
|
||||||
def get_table_comment(
|
def get_table_comment(
|
||||||
self, connection, table_name, schema=None, resolve_synonyms=False, dblink="", **kw
|
self,
|
||||||
|
connection,
|
||||||
|
table_name: str,
|
||||||
|
schema: str = None,
|
||||||
|
resolve_synonyms=False,
|
||||||
|
dblink="",
|
||||||
|
**kw,
|
||||||
): # pylint: disable=unused-argument
|
): # pylint: disable=unused-argument
|
||||||
return get_table_comment_wrapper(
|
return get_table_comment_wrapper(
|
||||||
self,
|
self,
|
||||||
connection,
|
connection,
|
||||||
table_name=table_name,
|
table_name=table_name.lower(),
|
||||||
schema=schema,
|
schema=schema.lower() if schema else None,
|
||||||
query=ORACLE_ALL_TABLE_COMMENTS,
|
query=ORACLE_ALL_TABLE_COMMENTS,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@reflection.cache
|
@reflection.cache
|
||||||
def get_view_definition(
|
def get_view_definition(
|
||||||
self, connection, view_name, schema=None, resolve_synonyms=False, dblink="", **kw
|
self,
|
||||||
|
connection,
|
||||||
|
view_name: str,
|
||||||
|
schema: str = None,
|
||||||
|
resolve_synonyms=False,
|
||||||
|
dblink="",
|
||||||
|
**kw,
|
||||||
): # pylint: disable=unused-argument
|
): # pylint: disable=unused-argument
|
||||||
|
|
||||||
return get_view_definition_wrapper(
|
return get_view_definition_wrapper(
|
||||||
self,
|
self,
|
||||||
connection,
|
connection,
|
||||||
table_name=view_name,
|
table_name=view_name.lower(),
|
||||||
schema=schema,
|
schema=schema.lower() if schema else None,
|
||||||
query=ORACLE_ALL_VIEW_DEFINITIONS,
|
query=ORACLE_ALL_VIEW_DEFINITIONS,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -15,8 +15,8 @@ SQL Queries used during ingestion
|
|||||||
ORACLE_ALL_TABLE_COMMENTS = """
|
ORACLE_ALL_TABLE_COMMENTS = """
|
||||||
SELECT
|
SELECT
|
||||||
comments table_comment,
|
comments table_comment,
|
||||||
table_name,
|
LOWER(table_name) "table_name",
|
||||||
owner "schema"
|
LOWER(owner) "schema"
|
||||||
FROM all_tab_comments
|
FROM all_tab_comments
|
||||||
where comments is not null and owner not in ('SYSTEM', 'SYS')
|
where comments is not null and owner not in ('SYSTEM', 'SYS')
|
||||||
"""
|
"""
|
||||||
@ -24,8 +24,8 @@ where comments is not null and owner not in ('SYSTEM', 'SYS')
|
|||||||
|
|
||||||
ORACLE_ALL_VIEW_DEFINITIONS = """
|
ORACLE_ALL_VIEW_DEFINITIONS = """
|
||||||
SELECT
|
SELECT
|
||||||
view_name,
|
LOWER(view_name) "view_name",
|
||||||
owner "schema",
|
LOWER(owner) "schema",
|
||||||
text view_def
|
text view_def
|
||||||
FROM all_views
|
FROM all_views
|
||||||
where text is not null and owner not in ('SYSTEM', 'SYS')
|
where text is not null and owner not in ('SYSTEM', 'SYS')
|
||||||
|
@ -14,7 +14,10 @@ Validate Server Mixin version methods
|
|||||||
|
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
from metadata.__version__ import get_version_from_string
|
from metadata.__version__ import (
|
||||||
|
get_client_version_from_string,
|
||||||
|
get_server_version_from_string,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class OMetaVersionTest(TestCase):
|
class OMetaVersionTest(TestCase):
|
||||||
@ -26,8 +29,26 @@ class OMetaVersionTest(TestCase):
|
|||||||
"""
|
"""
|
||||||
We should be able to parse regular version responses
|
We should be able to parse regular version responses
|
||||||
"""
|
"""
|
||||||
self.assertEqual("0.11.0", get_version_from_string("0.11.0.dev0"))
|
self.assertEqual("0.11.0", get_server_version_from_string("0.11.0.dev0"))
|
||||||
self.assertEqual("0.11.0", get_version_from_string("0.11.0"))
|
self.assertEqual("0.11.0", get_server_version_from_string("0.11.0"))
|
||||||
self.assertEqual("1111.11.111", get_version_from_string("1111.11.111"))
|
self.assertEqual("1111.11.111", get_server_version_from_string("1111.11.111"))
|
||||||
self.assertEqual("1111.11.111", get_version_from_string("1111.11.111-SNAPSHOT"))
|
self.assertEqual(
|
||||||
self.assertEqual("0.11.1", get_version_from_string("0.11.1.0.0.1.patch"))
|
"1111.11.111", get_server_version_from_string("1111.11.111-SNAPSHOT")
|
||||||
|
)
|
||||||
|
self.assertEqual("0.11.1", get_server_version_from_string("0.11.1.0.0.1.patch"))
|
||||||
|
|
||||||
|
def test_get_client_version_from_string(self):
|
||||||
|
"""
|
||||||
|
We should be able to parse regular version responses
|
||||||
|
"""
|
||||||
|
self.assertEqual("0.13.2.5", get_client_version_from_string("0.13.2.5.dev0"))
|
||||||
|
self.assertEqual("0.11.0.1", get_client_version_from_string("0.11.0.1"))
|
||||||
|
self.assertEqual(
|
||||||
|
"1111.11.111.1", get_client_version_from_string("1111.11.111.1")
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
"1111.11.111.2", get_client_version_from_string("1111.11.111.2-SNAPSHOT")
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
"0.11.1.0", get_client_version_from_string("0.11.1.0.0.1.patch")
|
||||||
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user