From 23e823f0c13e34deb4f2d980e4a11b158bdb8bcb Mon Sep 17 00:00:00 2001 From: Ville Brofeldt <33317356+villebro@users.noreply.github.com> Date: Mon, 25 Mar 2019 05:44:05 +0200 Subject: [PATCH] Bump SQLAlchemy to 1.3 (#7099) * Bump sqla to >=1.3.1 * Refine mssql column types to only use N-prefixing when necessary * make join explicit * replace set with list * Add additional test case for N-prefix * Replace engine with dialect and fix linting error * Remove unneeded import --- docs/installation.rst | 5 --- requirements.txt | 2 +- setup.py | 2 +- superset/db_engine_specs.py | 12 +++++-- .../4451805bbaa1_remove_double_percents.py | 4 +-- tests/db_engine_specs_test.py | 36 ++++++++++++++++++- 6 files changed, 48 insertions(+), 13 deletions(-) diff --git a/docs/installation.rst b/docs/installation.rst index 8ef994a23..7bc9f61f3 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -415,11 +415,6 @@ You can also use `PyAthena` library(no java required) like this :: See `PyAthena `_. -MSSQL ------ - -Full Unicode support requires SQLAlchemy 1.3 or later. - Snowflake --------- diff --git a/requirements.txt b/requirements.txt index ae4e48751..b20d0c421 100644 --- a/requirements.txt +++ b/requirements.txt @@ -63,7 +63,7 @@ selenium==3.141.0 simplejson==3.15.0 six==1.11.0 # via bleach, cryptography, isodate, pathlib2, polyline, pydruid, python-dateutil, sqlalchemy-utils, wtforms-json sqlalchemy-utils==0.32.21 -sqlalchemy==1.2.18 +sqlalchemy==1.3.1 sqlparse==0.2.4 unicodecsv==0.14.1 urllib3==1.22 # via requests, selenium diff --git a/setup.py b/setup.py index cc477666f..3c732b8e3 100644 --- a/setup.py +++ b/setup.py @@ -100,7 +100,7 @@ setup( 'retry>=0.9.2', 'selenium>=3.141.0', 'simplejson>=3.15.0', - 'sqlalchemy>=1.2.18, <1.3.0', + 'sqlalchemy>=1.3.1,<2.0', 'sqlalchemy-utils', 'sqlparse', 'unicodecsv', diff --git a/superset/db_engine_specs.py b/superset/db_engine_specs.py index 04779049d..8be1a216d 100644 --- a/superset/db_engine_specs.py +++ b/superset/db_engine_specs.py @@ -46,7 +46,7 @@ from sqlalchemy.engine import create_engine from sqlalchemy.engine.url import make_url from sqlalchemy.sql import quoted_name, text from sqlalchemy.sql.expression import TextAsFrom -from sqlalchemy.types import UnicodeText +from sqlalchemy.types import String, UnicodeText import sqlparse from werkzeug.utils import secure_filename @@ -1423,10 +1423,16 @@ class MssqlEngineSpec(BaseEngineSpec): data = [[elem for elem in r] for r in data] return data + column_types = [ + (String(), re.compile(r'^(?