mirror of
https://github.com/apache/superset.git
synced 2026-06-09 09:39:25 +00:00
feat(presto): get_catalog_names (#23599)
This commit is contained in:
@@ -310,7 +310,7 @@ class PostgresEngineSpec(PostgresBaseEngineSpec, BasicParametersMixin):
|
||||
SELECT datname FROM pg_database
|
||||
WHERE datistemplate = false;
|
||||
"""
|
||||
).fetchall()
|
||||
)
|
||||
)
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -785,6 +785,17 @@ class PrestoEngineSpec(PrestoBaseEngineSpec):
|
||||
results = cursor.fetchall()
|
||||
return {row[0] for row in results}
|
||||
|
||||
@classmethod
|
||||
def get_catalog_names(
|
||||
cls,
|
||||
database: Database,
|
||||
inspector: Inspector,
|
||||
) -> List[str]:
|
||||
"""
|
||||
Get all catalogs.
|
||||
"""
|
||||
return [catalog for (catalog,) in inspector.bind.execute("SHOW CATALOGS")]
|
||||
|
||||
@classmethod
|
||||
def _create_column_info(
|
||||
cls, name: str, data_type: types.TypeEngine
|
||||
|
||||
@@ -19,12 +19,14 @@ from textwrap import dedent
|
||||
from unittest import mock, skipUnless
|
||||
|
||||
import pandas as pd
|
||||
from flask.ctx import AppContext
|
||||
from sqlalchemy import types
|
||||
from sqlalchemy.sql import select
|
||||
|
||||
from superset.db_engine_specs.presto import PrestoEngineSpec
|
||||
from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
|
||||
from superset.sql_parse import ParsedQuery
|
||||
from superset.utils.database import get_example_database
|
||||
from tests.integration_tests.db_engine_specs.base_tests import TestDbEngineSpec
|
||||
|
||||
|
||||
@@ -1032,3 +1034,22 @@ def test_is_readonly():
|
||||
assert is_readonly("EXPLAIN SELECT 1")
|
||||
assert is_readonly("SELECT 1")
|
||||
assert is_readonly("WITH (SELECT 1) bla SELECT * from bla")
|
||||
|
||||
|
||||
def test_get_catalog_names(app_context: AppContext) -> None:
|
||||
"""
|
||||
Test the ``get_catalog_names`` method.
|
||||
"""
|
||||
database = get_example_database()
|
||||
|
||||
if database.backend != "presto":
|
||||
return
|
||||
|
||||
with database.get_inspector_with_context() as inspector:
|
||||
assert PrestoEngineSpec.get_catalog_names(database, inspector) == [
|
||||
"jmx",
|
||||
"memory",
|
||||
"system",
|
||||
"tpcds",
|
||||
"tpch",
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user