You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by be...@apache.org on 2023/04/06 00:04:02 UTC

[superset] branch snowflake_get_catalog_names created (now 65254a4edd)

This is an automated email from the ASF dual-hosted git repository.

beto pushed a change to branch snowflake_get_catalog_names
in repository https://gitbox.apache.org/repos/asf/superset.git


      at 65254a4edd feat(snowflake): add `get_catalog_names`

This branch includes the following new commits:

     new 65254a4edd feat(snowflake): add `get_catalog_names`

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[superset] 01/01: feat(snowflake): add `get_catalog_names`

Posted by be...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

beto pushed a commit to branch snowflake_get_catalog_names
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 65254a4edd4b260bbc2e67a41548bf711f541a62
Author: Beto Dealmeida <ro...@dealmeida.net>
AuthorDate: Wed Apr 5 17:03:43 2023 -0700

    feat(snowflake): add `get_catalog_names`
---
 superset/db_engine_specs/snowflake.py | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/superset/db_engine_specs/snowflake.py b/superset/db_engine_specs/snowflake.py
index 033b637e48..d0e9580f42 100644
--- a/superset/db_engine_specs/snowflake.py
+++ b/superset/db_engine_specs/snowflake.py
@@ -29,6 +29,7 @@ from flask import current_app
 from flask_babel import gettext as __
 from marshmallow import fields, Schema
 from sqlalchemy import types
+from sqlalchemy.engine.reflection import Inspector
 from sqlalchemy.engine.url import URL
 from typing_extensions import TypedDict
 
@@ -167,6 +168,24 @@ class SnowflakeEngineSpec(PostgresBaseEngineSpec):
 
         return parse.unquote(database.split("/")[1])
 
+    @classmethod
+    def get_catalog_names(
+        cls,
+        database: "Database",
+        inspector: Inspector,
+    ) -> List[str]:
+        """
+        Return all catalogs.
+
+        In Snowflake, a catalog is called a "database".
+        """
+        return sorted(
+            catalog
+            for (catalog,) in inspector.bind.execute(
+                "SELECT DATABASE_NAME from information_schema.databases"
+            )
+        )
+
     @classmethod
     def epoch_to_dttm(cls) -> str:
         return "DATEADD(S, {col}, '1970-01-01')"