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

dpgaspar pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-superset-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new fb7052b  0.35.1 doc version
fb7052b is described below

commit fb7052b18936f8279553063591214d094986a1f3
Author: Daniel Gaspar <[email protected]>
AuthorDate: Tue Nov 26 19:24:22 2019 +0000

    0.35.1 doc version
---
 _sources/index.rst.txt        |   3 +-
 _sources/installation.rst.txt |  47 +++++++--
 _sources/security.rst.txt     |  25 +----
 _sources/sqllab.rst.txt       |  38 +++++++
 genindex.html                 |  68 -------------
 index.html                    |   4 +-
 installation.html             | 180 ++++++++++-----------------------
 objects.inv                   | Bin 634 -> 525 bytes
 searchindex.js                |   2 +-
 security.html                 |  21 ----
 sqllab.html                   | 224 ++++++------------------------------------
 11 files changed, 169 insertions(+), 443 deletions(-)

diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt
index 00b796d..fbbe57f 100644
--- a/_sources/index.rst.txt
+++ b/_sources/index.rst.txt
@@ -62,7 +62,7 @@ Superset Resources
   on Github.
 - Our `mailing list archives 
<https://lists.apache.org/[email protected]>`_.
   To subscribe, send an email to ``[email protected]``
-- `Join our Slack 
<https://join.slack.com/t/apache-superset/shared_invite/enQtNDMxMDY5NjM4MDU0LTc2Y2QwYjE4NGYwNzQyZWUwYTExZTdiZDMzMWQwZjc2YmJmM2QyMDkwMGVjZTA4N2I2MzUxZTk2YmE5MWRhZWE>`_
+- `Join our Slack 
<https://join.slack.com/t/apache-superset/shared_invite/enQtNDMxMDY5NjM4MDU0LWJmOTcxYjlhZTRhYmEyYTMzOWYxOWEwMjcwZDZiNWRiNDY2NDUwNzcwMDFhNzE1ZmMxZTZlZWY0ZTQ2MzMyNTU>`_
 
 Apache Software Foundation Resources
 ====================================
@@ -109,6 +109,7 @@ The following RDBMS are currently suppored:
 - `Apache Spark SQL <https://spark.apache.org/sql/>`_
 - `BigQuery <https://cloud.google.com/bigquery/>`_
 - `ClickHouse <https://clickhouse.yandex/>`_
+- `Exasol <https://www.exasol.com/>`_
 - `Google Sheets <https://www.google.com/sheets/about/>`_
 - `Greenplum <https://greenplum.org/>`_
 - `IBM Db2 <https://www.ibm.com/analytics/db2/>`_
diff --git a/_sources/installation.rst.txt b/_sources/installation.rst.txt
index e560657..9360437 100644
--- a/_sources/installation.rst.txt
+++ b/_sources/installation.rst.txt
@@ -24,7 +24,7 @@ Getting Started
 Superset has deprecated support for Python ``2.*`` and supports
 only ``~=3.6`` to take advantage of the newer Python features and reduce
 the burden of supporting previous versions. We run our test suite
-against ``3.6``, but running on ``3.7`` **should** work as well.
+against ``3.6``, but ``3.7`` is fully supported as well.
 
 Cloud-native!
 -------------
@@ -176,7 +176,7 @@ Superset installation and initialization
 Follow these few simple steps to install Superset.::
 
     # Install superset
-    pip install superset
+    pip install apache-superset
 
     # Initialize the database
     superset db upgrade
@@ -192,7 +192,7 @@ Follow these few simple steps to install Superset.::
     superset init
 
     # To start a development web server on port 8088, use -p to bind to 
another port
-    superset run -p 8080 --with-threads --reload --debugger
+    superset run -p 8088 --with-threads --reload --debugger
 
 After installation, you should be able to point your browser to the right
 hostname:port `http://localhost:8088 <http://localhost:8088>`_, login using
@@ -360,7 +360,7 @@ Here's a list of some of the recommended packages.
 |                  |                                       | For JDBC          
                              |
 |                  |                                       | ``drill+jdbc://`` 
                              |
 
+------------------+---------------------------------------+-------------------------------------------------+
-| Apache Druid     | ``pip install pyduid``                | ``druid://``      
                              |
+| Apache Druid     | ``pip install pydruid``                | ``druid://``     
                               |
 
+------------------+---------------------------------------+-------------------------------------------------+
 | Apache Hive      | ``pip install pyhive``                | ``hive://``       
                              |
 
+------------------+---------------------------------------+-------------------------------------------------+
@@ -377,6 +377,8 @@ Here's a list of some of the recommended packages.
 
+------------------+---------------------------------------+-------------------------------------------------+
 | ClickHouse       | ``pip install sqlalchemy-clickhouse`` |                   
                              |
 
+------------------+---------------------------------------+-------------------------------------------------+
+| Exasol           | ``pip install sqlalchemy-exasol``     | ``exa+pyodbc://`` 
                              |
++------------------+---------------------------------------+-------------------------------------------------+
 | Google Sheets    | ``pip install gsheetsdb``             | ``gsheets://``    
                              |
 
+------------------+---------------------------------------+-------------------------------------------------+
 | IBM Db2          | ``pip install ibm_db_sa``             | ``db2+ibm_db://`` 
                              |
@@ -577,6 +579,9 @@ object gets unpacked into the
 while the ``metadata_params`` get unpacked into the
 `sqlalchemy.MetaData 
<https://docs.sqlalchemy.org/en/rel_1_2/core/metadata.html#sqlalchemy.schema.MetaData>`_
 call. Refer to the SQLAlchemy docs for more information.
 
+.. note:: If your using CTAS on SQLLab and PostgreSQL
+    take a look at :ref:`ref_ctas_engine_config` for specific 
``engine_params``.
+
 
 Schemas (Postgres & Redshift)
 -----------------------------
@@ -659,6 +664,25 @@ it in the ``extra`` parameter::
     }
 
 
+Exasol
+---------
+
+The connection string for Exasol looks like this ::
+
+    exa+pyodbc://{user}:{password}@{host}
+
+*Note*: It's required to have Exasol ODBC drivers installed for the sqlalchemy 
dialect to work properly. Exasol ODBC Drivers available are here: 
https://www.exasol.com/portal/display/DOWNLOAD/Exasol+Download+Section
+
+Example config (odbcinst.ini can be left empty) ::
+
+    $ cat $/.../path/to/odbc.ini
+    [EXAODBC]
+    DRIVER = /.../path/to/driver/EXASOL_driver.so
+    EXAHOST = host:8563
+    EXASCHEMA = main
+
+See `SQLAlchemy for Exasol 
<https://github.com/blue-yonder/sqlalchemy_exasol>`_.
+
 CORS
 ----
 
@@ -748,7 +772,7 @@ Upgrading
 
 Upgrading should be as straightforward as running::
 
-    pip install superset --upgrade
+    pip install apache-superset --upgrade
     superset db upgrade
     superset init
 
@@ -846,6 +870,12 @@ look something like:
     RESULTS_BACKEND = RedisCache(
         host='localhost', port=6379, key_prefix='superset_results')
 
+For performance gains, `MessagePack 
<https://github.com/msgpack/msgpack-python>`_
+and `PyArrow <https://arrow.apache.org/docs/python/>`_ are now used for results
+serialization. This can be disabled by setting ``RESULTS_BACKEND_USE_MSGPACK = 
False``
+in your configuration, should any issues arise. Please clear your existing 
results
+cache store when upgrading an existing environment.
+
 **Important notes**
 
 * It is important that all the worker nodes and web servers in
@@ -1185,7 +1215,8 @@ You can enable or disable features with flag from 
``superset_config.py``:
 
      DEFAULT_FEATURE_FLAGS = {
          'CLIENT_CACHE': False,
-         'ENABLE_EXPLORE_JSON_CSRF_PROTECTION': False
+         'ENABLE_EXPLORE_JSON_CSRF_PROTECTION': False,
+         'PRESTO_EXPAND_DATA': False,
      }
 
 Here is a list of flags and descriptions:
@@ -1195,3 +1226,7 @@ Here is a list of flags and descriptions:
   * For some security concerns, you may need to enforce CSRF protection on all 
query request to explore_json endpoint. In Superset, we use `flask-csrf 
<https://sjl.bitbucket.io/flask-csrf/>`_ add csrf protection for all POST 
requests, but this protection doesn't apply to GET method.
 
   * When ENABLE_EXPLORE_JSON_CSRF_PROTECTION is set to true, your users cannot 
make GET request to explore_json. The default value for this feature False 
(current behavior), explore_json accepts both GET and POST request. See `PR 
7935 <https://github.com/apache/incubator-superset/pull/7935>`_ for more 
details.
+
+* PRESTO_EXPAND_DATA
+
+  * When this feature is enabled, nested types in Presto will be expanded into 
extra columns and/or arrays. This is experimental, and doesn't work with all 
nested types.
diff --git a/_sources/security.rst.txt b/_sources/security.rst.txt
index 67c3596..0e796e3 100644
--- a/_sources/security.rst.txt
+++ b/_sources/security.rst.txt
@@ -20,7 +20,7 @@ Security
 Security in Superset is handled by Flask AppBuilder (FAB). FAB is a
 "Simple and rapid application development framework, built on top of Flask.".
 FAB provides authentication, user management, permissions and roles.
-Please read its `Security documentation 
+Please read its `Security documentation
 <https://flask-appbuilder.readthedocs.io/en/latest/security.html>`_.
 
 Provided Roles
@@ -153,26 +153,3 @@ a set of data sources that power dashboards only made 
available to executives.
 When looking at its dashboard list, this user will only see the
 list of dashboards it has access to, based on the roles and
 permissions that were attributed.
-
-
-Restricting the access to some metrics
-""""""""""""""""""""""""""""""""""""""
-
-Sometimes some metrics are relatively sensitive (e.g. revenue).
-We may want to restrict those metrics to only a few roles.
-For example, assumed there is a metric ``[cluster1].[datasource1].[revenue]``
-and only Admin users are allowed to see it. Here’s how to restrict the access.
-
-1. Edit the datasource (``Menu -> Source -> Druid datasources -> edit the
-   record "datasource1"``) and go to the tab ``List Druid Metric``. Check
-   the checkbox ``Is Restricted`` in the row of the metric ``revenue``.
-
-2. Edit the role (``Menu -> Security -> List Roles -> edit the record
-   “Admin”``), in the permissions field, type-and-search the permission
-   ``metric access on [cluster1].[datasource1].[revenue] (id: 1)``, then
-   click the Save button on the bottom of the page.
-
-Any users without the permission will see the error message
-*Access to the metrics denied: revenue (Status: 500)* in the slices.
-It also happens when the user wants to access a post-aggregation metric that
-is dependent on revenue.
diff --git a/_sources/sqllab.rst.txt b/_sources/sqllab.rst.txt
index c69e584..39ae4d4 100644
--- a/_sources/sqllab.rst.txt
+++ b/_sources/sqllab.rst.txt
@@ -103,3 +103,41 @@ it's possible for administrators to expose more more 
macros in their
 environment using the configuration variable ``JINJA_CONTEXT_ADDONS``.
 All objects referenced in this dictionary will become available for users
 to integrate in their queries in **SQL Lab**.
+
+Query cost estimation
+'''''''''''''''''''''
+
+Some databases support ``EXPLAIN`` queries that allow users to estimate the 
cost
+of queries before executing this. Currently, Presto is supported in SQL Lab. To
+enable query cost estimation, add the following keys to the "Extra" field in 
the
+database configuration:
+
+.. code-block:: json
+
+    {
+        "version": "0.319",
+        "cost_estimate_enabled": true,
+        ...
+    }
+
+Here, "version" should be the version of your Presto cluster. Support for this
+functionality was introduced in Presto 0.319.
+
+.. _ref_ctas_engine_config:
+
+Create Table As (CTAS)
+''''''''''''''''''''''
+
+You can use ``CREATE TABLE AS SELECT ...`` statements on SQLLab. This feature 
can be toggled on
+and off at the database configuration level.
+
+Note that since ``CREATE TABLE..`` belongs to a SQL DDL category. Specifically 
on PostgreSQL, DDL is transactional,
+this means that to properly use this feature you have to set ``autocommit`` to 
true on your engine parameters:
+
+.. code-block:: json
+
+    {
+        ...
+        "engine_params": {"isolation_level":"AUTOCOMMIT"},
+        ...
+    }
diff --git a/genindex.html b/genindex.html
index bf9efde..ca3e720 100644
--- a/genindex.html
+++ b/genindex.html
@@ -154,76 +154,8 @@
 <h1 id="index">Index</h1>
 
 <div class="genindex-jumpbox">
- <a href="#C"><strong>C</strong></a>
- | <a href="#F"><strong>F</strong></a>
- | <a href="#H"><strong>H</strong></a>
- | <a href="#L"><strong>L</strong></a>
- | <a href="#P"><strong>P</strong></a>
- | <a href="#U"><strong>U</strong></a>
  
 </div>
-<h2 id="C">C</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a 
href="sqllab.html#superset.jinja_context.CacheKeyWrapper.cache_key_wrapper">cache_key_wrapper()
 (in module superset.jinja_context.CacheKeyWrapper)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a 
href="sqllab.html#superset.jinja_context.current_user_id">current_user_id() (in 
module superset.jinja_context)</a>
-</li>
-      <li><a 
href="sqllab.html#superset.jinja_context.current_username">current_username() 
(in module superset.jinja_context)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="F">F</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a 
href="sqllab.html#superset.jinja_context.filter_values">filter_values() (in 
module superset.jinja_context)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a 
href="sqllab.html#superset.jinja_context.PrestoTemplateProcessor.first_latest_partition">first_latest_partition()
 (superset.jinja_context.PrestoTemplateProcessor method)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="H">H</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a 
href="sqllab.html#superset.jinja_context.HiveTemplateProcessor">HiveTemplateProcessor
 (class in superset.jinja_context)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="L">L</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a 
href="sqllab.html#superset.jinja_context.PrestoTemplateProcessor.latest_partition">latest_partition()
 (superset.jinja_context.PrestoTemplateProcessor method)</a>
-</li>
-  </ul></td>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a 
href="sqllab.html#superset.jinja_context.PrestoTemplateProcessor.latest_partitions">latest_partitions()
 (superset.jinja_context.PrestoTemplateProcessor method)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="P">P</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a 
href="sqllab.html#superset.jinja_context.PrestoTemplateProcessor">PrestoTemplateProcessor
 (class in superset.jinja_context)</a>
-</li>
-  </ul></td>
-</tr></table>
-
-<h2 id="U">U</h2>
-<table style="width: 100%" class="indextable genindextable"><tr>
-  <td style="width: 33%; vertical-align: top;"><ul>
-      <li><a href="sqllab.html#superset.jinja_context.url_param">url_param() 
(in module superset.jinja_context)</a>
-</li>
-  </ul></td>
-</tr></table>
-
 
 
            </div>
diff --git a/index.html b/index.html
index 1586fae..65b630d 100644
--- a/index.html
+++ b/index.html
@@ -187,7 +187,7 @@ and
 on Github.</p></li>
 <li><p>Our <a class="reference external" 
href="https://lists.apache.org/list.html?dev&#64;superset.apache.org";>mailing 
list archives</a>.
 To subscribe, send an email to <code class="docutils literal 
notranslate"><span 
class="pre">dev-subscribe&#64;superset.apache.org</span></code></p></li>
-<li><p><a class="reference external" 
href="https://join.slack.com/t/apache-superset/shared_invite/enQtNDMxMDY5NjM4MDU0LTc2Y2QwYjE4NGYwNzQyZWUwYTExZTdiZDMzMWQwZjc2YmJmM2QyMDkwMGVjZTA4N2I2MzUxZTk2YmE5MWRhZWE";>Join
 our Slack</a></p></li>
+<li><p><a class="reference external" 
href="https://join.slack.com/t/apache-superset/shared_invite/enQtNDMxMDY5NjM4MDU0LWJmOTcxYjlhZTRhYmEyYTMzOWYxOWEwMjcwZDZiNWRiNDY2NDUwNzcwMDFhNzE1ZmMxZTZlZWY0ZTQ2MzMyNTU";>Join
 our Slack</a></p></li>
 </ul>
 </div>
 <div class="section" id="apache-software-foundation-resources">
@@ -236,6 +236,7 @@ to the user</p></li>
 <li><p><a class="reference external" 
href="https://spark.apache.org/sql/";>Apache Spark SQL</a></p></li>
 <li><p><a class="reference external" 
href="https://cloud.google.com/bigquery/";>BigQuery</a></p></li>
 <li><p><a class="reference external" 
href="https://clickhouse.yandex/";>ClickHouse</a></p></li>
+<li><p><a class="reference external" 
href="https://www.exasol.com/";>Exasol</a></p></li>
 <li><p><a class="reference external" 
href="https://www.google.com/sheets/about/";>Google Sheets</a></p></li>
 <li><p><a class="reference external" 
href="https://greenplum.org/";>Greenplum</a></p></li>
 <li><p><a class="reference external" 
href="https://www.ibm.com/analytics/db2/";>IBM Db2</a></p></li>
@@ -292,6 +293,7 @@ be supported as well.</p>
 <li class="toctree-l2"><a class="reference internal" 
href="installation.html#ssl-access-to-databases">SSL Access to 
databases</a></li>
 <li class="toctree-l2"><a class="reference internal" 
href="installation.html#druid">Druid</a></li>
 <li class="toctree-l2"><a class="reference internal" 
href="installation.html#presto">Presto</a></li>
+<li class="toctree-l2"><a class="reference internal" 
href="installation.html#exasol">Exasol</a></li>
 <li class="toctree-l2"><a class="reference internal" 
href="installation.html#cors">CORS</a></li>
 <li class="toctree-l2"><a class="reference internal" 
href="installation.html#domain-sharding">DOMAIN SHARDING</a></li>
 <li class="toctree-l2"><a class="reference internal" 
href="installation.html#middleware">MIDDLEWARE</a></li>
diff --git a/installation.html b/installation.html
index 2b17546..89e4f78 100644
--- a/installation.html
+++ b/installation.html
@@ -106,6 +106,7 @@
 <li class="toctree-l2"><a class="reference internal" 
href="#ssl-access-to-databases">SSL Access to databases</a></li>
 <li class="toctree-l2"><a class="reference internal" 
href="#druid">Druid</a></li>
 <li class="toctree-l2"><a class="reference internal" 
href="#presto">Presto</a></li>
+<li class="toctree-l2"><a class="reference internal" 
href="#exasol">Exasol</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#cors">CORS</a></li>
 <li class="toctree-l2"><a class="reference internal" 
href="#domain-sharding">DOMAIN SHARDING</a></li>
 <li class="toctree-l2"><a class="reference internal" 
href="#middleware">MIDDLEWARE</a></li>
@@ -199,7 +200,7 @@
 <p>Superset has deprecated support for Python <code class="docutils literal 
notranslate"><span class="pre">2.*</span></code> and supports
 only <code class="docutils literal notranslate"><span 
class="pre">~=3.6</span></code> to take advantage of the newer Python features 
and reduce
 the burden of supporting previous versions. We run our test suite
-against <code class="docutils literal notranslate"><span 
class="pre">3.6</span></code>, but running on <code class="docutils literal 
notranslate"><span class="pre">3.7</span></code> <strong>should</strong> work 
as well.</p>
+against <code class="docutils literal notranslate"><span 
class="pre">3.6</span></code>, but <code class="docutils literal 
notranslate"><span class="pre">3.7</span></code> is fully supported as well.</p>
 </div>
 <div class="section" id="cloud-native">
 <h2>Cloud-native!<a class="headerlink" href="#cloud-native" title="Permalink 
to this headline">¶</a></h2>
@@ -338,7 +339,7 @@ and <code class="docutils literal notranslate"><span 
class="pre">setuptools</spa
 <h2>Superset installation and initialization<a class="headerlink" 
href="#superset-installation-and-initialization" title="Permalink to this 
headline">¶</a></h2>
 <p>Follow these few simple steps to install Superset.:</p>
 <div class="highlight-default notranslate"><div 
class="highlight"><pre><span></span># Install superset
-pip install superset
+pip install apache-superset
 
 # Initialize the database
 superset db upgrade
@@ -354,7 +355,7 @@ superset load_examples
 superset init
 
 # To start a development web server on port 8088, use -p to bind to another 
port
-superset run -p 8080 --with-threads --reload --debugger
+superset run -p 8088 --with-threads --reload --debugger
 </pre></div>
 </div>
 <p>After installation, you should be able to point your browser to the right
@@ -493,118 +494,6 @@ You’ll need to install the required packages for the 
database you
 want to use as your metadata database as well as the packages needed to
 connect to the databases you want to access through Superset.</p>
 <p>Here’s a list of some of the recommended packages.</p>
-<table class="docutils align-default">
-<colgroup>
-<col style="width: 17%" />
-<col style="width: 37%" />
-<col style="width: 46%" />
-</colgroup>
-<thead>
-<tr class="row-odd"><th class="head"><p>database</p></th>
-<th class="head"><p>pypi package</p></th>
-<th class="head"><p>SQLAlchemy URI prefix</p></th>
-</tr>
-</thead>
-<tbody>
-<tr class="row-even"><td><p>Amazon Athena</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span 
class="pre">&quot;PyAthenaJDBC&gt;1.0.9&quot;</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">awsathena+jdbc://</span></code></p></td>
-</tr>
-<tr class="row-odd"><td><p>Amazon Athena</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span 
class="pre">&quot;PyAthena&gt;1.2.0&quot;</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">awsathena+rest://</span></code></p></td>
-</tr>
-<tr class="row-even"><td><p>Amazon Redshift</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span 
class="pre">sqlalchemy-redshift</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">redshift+psycopg2://</span></code></p></td>
-</tr>
-<tr class="row-odd"><td><p>Apache Drill</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span 
class="pre">sqlalchemy-drill</span></code></p></td>
-<td><p>For the REST API:``
-<code class="docutils literal notranslate"><span 
class="pre">drill+sadrill://</span></code>
-For JDBC
-<code class="docutils literal notranslate"><span 
class="pre">drill+jdbc://</span></code></p></td>
-</tr>
-<tr class="row-even"><td><p>Apache Druid</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span class="pre">pyduid</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">druid://</span></code></p></td>
-</tr>
-<tr class="row-odd"><td><p>Apache Hive</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span class="pre">pyhive</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">hive://</span></code></p></td>
-</tr>
-<tr class="row-even"><td><p>Apache Impala</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span class="pre">impyla</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">impala://</span></code></p></td>
-</tr>
-<tr class="row-odd"><td><p>Apache Kylin</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span 
class="pre">kylinpy</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">kylin://</span></code></p></td>
-</tr>
-<tr class="row-even"><td><p>Apache Pinot</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span 
class="pre">pinotdb</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">pinot+http://CONTROLLER:5436/</span></code>
-<code class="docutils literal notranslate"><span 
class="pre">query?server=http://CONTROLLER:5983/</span></code></p></td>
-</tr>
-<tr class="row-odd"><td><p>Apache Spark SQL</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span class="pre">pyhive</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">jdbc+hive://</span></code></p></td>
-</tr>
-<tr class="row-even"><td><p>BigQuery</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span 
class="pre">pybigquery</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">bigquery://</span></code></p></td>
-</tr>
-<tr class="row-odd"><td><p>ClickHouse</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span 
class="pre">sqlalchemy-clickhouse</span></code></p></td>
-<td></td>
-</tr>
-<tr class="row-even"><td><p>Google Sheets</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span 
class="pre">gsheetsdb</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">gsheets://</span></code></p></td>
-</tr>
-<tr class="row-odd"><td><p>IBM Db2</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span 
class="pre">ibm_db_sa</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">db2+ibm_db://</span></code></p></td>
-</tr>
-<tr class="row-even"><td><p>MySQL</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span 
class="pre">mysqlclient</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">mysql://</span></code></p></td>
-</tr>
-<tr class="row-odd"><td><p>Oracle</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span 
class="pre">cx_Oracle</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">oracle://</span></code></p></td>
-</tr>
-<tr class="row-even"><td><p>PostgreSQL</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span 
class="pre">psycopg2</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">postgresql+psycopg2://</span></code></p></td>
-</tr>
-<tr class="row-odd"><td><p>Presto</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span class="pre">pyhive</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">presto://</span></code></p></td>
-</tr>
-<tr class="row-even"><td><p>Snowflake</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span 
class="pre">snowflake-sqlalchemy</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">snowflake://</span></code></p></td>
-</tr>
-<tr class="row-odd"><td><p>SQLite</p></td>
-<td></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">sqlite://</span></code></p></td>
-</tr>
-<tr class="row-even"><td><p>SQL Server</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span 
class="pre">pymssql</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">mssql://</span></code></p></td>
-</tr>
-<tr class="row-odd"><td><p>Teradata</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span> <span 
class="pre">sqlalchemy-teradata</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">teradata://</span></code></p></td>
-</tr>
-<tr class="row-even"><td><p>Vertica</p></td>
-<td><p><code class="docutils literal notranslate"><span class="pre">pip</span> 
<span class="pre">install</span>
-<span class="pre">sqlalchemy-vertica-python</span></code></p></td>
-<td><p><code class="docutils literal notranslate"><span 
class="pre">vertica+vertica_python://</span></code></p></td>
-</tr>
-</tbody>
-</table>
 <p>Note that many other databases are supported, the main criteria being the
 existence of a functional SqlAlchemy dialect and Python driver. Googling
 the keyword <code class="docutils literal notranslate"><span 
class="pre">sqlalchemy</span></code> in addition of a keyword that describes the
@@ -759,6 +648,11 @@ object gets unpacked into the
 <a class="reference external" 
href="https://docs.sqlalchemy.org/en/latest/core/engines.html#sqlalchemy.create_engine";>sqlalchemy.create_engine</a>
 call,
 while the <code class="docutils literal notranslate"><span 
class="pre">metadata_params</span></code> get unpacked into the
 <a class="reference external" 
href="https://docs.sqlalchemy.org/en/rel_1_2/core/metadata.html#sqlalchemy.schema.MetaData";>sqlalchemy.MetaData</a>
 call. Refer to the SQLAlchemy docs for more information.</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>If your using CTAS on SQLLab and PostgreSQL
+take a look at <a class="reference internal" 
href="sqllab.html#ref-ctas-engine-config"><span class="std std-ref">Create 
Table As (CTAS)</span></a> for specific <code class="docutils literal 
notranslate"><span class="pre">engine_params</span></code>.</p>
+</div>
 </div>
 <div class="section" id="schemas-postgres-redshift">
 <h2>Schemas (Postgres &amp; Redshift)<a class="headerlink" 
href="#schemas-postgres-redshift" title="Permalink to this headline">¶</a></h2>
@@ -834,6 +728,23 @@ it in the <code class="docutils literal notranslate"><span 
class="pre">extra</sp
 </pre></div>
 </div>
 </div>
+<div class="section" id="exasol">
+<h2>Exasol<a class="headerlink" href="#exasol" title="Permalink to this 
headline">¶</a></h2>
+<p>The connection string for Exasol looks like this</p>
+<div class="highlight-default notranslate"><div 
class="highlight"><pre><span></span><span class="n">exa</span><span 
class="o">+</span><span class="n">pyodbc</span><span class="p">:</span><span 
class="o">//</span><span class="p">{</span><span class="n">user</span><span 
class="p">}:{</span><span class="n">password</span><span 
class="p">}</span><span class="o">@</span><span class="p">{</span><span 
class="n">host</span><span class="p">}</span>
+</pre></div>
+</div>
+<p><em>Note</em>: It’s required to have Exasol ODBC drivers installed for the 
sqlalchemy dialect to work properly. Exasol ODBC Drivers available are here: <a 
class="reference external" 
href="https://www.exasol.com/portal/display/DOWNLOAD/Exasol+Download+Section";>https://www.exasol.com/portal/display/DOWNLOAD/Exasol+Download+Section</a></p>
+<p>Example config (odbcinst.ini can be left empty)</p>
+<div class="highlight-default notranslate"><div 
class="highlight"><pre><span></span>$ cat $/.../path/to/odbc.ini
+[EXAODBC]
+DRIVER = /.../path/to/driver/EXASOL_driver.so
+EXAHOST = host:8563
+EXASCHEMA = main
+</pre></div>
+</div>
+<p>See <a class="reference external" 
href="https://github.com/blue-yonder/sqlalchemy_exasol";>SQLAlchemy for 
Exasol</a>.</p>
+</div>
 <div class="section" id="cors">
 <h2>CORS<a class="headerlink" href="#cors" title="Permalink to this 
headline">¶</a></h2>
 <p>The extra CORS Dependency must be installed:</p>
@@ -865,9 +776,9 @@ your <cite>superset_config.py</cite>. <code class="docutils 
literal notranslate"
 add the value of <code class="docutils literal notranslate"><span 
class="pre">HTTP_X_PROXY_REMOTE_USER</span></code> (or any other custom header 
from the proxy) to Gunicorn’s <code class="docutils literal notranslate"><span 
class="pre">REMOTE_USER</span></code>
 environment variable:</p>
 <div class="highlight-default notranslate"><div 
class="highlight"><pre><span></span><span class="k">class</span> <span 
class="nc">RemoteUserMiddleware</span><span class="p">(</span><span 
class="nb">object</span><span class="p">):</span>
-    <span class="k">def</span> <span class="nf">__init__</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">app</span><span class="p">):</span>
+    <span class="k">def</span> <span class="fm">__init__</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">app</span><span class="p">):</span>
         <span class="bp">self</span><span class="o">.</span><span 
class="n">app</span> <span class="o">=</span> <span class="n">app</span>
-    <span class="k">def</span> <span class="nf">__call__</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">environ</span><span class="p">,</span> <span 
class="n">start_response</span><span class="p">):</span>
+    <span class="k">def</span> <span class="fm">__call__</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">environ</span><span class="p">,</span> <span 
class="n">start_response</span><span class="p">):</span>
         <span class="n">user</span> <span class="o">=</span> <span 
class="n">environ</span><span class="o">.</span><span class="n">pop</span><span 
class="p">(</span><span 
class="s1">&#39;HTTP_X_PROXY_REMOTE_USER&#39;</span><span class="p">,</span> 
<span class="kc">None</span><span class="p">)</span>
         <span class="n">environ</span><span class="p">[</span><span 
class="s1">&#39;REMOTE_USER&#39;</span><span class="p">]</span> <span 
class="o">=</span> <span class="n">user</span>
         <span class="k">return</span> <span class="bp">self</span><span 
class="o">.</span><span class="n">app</span><span class="p">(</span><span 
class="n">environ</span><span class="p">,</span> <span 
class="n">start_response</span><span class="p">)</span>
@@ -912,7 +823,7 @@ environment variable:</p>
 <div class="section" id="upgrading">
 <h2>Upgrading<a class="headerlink" href="#upgrading" title="Permalink to this 
headline">¶</a></h2>
 <p>Upgrading should be as straightforward as running:</p>
-<div class="highlight-default notranslate"><div 
class="highlight"><pre><span></span><span class="n">pip</span> <span 
class="n">install</span> <span class="n">superset</span> <span 
class="o">--</span><span class="n">upgrade</span>
+<div class="highlight-default notranslate"><div 
class="highlight"><pre><span></span><span class="n">pip</span> <span 
class="n">install</span> <span class="n">apache</span><span 
class="o">-</span><span class="n">superset</span> <span 
class="o">--</span><span class="n">upgrade</span>
 <span class="n">superset</span> <span class="n">db</span> <span 
class="n">upgrade</span>
 <span class="n">superset</span> <span class="n">init</span>
 </pre></div>
@@ -957,7 +868,7 @@ have the same configuration.</p>
     <span class="n">CELERY_RESULT_BACKEND</span> <span class="o">=</span> 
<span class="s1">&#39;redis://localhost:6379/0&#39;</span>
     <span class="n">CELERYD_LOG_LEVEL</span> <span class="o">=</span> <span 
class="s1">&#39;DEBUG&#39;</span>
     <span class="n">CELERYD_PREFETCH_MULTIPLIER</span> <span 
class="o">=</span> <span class="mi">10</span>
-    <span class="n">CELERY_ACKS_LATE</span> <span class="o">=</span> <span 
class="bp">True</span>
+    <span class="n">CELERY_ACKS_LATE</span> <span class="o">=</span> <span 
class="kc">True</span>
     <span class="n">CELERY_ANNOTATIONS</span> <span class="o">=</span> <span 
class="p">{</span>
         <span class="s1">&#39;sql_lab.get_sql_results&#39;</span><span 
class="p">:</span> <span class="p">{</span>
             <span class="s1">&#39;rate_limit&#39;</span><span 
class="p">:</span> <span class="s1">&#39;100/s&#39;</span><span 
class="p">,</span>
@@ -966,7 +877,7 @@ have the same configuration.</p>
             <span class="s1">&#39;rate_limit&#39;</span><span 
class="p">:</span> <span class="s1">&#39;1/s&#39;</span><span class="p">,</span>
             <span class="s1">&#39;time_limit&#39;</span><span 
class="p">:</span> <span class="mi">120</span><span class="p">,</span>
             <span class="s1">&#39;soft_time_limit&#39;</span><span 
class="p">:</span> <span class="mi">150</span><span class="p">,</span>
-            <span class="s1">&#39;ignore_result&#39;</span><span 
class="p">:</span> <span class="bp">True</span><span class="p">,</span>
+            <span class="s1">&#39;ignore_result&#39;</span><span 
class="p">:</span> <span class="kc">True</span><span class="p">,</span>
         <span class="p">},</span>
     <span class="p">}</span>
     <span class="n">CELERYBEAT_SCHEDULE</span> <span class="o">=</span> <span 
class="p">{</span>
@@ -1010,6 +921,11 @@ look something like:</p>
     <span class="n">host</span><span class="o">=</span><span 
class="s1">&#39;localhost&#39;</span><span class="p">,</span> <span 
class="n">port</span><span class="o">=</span><span class="mi">6379</span><span 
class="p">,</span> <span class="n">key_prefix</span><span 
class="o">=</span><span class="s1">&#39;superset_results&#39;</span><span 
class="p">)</span>
 </pre></div>
 </div>
+<p>For performance gains, <a class="reference external" 
href="https://github.com/msgpack/msgpack-python";>MessagePack</a>
+and <a class="reference external" 
href="https://arrow.apache.org/docs/python/";>PyArrow</a> are now used for 
results
+serialization. This can be disabled by setting <code class="docutils literal 
notranslate"><span class="pre">RESULTS_BACKEND_USE_MSGPACK</span> <span 
class="pre">=</span> <span class="pre">False</span></code>
+in your configuration, should any issues arise. Please clear your existing 
results
+cache store when upgrading an existing environment.</p>
 <p><strong>Important notes</strong></p>
 <ul class="simple">
 <li><p>It is important that all the worker nodes and web servers in
@@ -1174,7 +1090,7 @@ up by an external scheduled (like [Apache Airflow](<a 
class="reference external"
         <span class="c1"># that uses the query id and the output table as its 
name</span>
         <span class="s1">&#39;linkback&#39;</span><span class="p">:</span> 
<span class="p">(</span>
             <span 
class="s1">&#39;https://airflow.example.com/admin/airflow/tree?&#39;</span>
-            <span 
class="s1">&#39;dag_id=query_${id}_${extra_json.schedule_info.output_table}&#39;</span>
+            <span class="s1">&#39;dag_id=query_$</span><span 
class="si">{id}</span><span class="s1">_$</span><span 
class="si">{extra_json.schedule_info.output_table}</span><span 
class="s1">&#39;</span>
         <span class="p">),</span>
     <span class="p">},</span>
 <span class="p">}</span>
@@ -1220,8 +1136,8 @@ same server.</p>
 <div class="highlight-python notranslate"><div 
class="highlight"><pre><span></span><span class="kn">from</span> <span 
class="nn">flask</span> <span class="kn">import</span> <span 
class="n">Blueprint</span>
 <span class="n">simple_page</span> <span class="o">=</span> <span 
class="n">Blueprint</span><span class="p">(</span><span 
class="s1">&#39;simple_page&#39;</span><span class="p">,</span> <span 
class="vm">__name__</span><span class="p">,</span>
                                 <span class="n">template_folder</span><span 
class="o">=</span><span class="s1">&#39;templates&#39;</span><span 
class="p">)</span>
-<span class="nd">@simple_page.route</span><span class="p">(</span><span 
class="s1">&#39;/&#39;</span><span class="p">,</span> <span 
class="n">defaults</span><span class="o">=</span><span class="p">{</span><span 
class="s1">&#39;page&#39;</span><span class="p">:</span> <span 
class="s1">&#39;index&#39;</span><span class="p">})</span>
-<span class="nd">@simple_page.route</span><span class="p">(</span><span 
class="s1">&#39;/&lt;page&gt;&#39;</span><span class="p">)</span>
+<span class="nd">@simple_page</span><span class="o">.</span><span 
class="n">route</span><span class="p">(</span><span 
class="s1">&#39;/&#39;</span><span class="p">,</span> <span 
class="n">defaults</span><span class="o">=</span><span class="p">{</span><span 
class="s1">&#39;page&#39;</span><span class="p">:</span> <span 
class="s1">&#39;index&#39;</span><span class="p">})</span>
+<span class="nd">@simple_page</span><span class="o">.</span><span 
class="n">route</span><span class="p">(</span><span 
class="s1">&#39;/&lt;page&gt;&#39;</span><span class="p">)</span>
 <span class="k">def</span> <span class="nf">show</span><span 
class="p">(</span><span class="n">page</span><span class="p">):</span>
     <span class="k">return</span> <span class="s2">&quot;Ok&quot;</span>
 
@@ -1282,7 +1198,7 @@ located in <code class="docutils literal 
notranslate"><span class="pre">install/
 <span class="p">]</span>
 
 <span class="c1"># Will allow user self registration, allowing to create Flask 
users from Authorized User</span>
-<span class="n">AUTH_USER_REGISTRATION</span> <span class="o">=</span> <span 
class="bp">True</span>
+<span class="n">AUTH_USER_REGISTRATION</span> <span class="o">=</span> <span 
class="kc">True</span>
 
 <span class="c1"># The default user self registration role</span>
 <span class="n">AUTH_USER_REGISTRATION_ROLE</span> <span class="o">=</span> 
<span class="s2">&quot;Public&quot;</span>
@@ -1293,13 +1209,13 @@ located in <code class="docutils literal 
notranslate"><span class="pre">install/
 
 <span class="k">class</span> <span 
class="nc">CustomSsoSecurityManager</span><span class="p">(</span><span 
class="n">SupersetSecurityManager</span><span class="p">):</span>
 
-    <span class="k">def</span> <span class="nf">oauth_user_info</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">provider</span><span class="p">,</span> <span 
class="n">response</span><span class="o">=</span><span 
class="bp">None</span><span class="p">):</span>
-        <span class="n">logging</span><span class="o">.</span><span 
class="n">debug</span><span class="p">(</span><span class="s2">&quot;Oauth2 
provider: {0}.&quot;</span><span class="o">.</span><span 
class="n">format</span><span class="p">(</span><span 
class="n">provider</span><span class="p">))</span>
+    <span class="k">def</span> <span class="nf">oauth_user_info</span><span 
class="p">(</span><span class="bp">self</span><span class="p">,</span> <span 
class="n">provider</span><span class="p">,</span> <span 
class="n">response</span><span class="o">=</span><span 
class="kc">None</span><span class="p">):</span>
+        <span class="n">logging</span><span class="o">.</span><span 
class="n">debug</span><span class="p">(</span><span class="s2">&quot;Oauth2 
provider: </span><span class="si">{0}</span><span 
class="s2">.&quot;</span><span class="o">.</span><span 
class="n">format</span><span class="p">(</span><span 
class="n">provider</span><span class="p">))</span>
         <span class="k">if</span> <span class="n">provider</span> <span 
class="o">==</span> <span class="s1">&#39;egaSSO&#39;</span><span 
class="p">:</span>
             <span class="c1"># As example, this line request a GET to base_url 
+ &#39;/&#39; + userDetails with Bearer  Authentication,</span>
     <span class="c1"># and expects that authorization server checks the token, 
and response with user details</span>
             <span class="n">me</span> <span class="o">=</span> <span 
class="bp">self</span><span class="o">.</span><span 
class="n">appbuilder</span><span class="o">.</span><span 
class="n">sm</span><span class="o">.</span><span 
class="n">oauth_remotes</span><span class="p">[</span><span 
class="n">provider</span><span class="p">]</span><span class="o">.</span><span 
class="n">get</span><span class="p">(</span><span 
class="s1">&#39;userDetails&#39;</span><span class="p">)</span><span class=" 
[...]
-            <span class="n">logging</span><span class="o">.</span><span 
class="n">debug</span><span class="p">(</span><span class="s2">&quot;user_data: 
{0}&quot;</span><span class="o">.</span><span class="n">format</span><span 
class="p">(</span><span class="n">me</span><span class="p">))</span>
+            <span class="n">logging</span><span class="o">.</span><span 
class="n">debug</span><span class="p">(</span><span class="s2">&quot;user_data: 
</span><span class="si">{0}</span><span class="s2">&quot;</span><span 
class="o">.</span><span class="n">format</span><span class="p">(</span><span 
class="n">me</span><span class="p">))</span>
             <span class="k">return</span> <span class="p">{</span> <span 
class="s1">&#39;name&#39;</span> <span class="p">:</span> <span 
class="n">me</span><span class="p">[</span><span 
class="s1">&#39;name&#39;</span><span class="p">],</span> <span 
class="s1">&#39;email&#39;</span> <span class="p">:</span> <span 
class="n">me</span><span class="p">[</span><span 
class="s1">&#39;email&#39;</span><span class="p">],</span> <span 
class="s1">&#39;id&#39;</span> <span class="p">:</span> <span c [...]
     <span class="o">...</span>
 </pre></div>
@@ -1316,8 +1232,9 @@ located in <code class="docutils literal 
notranslate"><span class="pre">install/
 <p>Because of a wide variety of users, Superset has some features that are not 
enabled by default. For example, some users have stronger security 
restrictions, while some others may not. So Superset allow users to enable or 
disable some features by config. For feature owners, you can add optional 
functionalities in Superset, but will be only affected by a subset of users.</p>
 <p>You can enable or disable features with flag from <code class="docutils 
literal notranslate"><span class="pre">superset_config.py</span></code>:</p>
 <div class="highlight-python notranslate"><div 
class="highlight"><pre><span></span><span 
class="n">DEFAULT_FEATURE_FLAGS</span> <span class="o">=</span> <span 
class="p">{</span>
-    <span class="s1">&#39;CLIENT_CACHE&#39;</span><span class="p">:</span> 
<span class="bp">False</span><span class="p">,</span>
-    <span class="s1">&#39;ENABLE_EXPLORE_JSON_CSRF_PROTECTION&#39;</span><span 
class="p">:</span> <span class="bp">False</span>
+    <span class="s1">&#39;CLIENT_CACHE&#39;</span><span class="p">:</span> 
<span class="kc">False</span><span class="p">,</span>
+    <span class="s1">&#39;ENABLE_EXPLORE_JSON_CSRF_PROTECTION&#39;</span><span 
class="p">:</span> <span class="kc">False</span><span class="p">,</span>
+    <span class="s1">&#39;PRESTO_EXPAND_DATA&#39;</span><span 
class="p">:</span> <span class="kc">False</span><span class="p">,</span>
 <span class="p">}</span>
 </pre></div>
 </div>
@@ -1329,6 +1246,11 @@ located in <code class="docutils literal 
notranslate"><span class="pre">install/
 <li><p>When ENABLE_EXPLORE_JSON_CSRF_PROTECTION is set to true, your users 
cannot make GET request to explore_json. The default value for this feature 
False (current behavior), explore_json accepts both GET and POST request. See 
<a class="reference external" 
href="https://github.com/apache/incubator-superset/pull/7935";>PR 7935</a> for 
more details.</p></li>
 </ul>
 </li>
+<li><p>PRESTO_EXPAND_DATA</p>
+<ul>
+<li><p>When this feature is enabled, nested types in Presto will be expanded 
into extra columns and/or arrays. This is experimental, and doesn’t work with 
all nested types.</p></li>
+</ul>
+</li>
 </ul>
 </div>
 </div>
diff --git a/objects.inv b/objects.inv
index 55df316..1eaca94 100644
Binary files a/objects.inv and b/objects.inv differ
diff --git a/searchindex.js b/searchindex.js
index c8a2caa..a9b2ec1 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["druid","faq","gallery","import_export_datasources","index","installation","misc","security","sqllab","tutorial","videos","visualization"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["druid.rst","faq.rst","gallery.rst","impo
 [...]
\ No newline at end of file
+Search.setIndex({docnames:["druid","faq","gallery","import_export_datasources","index","installation","misc","security","sqllab","tutorial","videos","visualization"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["druid.rst","faq.rst","gallery.rst","impo
 [...]
\ No newline at end of file
diff --git a/security.html b/security.html
index 71189c8..07ef12a 100644
--- a/security.html
+++ b/security.html
@@ -96,7 +96,6 @@
 <li class="toctree-l2"><a class="reference internal" 
href="#customizing">Customizing</a><ul>
 <li class="toctree-l3"><a class="reference internal" 
href="#permissions">Permissions</a></li>
 <li class="toctree-l3"><a class="reference internal" 
href="#restricting-access-to-a-subset-of-data-sources">Restricting access to a 
subset of data sources</a></li>
-<li class="toctree-l3"><a class="reference internal" 
href="#restricting-the-access-to-some-metrics">Restricting the access to some 
metrics</a></li>
 </ul>
 </li>
 </ul>
@@ -290,26 +289,6 @@ When looking at its dashboard list, this user will only 
see the
 list of dashboards it has access to, based on the roles and
 permissions that were attributed.</p>
 </div>
-<div class="section" id="restricting-the-access-to-some-metrics">
-<h3>Restricting the access to some metrics<a class="headerlink" 
href="#restricting-the-access-to-some-metrics" title="Permalink to this 
headline">¶</a></h3>
-<p>Sometimes some metrics are relatively sensitive (e.g. revenue).
-We may want to restrict those metrics to only a few roles.
-For example, assumed there is a metric <code class="docutils literal 
notranslate"><span class="pre">[cluster1].[datasource1].[revenue]</span></code>
-and only Admin users are allowed to see it. Here’s how to restrict the 
access.</p>
-<ol class="arabic simple">
-<li><p>Edit the datasource (<code class="docutils literal notranslate"><span 
class="pre">Menu</span> <span class="pre">-&gt;</span> <span 
class="pre">Source</span> <span class="pre">-&gt;</span> <span 
class="pre">Druid</span> <span class="pre">datasources</span> <span 
class="pre">-&gt;</span> <span class="pre">edit</span> <span 
class="pre">the</span>
-<span class="pre">record</span> <span 
class="pre">&quot;datasource1&quot;</span></code>) and go to the tab <code 
class="docutils literal notranslate"><span class="pre">List</span> <span 
class="pre">Druid</span> <span class="pre">Metric</span></code>. Check
-the checkbox <code class="docutils literal notranslate"><span 
class="pre">Is</span> <span class="pre">Restricted</span></code> in the row of 
the metric <code class="docutils literal notranslate"><span 
class="pre">revenue</span></code>.</p></li>
-<li><p>Edit the role (<code class="docutils literal notranslate"><span 
class="pre">Menu</span> <span class="pre">-&gt;</span> <span 
class="pre">Security</span> <span class="pre">-&gt;</span> <span 
class="pre">List</span> <span class="pre">Roles</span> <span 
class="pre">-&gt;</span> <span class="pre">edit</span> <span 
class="pre">the</span> <span class="pre">record</span>
-<span class="pre">“Admin”</span></code>), in the permissions field, 
type-and-search the permission
-<code class="docutils literal notranslate"><span class="pre">metric</span> 
<span class="pre">access</span> <span class="pre">on</span> <span 
class="pre">[cluster1].[datasource1].[revenue]</span> <span 
class="pre">(id:</span> <span class="pre">1)</span></code>, then
-click the Save button on the bottom of the page.</p></li>
-</ol>
-<p>Any users without the permission will see the error message
-<em>Access to the metrics denied: revenue (Status: 500)</em> in the slices.
-It also happens when the user wants to access a post-aggregation metric that
-is dependent on revenue.</p>
-</div>
 </div>
 </div>
 
diff --git a/sqllab.html b/sqllab.html
index 1fe9e9f..3023591 100644
--- a/sqllab.html
+++ b/sqllab.html
@@ -90,6 +90,8 @@
 <li class="toctree-l2"><a class="reference internal" 
href="#templating-with-jinja">Templating with Jinja</a><ul>
 <li class="toctree-l3"><a class="reference internal" 
href="#available-macros">Available macros</a></li>
 <li class="toctree-l3"><a class="reference internal" 
href="#extending-macros">Extending macros</a></li>
+<li class="toctree-l3"><a class="reference internal" 
href="#query-cost-estimation">Query cost estimation</a></li>
+<li class="toctree-l3"><a class="reference internal" 
href="#create-table-as-ctas">Create Table As (CTAS)</a></li>
 </ul>
 </li>
 </ul>
@@ -217,198 +219,6 @@ Superset’s Jinja context:</p>
 <li><p><code class="docutils literal notranslate"><span 
class="pre">relativedelta</span></code>: <code class="docutils literal 
notranslate"><span 
class="pre">dateutil.relativedelta.relativedelta</span></code></p></li>
 </ul>
 <p><a class="reference external" 
href="http://jinja.pocoo.org/docs/dev/templates/";>Jinja’s builtin filters</a> 
can be also be applied where needed.</p>
-<dl class="function">
-<dt id="superset.jinja_context.current_user_id">
-<code class="sig-prename descclassname">superset.jinja_context.</code><code 
class="sig-name descname">current_user_id</code><span 
class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference 
internal" href="_modules/superset/jinja_context.html#current_user_id"><span 
class="viewcode-link">[source]</span></a><a class="headerlink" 
href="#superset.jinja_context.current_user_id" title="Permalink to this 
definition">¶</a></dt>
-<dd><p>The id of the user who is currently logged in</p>
-<dl class="field-list simple">
-<dt class="field-odd">Return type</dt>
-<dd class="field-odd"><p><code class="xref py py-data docutils literal 
notranslate"><span class="pre">Optional</span></code>[<code class="xref py 
py-class docutils literal notranslate"><span class="pre">int</span></code>]</p>
-</dd>
-</dl>
-</dd></dl>
-
-<dl class="function">
-<dt id="superset.jinja_context.current_username">
-<code class="sig-prename descclassname">superset.jinja_context.</code><code 
class="sig-name descname">current_username</code><span 
class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference 
internal" href="_modules/superset/jinja_context.html#current_username"><span 
class="viewcode-link">[source]</span></a><a class="headerlink" 
href="#superset.jinja_context.current_username" title="Permalink to this 
definition">¶</a></dt>
-<dd><p>The username of the user who is currently logged in</p>
-<dl class="field-list simple">
-<dt class="field-odd">Return type</dt>
-<dd class="field-odd"><p><code class="xref py py-data docutils literal 
notranslate"><span class="pre">Optional</span></code>[<code class="xref py 
py-class docutils literal notranslate"><span class="pre">str</span></code>]</p>
-</dd>
-</dl>
-</dd></dl>
-
-<dl class="function">
-<dt id="superset.jinja_context.url_param">
-<code class="sig-prename descclassname">superset.jinja_context.</code><code 
class="sig-name descname">url_param</code><span class="sig-paren">(</span><em 
class="sig-param">param</em>, <em class="sig-param">default=None</em><span 
class="sig-paren">)</span><a class="reference internal" 
href="_modules/superset/jinja_context.html#url_param"><span 
class="viewcode-link">[source]</span></a><a class="headerlink" 
href="#superset.jinja_context.url_param" title="Permalink to this 
definition">¶</a></dt>
-<dd><p>Read a url or post parameter and use it in your SQL Lab query</p>
-<p>When in SQL Lab, it’s possible to add arbitrary URL “query string”
-parameters, and use those in your SQL code. For instance you can
-alter your url and add <cite>?foo=bar</cite>, as in
-<cite>{domain}/superset/sqllab?foo=bar</cite>. Then if your query is something 
like
-SELECT * FROM foo = ‘{{ url_param(‘foo’) }}’, it will be parsed at
-runtime and replaced by the value in the URL.</p>
-<p>As you create a visualization form this SQL Lab query, you can pass
-parameters in the explore view as well as from the dashboard, and
-it should carry through to your queries.</p>
-<dl class="field-list simple">
-<dt class="field-odd">Parameters</dt>
-<dd class="field-odd"><ul class="simple">
-<li><p><strong>param</strong> (<code class="xref py py-class docutils literal 
notranslate"><span class="pre">str</span></code>) – the parameter to 
lookup</p></li>
-<li><p><strong>default</strong> (<code class="xref py py-data docutils literal 
notranslate"><span class="pre">Optional</span></code>[<code class="xref py 
py-class docutils literal notranslate"><span class="pre">str</span></code>]) – 
the value to return in the absence of the parameter</p></li>
-</ul>
-</dd>
-<dt class="field-even">Return type</dt>
-<dd class="field-even"><p><code class="xref py py-data docutils literal 
notranslate"><span class="pre">Optional</span></code>[<code class="xref py 
py-data docutils literal notranslate"><span class="pre">Any</span></code>]</p>
-</dd>
-</dl>
-</dd></dl>
-
-<dl class="function">
-<dt id="superset.jinja_context.filter_values">
-<code class="sig-prename descclassname">superset.jinja_context.</code><code 
class="sig-name descname">filter_values</code><span 
class="sig-paren">(</span><em class="sig-param">column</em>, <em 
class="sig-param">default=None</em><span class="sig-paren">)</span><a 
class="reference internal" 
href="_modules/superset/jinja_context.html#filter_values"><span 
class="viewcode-link">[source]</span></a><a class="headerlink" 
href="#superset.jinja_context.filter_values" title="Permalink to this defin 
[...]
-<dd><p>Gets a values for a particular filter as a list</p>
-<dl class="simple">
-<dt>This is useful if:</dt><dd><ul class="simple">
-<li><p>you want to use a filter box to filter a query where the name of filter 
box
-column doesn’t match the one in the select statement</p></li>
-<li><p>you want to have the ability for filter inside the main query for speed
-purposes</p></li>
-</ul>
-</dd>
-</dl>
-<p>This searches for “filters” and “extra_filters” in <code class="docutils 
literal notranslate"><span class="pre">form_data</span></code> for a match</p>
-<p>Usage example:</p>
-<div class="highlight-default notranslate"><div 
class="highlight"><pre><span></span><span class="n">SELECT</span> <span 
class="n">action</span><span class="p">,</span> <span 
class="n">count</span><span class="p">(</span><span class="o">*</span><span 
class="p">)</span> <span class="k">as</span> <span class="n">times</span>
-<span class="n">FROM</span> <span class="n">logs</span>
-<span class="n">WHERE</span> <span class="n">action</span> <span 
class="ow">in</span> <span class="p">(</span> <span class="p">{{</span> <span 
class="s2">&quot;&#39;&quot;</span> <span class="o">+</span> <span 
class="s2">&quot;&#39;,&#39;&quot;</span><span class="o">.</span><span 
class="n">join</span><span class="p">(</span><span 
class="n">filter_values</span><span class="p">(</span><span 
class="s1">&#39;action_type&#39;</span><span class="p">))</span> <span 
class="o">+</span> <span clas [...]
-<span class="n">GROUP</span> <span class="n">BY</span> <span 
class="n">action</span>
-</pre></div>
-</div>
-<dl class="field-list simple">
-<dt class="field-odd">Parameters</dt>
-<dd class="field-odd"><ul class="simple">
-<li><p><strong>column</strong> (<code class="xref py py-class docutils literal 
notranslate"><span class="pre">str</span></code>) – column/filter name to 
lookup</p></li>
-<li><p><strong>default</strong> (<code class="xref py py-data docutils literal 
notranslate"><span class="pre">Optional</span></code>[<code class="xref py 
py-class docutils literal notranslate"><span class="pre">str</span></code>]) – 
default value to return if there’s no matching columns</p></li>
-</ul>
-</dd>
-<dt class="field-even">Return type</dt>
-<dd class="field-even"><p><code class="xref py py-class docutils literal 
notranslate"><span class="pre">List</span></code>[<code class="xref py py-class 
docutils literal notranslate"><span class="pre">str</span></code>]</p>
-</dd>
-<dt class="field-odd">Returns</dt>
-<dd class="field-odd"><p>returns a list of filter values</p>
-</dd>
-</dl>
-</dd></dl>
-
-<dl class="function">
-<dt id="superset.jinja_context.CacheKeyWrapper.cache_key_wrapper">
-<code class="sig-prename 
descclassname">superset.jinja_context.CacheKeyWrapper.</code><code 
class="sig-name descname">cache_key_wrapper</code><span 
class="sig-paren">(</span><em class="sig-param">self</em>, <em 
class="sig-param">key</em><span class="sig-paren">)</span><a class="headerlink" 
href="#superset.jinja_context.CacheKeyWrapper.cache_key_wrapper" 
title="Permalink to this definition">¶</a></dt>
-<dd><p>Adds values to a list that is added to the query object used for 
calculating
-a cache key.</p>
-<dl class="simple">
-<dt>This is needed if the following applies:</dt><dd><ul class="simple">
-<li><p>Caching is enabled</p></li>
-<li><p>The query is dynamically generated using a jinja template</p></li>
-<li><p>A username or similar is used as a filter in the query</p></li>
-</ul>
-</dd>
-</dl>
-<p>Example when using a SQL query as a data source</p>
-<div class="highlight-default notranslate"><div 
class="highlight"><pre><span></span><span class="n">SELECT</span> <span 
class="n">action</span><span class="p">,</span> <span 
class="n">count</span><span class="p">(</span><span class="o">*</span><span 
class="p">)</span> <span class="k">as</span> <span class="n">times</span>
-<span class="n">FROM</span> <span class="n">logs</span>
-<span class="n">WHERE</span> <span class="n">logged_in_user</span> <span 
class="o">=</span> <span class="s1">&#39;{{ 
cache_key_wrapper(current_username()) }}&#39;</span>
-<span class="n">GROUP</span> <span class="n">BY</span> <span 
class="n">action</span>
-</pre></div>
-</div>
-<p>This will ensure that the query results that were cached by 
<cite>user_1</cite> will
-<strong>not</strong> be seen by <cite>user_2</cite>, as the 
<cite>cache_key</cite> for the query will be
-different. <code class="docutils literal notranslate"><span 
class="pre">cache_key_wrapper</span></code> can be used similarly for regular 
table data
-sources by adding a <cite>Custom SQL</cite> filter.</p>
-<dl class="field-list simple">
-<dt class="field-odd">Parameters</dt>
-<dd class="field-odd"><p><strong>key</strong> (<code class="xref py py-data 
docutils literal notranslate"><span class="pre">Any</span></code>) – Any value 
that should be considered when calculating the cache key</p>
-</dd>
-<dt class="field-even">Return type</dt>
-<dd class="field-even"><p><code class="xref py py-data docutils literal 
notranslate"><span class="pre">Any</span></code></p>
-</dd>
-<dt class="field-odd">Returns</dt>
-<dd class="field-odd"><p>the original value <code class="docutils literal 
notranslate"><span class="pre">key</span></code> passed to the function</p>
-</dd>
-</dl>
-</dd></dl>
-
-<dl class="class">
-<dt id="superset.jinja_context.PrestoTemplateProcessor">
-<em class="property">class </em><code class="sig-prename 
descclassname">superset.jinja_context.</code><code class="sig-name 
descname">PrestoTemplateProcessor</code><span class="sig-paren">(</span><em 
class="sig-param">database=None</em>, <em class="sig-param">query=None</em>, 
<em class="sig-param">table=None</em>, <em 
class="sig-param">extra_cache_keys=None</em>, <em 
class="sig-param">**kwargs</em><span class="sig-paren">)</span><a 
class="reference internal" href="_modules/superset/jinja [...]
-<dd><p>Presto Jinja context</p>
-<p>The methods described here are namespaced under <code class="docutils 
literal notranslate"><span class="pre">presto</span></code> in the
-jinja context as in <code class="docutils literal notranslate"><span 
class="pre">SELECT</span> <span class="pre">'{{</span> <span 
class="pre">presto.some_macro_call()</span> <span 
class="pre">}}'</span></code></p>
-<dl class="method">
-<dt id="superset.jinja_context.PrestoTemplateProcessor.first_latest_partition">
-<code class="sig-name descname">first_latest_partition</code><span 
class="sig-paren">(</span><em class="sig-param">table_name</em><span 
class="sig-paren">)</span><a class="reference internal" 
href="_modules/superset/jinja_context.html#PrestoTemplateProcessor.first_latest_partition"><span
 class="viewcode-link">[source]</span></a><a class="headerlink" 
href="#superset.jinja_context.PrestoTemplateProcessor.first_latest_partition" 
title="Permalink to this definition">¶</a></dt>
-<dd><p>Gets the first value in the array of all latest partitions</p>
-<dl class="field-list simple">
-<dt class="field-odd">Parameters</dt>
-<dd class="field-odd"><p><strong>table_name</strong> (<code class="xref py 
py-class docutils literal notranslate"><span class="pre">str</span></code>) – 
table name in the format <cite>schema.table</cite></p>
-</dd>
-<dt class="field-even">Return type</dt>
-<dd class="field-even"><p><code class="xref py py-class docutils literal 
notranslate"><span class="pre">str</span></code></p>
-</dd>
-<dt class="field-odd">Returns</dt>
-<dd class="field-odd"><p>the first (or only) value in the latest partition 
array</p>
-</dd>
-<dt class="field-even">Raises</dt>
-<dd class="field-even"><p><strong>IndexError</strong> – If no partition 
exists</p>
-</dd>
-</dl>
-</dd></dl>
-
-<dl class="method">
-<dt id="superset.jinja_context.PrestoTemplateProcessor.latest_partition">
-<code class="sig-name descname">latest_partition</code><span 
class="sig-paren">(</span><em class="sig-param">table_name</em><span 
class="sig-paren">)</span><a class="headerlink" 
href="#superset.jinja_context.PrestoTemplateProcessor.latest_partition" 
title="Permalink to this definition">¶</a></dt>
-<dd><p>Gets the first value in the array of all latest partitions</p>
-<dl class="field-list simple">
-<dt class="field-odd">Parameters</dt>
-<dd class="field-odd"><p><strong>table_name</strong> (<code class="xref py 
py-class docutils literal notranslate"><span class="pre">str</span></code>) – 
table name in the format <cite>schema.table</cite></p>
-</dd>
-<dt class="field-even">Return type</dt>
-<dd class="field-even"><p><code class="xref py py-class docutils literal 
notranslate"><span class="pre">str</span></code></p>
-</dd>
-<dt class="field-odd">Returns</dt>
-<dd class="field-odd"><p>the first (or only) value in the latest partition 
array</p>
-</dd>
-<dt class="field-even">Raises</dt>
-<dd class="field-even"><p><strong>IndexError</strong> – If no partition 
exists</p>
-</dd>
-</dl>
-</dd></dl>
-
-<dl class="method">
-<dt id="superset.jinja_context.PrestoTemplateProcessor.latest_partitions">
-<code class="sig-name descname">latest_partitions</code><span 
class="sig-paren">(</span><em class="sig-param">table_name</em><span 
class="sig-paren">)</span><a class="reference internal" 
href="_modules/superset/jinja_context.html#PrestoTemplateProcessor.latest_partitions"><span
 class="viewcode-link">[source]</span></a><a class="headerlink" 
href="#superset.jinja_context.PrestoTemplateProcessor.latest_partitions" 
title="Permalink to this definition">¶</a></dt>
-<dd><p>Gets the array of all latest partitions</p>
-<dl class="field-list simple">
-<dt class="field-odd">Parameters</dt>
-<dd class="field-odd"><p><strong>table_name</strong> (<code class="xref py 
py-class docutils literal notranslate"><span class="pre">str</span></code>) – 
table name in the format <cite>schema.table</cite></p>
-</dd>
-<dt class="field-even">Return type</dt>
-<dd class="field-even"><p><code class="xref py py-class docutils literal 
notranslate"><span class="pre">List</span></code>[<code class="xref py py-class 
docutils literal notranslate"><span class="pre">str</span></code>]</p>
-</dd>
-<dt class="field-odd">Returns</dt>
-<dd class="field-odd"><p>the latest partition array</p>
-</dd>
-</dl>
-</dd></dl>
-
-</dd></dl>
-
-<dl class="class">
-<dt id="superset.jinja_context.HiveTemplateProcessor">
-<em class="property">class </em><code class="sig-prename 
descclassname">superset.jinja_context.</code><code class="sig-name 
descname">HiveTemplateProcessor</code><span class="sig-paren">(</span><em 
class="sig-param">database=None</em>, <em class="sig-param">query=None</em>, 
<em class="sig-param">table=None</em>, <em 
class="sig-param">extra_cache_keys=None</em>, <em 
class="sig-param">**kwargs</em><span class="sig-paren">)</span><a 
class="reference internal" href="_modules/superset/jinja_c [...]
-<dd></dd></dl>
-
 </div>
 <div class="section" id="extending-macros">
 <h3>Extending macros<a class="headerlink" href="#extending-macros" 
title="Permalink to this headline">¶</a></h3>
@@ -418,6 +228,36 @@ environment using the configuration variable <code 
class="docutils literal notra
 All objects referenced in this dictionary will become available for users
 to integrate in their queries in <strong>SQL Lab</strong>.</p>
 </div>
+<div class="section" id="query-cost-estimation">
+<h3>Query cost estimation<a class="headerlink" href="#query-cost-estimation" 
title="Permalink to this headline">¶</a></h3>
+<p>Some databases support <code class="docutils literal notranslate"><span 
class="pre">EXPLAIN</span></code> queries that allow users to estimate the cost
+of queries before executing this. Currently, Presto is supported in SQL Lab. To
+enable query cost estimation, add the following keys to the “Extra” field in 
the
+database configuration:</p>
+<div class="highlight-json notranslate"><div 
class="highlight"><pre><span></span>{
+    &quot;version&quot;: &quot;0.319&quot;,
+    &quot;cost_estimate_enabled&quot;: true,
+    ...
+}
+</pre></div>
+</div>
+<p>Here, “version” should be the version of your Presto cluster. Support for 
this
+functionality was introduced in Presto 0.319.</p>
+</div>
+<div class="section" id="create-table-as-ctas">
+<span id="ref-ctas-engine-config"></span><h3>Create Table As (CTAS)<a 
class="headerlink" href="#create-table-as-ctas" title="Permalink to this 
headline">¶</a></h3>
+<p>You can use <code class="docutils literal notranslate"><span 
class="pre">CREATE</span> <span class="pre">TABLE</span> <span 
class="pre">AS</span> <span class="pre">SELECT</span> <span 
class="pre">...</span></code> statements on SQLLab. This feature can be toggled 
on
+and off at the database configuration level.</p>
+<p>Note that since <code class="docutils literal notranslate"><span 
class="pre">CREATE</span> <span class="pre">TABLE..</span></code> belongs to a 
SQL DDL category. Specifically on PostgreSQL, DDL is transactional,
+this means that to properly use this feature you have to set <code 
class="docutils literal notranslate"><span class="pre">autocommit</span></code> 
to true on your engine parameters:</p>
+<div class="highlight-json notranslate"><div 
class="highlight"><pre><span></span>{
+    ...
+    &quot;engine_params&quot;: 
{&quot;isolation_level&quot;:&quot;AUTOCOMMIT&quot;},
+    ...
+}
+</pre></div>
+</div>
+</div>
 </div>
 </div>
 

Reply via email to