You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ma...@apache.org on 2018/02/04 04:03:05 UTC
[incubator-superset] branch master updated: [BugFix]: Creating a PostgresBaseEngineSpec so changes to the Postgre… (#4224)
This is an automated email from the ASF dual-hosted git repository.
maximebeauchemin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
The following commit(s) were added to refs/heads/master by this push:
new a9e1e68 [BugFix]: Creating a PostgresBaseEngineSpec so changes to the Postgre… (#4224)
a9e1e68 is described below
commit a9e1e685bac585992ef444a459e305c89751481d
Author: fabianmenges <fa...@users.noreply.github.com>
AuthorDate: Sat Feb 3 23:03:02 2018 -0500
[BugFix]: Creating a PostgresBaseEngineSpec so changes to the Postgre… (#4224)
* [BugFix]: Creating a PostgresBaseEngineSpec so changes to the PostgresEngineSpec don't affect every subclass
* Empty engine for abstract Engine
---
superset/db_engine_specs.py | 75 ++++++++++++++++++++++-----------------------
1 file changed, 37 insertions(+), 38 deletions(-)
diff --git a/superset/db_engine_specs.py b/superset/db_engine_specs.py
index d26f633..efd37ba 100644
--- a/superset/db_engine_specs.py
+++ b/superset/db_engine_specs.py
@@ -280,8 +280,10 @@ class BaseEngineSpec(object):
return {}
-class PostgresEngineSpec(BaseEngineSpec):
- engine = 'postgresql'
+class PostgresBaseEngineSpec(BaseEngineSpec):
+ """ Abstract class for Postgres 'like' databases """
+
+ engine = ''
time_grains = (
Grain('Time Column', _('Time Column'), '{col}'),
@@ -311,6 +313,10 @@ class PostgresEngineSpec(BaseEngineSpec):
def convert_dttm(cls, target_type, dttm):
return "'{}'".format(dttm.strftime('%Y-%m-%d %H:%M:%S'))
+
+class PostgresEngineSpec(PostgresBaseEngineSpec):
+ engine = 'postgresql'
+
@classmethod
def get_table_names(cls, schema, inspector):
"""Need to consider foreign tables for PostgreSQL"""
@@ -319,6 +325,35 @@ class PostgresEngineSpec(BaseEngineSpec):
return sorted(tables)
+class VerticaEngineSpec(PostgresBaseEngineSpec):
+ engine = 'vertica'
+
+
+class RedshiftEngineSpec(PostgresBaseEngineSpec):
+ engine = 'redshift'
+
+
+class OracleEngineSpec(PostgresBaseEngineSpec):
+ engine = 'oracle'
+
+ time_grains = (
+ Grain('Time Column', _('Time Column'), '{col}'),
+ Grain('minute', _('minute'), "TRUNC(TO_DATE({col}), 'MI')"),
+ Grain('hour', _('hour'), "TRUNC(TO_DATE({col}), 'HH')"),
+ Grain('day', _('day'), "TRUNC(TO_DATE({col}), 'DDD')"),
+ Grain('week', _('week'), "TRUNC(TO_DATE({col}), 'WW')"),
+ Grain('month', _('month'), "TRUNC(TO_DATE({col}), 'MONTH')"),
+ Grain('quarter', _('quarter'), "TRUNC(TO_DATE({col}), 'Q')"),
+ Grain('year', _('year'), "TRUNC(TO_DATE({col}), 'YEAR')"),
+ )
+
+ @classmethod
+ def convert_dttm(cls, target_type, dttm):
+ return (
+ """TO_TIMESTAMP('{}', 'YYYY-MM-DD"T"HH24:MI:SS.ff6')"""
+ ).format(dttm.isoformat())
+
+
class Db2EngineSpec(BaseEngineSpec):
engine = 'ibm_db_sa'
time_grains = (
@@ -1046,42 +1081,6 @@ class MssqlEngineSpec(BaseEngineSpec):
return "CONVERT(DATETIME, '{}', 126)".format(dttm.isoformat())
-class RedshiftEngineSpec(PostgresEngineSpec):
- engine = 'redshift'
-
-
-class OracleEngineSpec(PostgresEngineSpec):
- engine = 'oracle'
-
- time_grains = (
- Grain('Time Column', _('Time Column'), '{col}'),
- Grain('minute', _('minute'),
- "TRUNC(TO_DATE({col}), 'MI')"),
- Grain('hour', _('hour'),
- "TRUNC(TO_DATE({col}), 'HH')"),
- Grain('day', _('day'),
- "TRUNC(TO_DATE({col}), 'DDD')"),
- Grain('week', _('week'),
- "TRUNC(TO_DATE({col}), 'WW')"),
- Grain('month', _('month'),
- "TRUNC(TO_DATE({col}), 'MONTH')"),
- Grain('quarter', _('quarter'),
- "TRUNC(TO_DATE({col}), 'Q')"),
- Grain('year', _('year'),
- "TRUNC(TO_DATE({col}), 'YEAR')"),
- )
-
- @classmethod
- def convert_dttm(cls, target_type, dttm):
- return (
- """TO_TIMESTAMP('{}', 'YYYY-MM-DD"T"HH24:MI:SS.ff6')"""
- ).format(dttm.isoformat())
-
-
-class VerticaEngineSpec(PostgresEngineSpec):
- engine = 'vertica'
-
-
class AthenaEngineSpec(BaseEngineSpec):
engine = 'awsathena'
--
To stop receiving notification emails like this one, please contact
maximebeauchemin@apache.org.