You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by hu...@apache.org on 2022/04/13 19:43:21 UTC

[superset] branch fix-ds-save-array created (now c0ba42eb69)

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

hugh pushed a change to branch fix-ds-save-array
in repository https://gitbox.apache.org/repos/asf/superset.git


      at c0ba42eb69 convert column type in function

This branch includes the following new commits:

     new c0ba42eb69 convert column type in function

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: convert column type in function

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

hugh pushed a commit to branch fix-ds-save-array
in repository https://gitbox.apache.org/repos/asf/superset.git

commit c0ba42eb69439e789ba52cf396574d8b77431ff4
Author: hughhhh <hu...@gmail.com>
AuthorDate: Wed Apr 13 15:42:22 2022 -0400

    convert column type in function
---
 superset/connectors/sqla/utils.py | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/superset/connectors/sqla/utils.py b/superset/connectors/sqla/utils.py
index a2b54201d6..d635ea08f5 100644
--- a/superset/connectors/sqla/utils.py
+++ b/superset/connectors/sqla/utils.py
@@ -22,7 +22,7 @@ import sqlparse
 from flask_babel import lazy_gettext as _
 from sqlalchemy import and_, inspect, or_
 from sqlalchemy.engine import Engine
-from sqlalchemy.exc import NoSuchTableError
+from sqlalchemy.exc import NoSuchTableError, UnsupportedCompilationError
 from sqlalchemy.orm import Session
 from sqlalchemy.sql.type_api import TypeEngine
 
@@ -180,6 +180,16 @@ def is_column_type_temporal(column_type: TypeEngine) -> bool:
         return False
 
 
+def convert_column_type(column_type: TypeEngine) -> str:
+    try:
+        if column_type.python_type == list:
+            return "ARRAY"
+        else:
+            return str(column_type)
+    except UnsupportedCompilationError:
+        return "STRING"
+
+
 def load_or_create_tables(  # pylint: disable=too-many-arguments
     session: Session,
     database_id: int,
@@ -229,7 +239,7 @@ def load_or_create_tables(  # pylint: disable=too-many-arguments
             columns = [
                 NewColumn(
                     name=column["name"],
-                    type=str(column["type"]),
+                    type=convert_column_type(column["type"]),
                     expression=conditional_quote(column["name"]),
                     is_temporal=is_column_type_temporal(column["type"]),
                     is_aggregation=False,