Skip to content

Commit b2b09af

Browse files
authored
Merge pull request #309 from Ryuk-me/database_version_query
feat: database version query
2 parents d657dc9 + 6972c7c commit b2b09af

3 files changed

Lines changed: 36 additions & 3 deletions

File tree

dcs_core/core/datasource/sql_datasource.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
# limitations under the License.
1414

1515
from datetime import datetime
16-
from typing import Dict, List, Tuple, Union
16+
from typing import Dict, List, Optional, Tuple, Union
1717

1818
from loguru import logger
1919
from sqlalchemy import inspect, text
@@ -153,6 +153,17 @@ def quote_column(self, column: str) -> str:
153153
"""
154154
return f"[{column}]"
155155

156+
def query_get_database_version(
157+
self, database_version_query: Optional[str] = None
158+
) -> str:
159+
"""
160+
Get the database version
161+
:return: version string
162+
"""
163+
query = database_version_query or "SELECT @@version"
164+
result = self.fetchone(query)[0]
165+
return result if result else None
166+
156167
def query_get_column_metadata(self, table_name: str) -> Dict[str, str]:
157168
"""
158169
Get the column metadata

dcs_core/integrations/databases/oracle.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
# limitations under the License.
1414

1515
from datetime import datetime
16-
from typing import Any, Dict, List, Tuple, Union
16+
from typing import Any, Dict, List, Optional, Tuple, Union
1717

1818
from loguru import logger
1919
from sqlalchemy import create_engine
@@ -85,6 +85,17 @@ def quote_column(self, column: str) -> str:
8585
"""
8686
return f'"{column}"'
8787

88+
def query_get_database_version(
89+
self, database_version_query: Optional[str] = None
90+
) -> str:
91+
"""
92+
Get the database version
93+
:return: version string
94+
"""
95+
query = database_version_query or "SELECT BANNER FROM v$version"
96+
result = self.fetchone(query)[0]
97+
return result if result else None
98+
8899
def query_get_table_names(
89100
self,
90101
schema: str | None = None,

dcs_core/integrations/databases/postgres.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
from typing import Any, Dict, List
15+
from typing import Any, Dict, List, Optional
1616

1717
from sqlalchemy import create_engine
1818
from sqlalchemy.engine import URL
@@ -71,6 +71,17 @@ def quote_column(self, column: str) -> str:
7171
"""
7272
return f'"{column}"'
7373

74+
def query_get_database_version(
75+
self, database_version_query: Optional[str] = None
76+
) -> str:
77+
"""
78+
Get the database version
79+
:return: version string
80+
"""
81+
query = database_version_query or "SELECT version()"
82+
result = self.fetchone(query)[0]
83+
return result if result else None
84+
7485
def query_get_table_names(
7586
self,
7687
schema: str | None = None,

0 commit comments

Comments
 (0)