You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by ji...@apache.org on 2020/04/16 00:03:19 UTC

[druid-website-src] branch master updated: Doc changes in https://github.com/apache/druid/pull/9709

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

jihoonson pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid-website-src.git


The following commit(s) were added to refs/heads/master by this push:
     new cb088ff  Doc changes in https://github.com/apache/druid/pull/9709
     new a3aa9c5  Merge pull request #122 from jihoonson/query-doc-0.18.0
cb088ff is described below

commit cb088ff1f590c6c110003e634a927ea9086f452d
Author: Jihoon Son <ji...@apache.org>
AuthorDate: Wed Apr 15 16:44:37 2020 -0700

    Doc changes in https://github.com/apache/druid/pull/9709
---
 docs/0.18.0/SearchQuerySpec.html                   |   8 +-
 .../0.18.0/comparisons/druid-vs-elasticsearch.html |   2 +-
 docs/0.18.0/comparisons/druid-vs-key-value.html    |   2 +-
 docs/0.18.0/comparisons/druid-vs-kudu.html         |   2 +-
 docs/0.18.0/comparisons/druid-vs-redshift.html     |   2 +-
 docs/0.18.0/comparisons/druid-vs-spark.html        |   2 +-
 .../0.18.0/comparisons/druid-vs-sql-on-hadoop.html |   2 +-
 docs/0.18.0/configuration/index.html               |  23 +-
 docs/0.18.0/configuration/logging.html             |   2 +-
 docs/0.18.0/dependencies/deep-storage.html         |   2 +-
 docs/0.18.0/dependencies/metadata-storage.html     |   2 +-
 docs/0.18.0/dependencies/zookeeper.html            |   2 +-
 docs/0.18.0/design/architecture.html               |   4 +-
 docs/0.18.0/design/auth.html                       |   2 +-
 docs/0.18.0/design/broker.html                     |   2 +-
 docs/0.18.0/design/coordinator.html                |   2 +-
 docs/0.18.0/design/historical.html                 |   2 +-
 docs/0.18.0/design/index.html                      |   2 +-
 docs/0.18.0/design/indexer.html                    |   2 +-
 docs/0.18.0/design/indexing-service.html           |   2 +-
 docs/0.18.0/design/middlemanager.html              |   2 +-
 docs/0.18.0/design/overlord.html                   |   2 +-
 docs/0.18.0/design/peons.html                      |   2 +-
 docs/0.18.0/design/processes.html                  |   2 +-
 docs/0.18.0/design/router.html                     |   2 +-
 docs/0.18.0/design/segments.html                   |   2 +-
 docs/0.18.0/development/build.html                 |   2 +-
 docs/0.18.0/development/experimental.html          |   4 +-
 .../extensions-contrib/ambari-metrics-emitter.html |   2 +-
 .../development/extensions-contrib/cassandra.html  |   2 +-
 .../development/extensions-contrib/cloudfiles.html |   2 +-
 .../extensions-contrib/distinctcount.html          |   2 +-
 .../development/extensions-contrib/graphite.html   |   4 +-
 .../development/extensions-contrib/influx.html     |   4 +-
 .../extensions-contrib/influxdb-emitter.html       |   2 +-
 .../extensions-contrib/kafka-emitter.html          |   2 +-
 .../extensions-contrib/materialized-view.html      |   2 +-
 .../extensions-contrib/momentsketch-quantiles.html |   2 +-
 .../extensions-contrib/moving-average-query.html   |   2 +-
 .../extensions-contrib/opentsdb-emitter.html       |   2 +-
 .../extensions-contrib/redis-cache.html            |   2 +-
 .../development/extensions-contrib/sqlserver.html  |   2 +-
 .../development/extensions-contrib/statsd.html     |   2 +-
 .../tdigestsketch-quantiles.html                   |   2 +-
 .../development/extensions-contrib/thrift.html     |   2 +-
 .../extensions-contrib/time-min-max.html           |   2 +-
 .../extensions-core/approximate-histograms.html    |   2 +-
 docs/0.18.0/development/extensions-core/avro.html  |   2 +-
 docs/0.18.0/development/extensions-core/azure.html |   2 +-
 .../development/extensions-core/bloom-filter.html  |   2 +-
 .../extensions-core/datasketches-extension.html    |   2 +-
 .../extensions-core/datasketches-hll.html          |   2 +-
 .../extensions-core/datasketches-quantiles.html    |   2 +-
 .../extensions-core/datasketches-theta.html        |   2 +-
 .../extensions-core/datasketches-tuple.html        |   2 +-
 .../extensions-core/druid-basic-security.html      |   2 +-
 .../extensions-core/druid-kerberos.html            |   2 +-
 .../development/extensions-core/druid-lookups.html |   2 +-
 .../0.18.0/development/extensions-core/google.html |   2 +-
 docs/0.18.0/development/extensions-core/hdfs.html  |   2 +-
 .../kafka-extraction-namespace.html                |   2 +-
 .../extensions-core/kafka-ingestion.html           |   2 +-
 .../extensions-core/kinesis-ingestion.html         |   2 +-
 .../extensions-core/lookups-cached-global.html     |   2 +-
 docs/0.18.0/development/extensions-core/mysql.html |   2 +-
 docs/0.18.0/development/extensions-core/orc.html   |   2 +-
 .../development/extensions-core/parquet.html       |   2 +-
 .../development/extensions-core/postgresql.html    |   2 +-
 .../development/extensions-core/protobuf.html      |   2 +-
 docs/0.18.0/development/extensions-core/s3.html    |   2 +-
 .../extensions-core/simple-client-sslcontext.html  |   2 +-
 docs/0.18.0/development/extensions-core/stats.html |   2 +-
 .../development/extensions-core/test-stats.html    |   2 +-
 docs/0.18.0/development/extensions.html            |   2 +-
 docs/0.18.0/development/geo.html                   |   8 +-
 docs/0.18.0/development/javascript.html            |   2 +-
 docs/0.18.0/development/modules.html               |   2 +-
 docs/0.18.0/development/overview.html              |   2 +-
 docs/0.18.0/development/versioning.html            |   2 +-
 docs/0.18.0/ingestion/data-formats.html            |   2 +-
 docs/0.18.0/ingestion/data-management.html         |   2 +-
 docs/0.18.0/ingestion/faq.html                     |   2 +-
 docs/0.18.0/ingestion/hadoop.html                  |   2 +-
 docs/0.18.0/ingestion/index.html                   |   2 +-
 docs/0.18.0/ingestion/native-batch.html            |   2 +-
 docs/0.18.0/ingestion/schema-design.html           |   2 +-
 docs/0.18.0/ingestion/standalone-realtime.html     |   2 +-
 docs/0.18.0/ingestion/tasks.html                   |   2 +-
 docs/0.18.0/ingestion/tranquility.html             |   2 +-
 docs/0.18.0/misc/math-expr.html                    |  13 +-
 docs/0.18.0/misc/papers-and-talks.html             |   4 +-
 docs/0.18.0/operations/alerts.html                 |   2 +-
 docs/0.18.0/operations/api-reference.html          |   2 +-
 docs/0.18.0/operations/basic-cluster-tuning.html   |   2 +-
 docs/0.18.0/operations/deep-storage-migration.html |   2 +-
 docs/0.18.0/operations/druid-console.html          |   2 +-
 docs/0.18.0/operations/dump-segment.html           |   2 +-
 docs/0.18.0/operations/export-metadata.html        |   2 +-
 docs/0.18.0/operations/getting-started.html        |   2 +-
 docs/0.18.0/operations/high-availability.html      |   2 +-
 docs/0.18.0/operations/http-compression.html       |   2 +-
 docs/0.18.0/operations/insert-segment-to-db.html   |   2 +-
 docs/0.18.0/operations/management-uis.html         |   2 +-
 docs/0.18.0/operations/metadata-migration.html     |   2 +-
 docs/0.18.0/operations/metrics.html                |   4 +-
 docs/0.18.0/operations/other-hadoop.html           |   2 +-
 docs/0.18.0/operations/password-provider.html      |   2 +-
 docs/0.18.0/operations/pull-deps.html              |   2 +-
 docs/0.18.0/operations/reset-cluster.html          |   2 +-
 docs/0.18.0/operations/rolling-updates.html        |   2 +-
 docs/0.18.0/operations/rule-configuration.html     |   2 +-
 docs/0.18.0/operations/segment-optimization.html   |   2 +-
 docs/0.18.0/operations/single-server.html          |   2 +-
 docs/0.18.0/operations/tls-support.html            |   2 +-
 .../operations/use_sbt_to_build_fat_jar.html       |   2 +-
 docs/0.18.0/querying/aggregations.html             |  10 +-
 docs/0.18.0/querying/caching.html                  |   4 +-
 docs/0.18.0/querying/datasource.html               | 176 ++++++--
 docs/0.18.0/querying/datasourcemetadataquery.html  |   9 +-
 docs/0.18.0/querying/dimensionspecs.html           |  16 +-
 docs/0.18.0/querying/filters.html                  |  14 +-
 docs/0.18.0/querying/granularities.html            |  14 +-
 docs/0.18.0/querying/groupbyquery.html             |   8 +-
 docs/0.18.0/querying/having.html                   |  14 +-
 docs/0.18.0/querying/hll-old.html                  |   4 +-
 docs/0.18.0/querying/joins.html                    |  44 +-
 docs/0.18.0/querying/limitspec.html                |  13 +-
 docs/0.18.0/querying/lookups.html                  |  41 +-
 docs/0.18.0/querying/multi-value-dimensions.html   |   4 +-
 docs/0.18.0/querying/multitenancy.html             |   4 +-
 docs/0.18.0/querying/post-aggregations.html        |  14 +-
 docs/0.18.0/querying/query-context.html            |  29 +-
 docs/0.18.0/querying/query-execution.html          | 167 +++++++
 docs/0.18.0/querying/querying.html                 |  21 +-
 docs/0.18.0/querying/scan-query.html               |  10 +-
 docs/0.18.0/querying/searchquery.html              |  42 +-
 docs/0.18.0/querying/searchqueryspec.html          | 138 +-----
 docs/0.18.0/querying/segmentmetadataquery.html     |   8 +-
 docs/0.18.0/querying/select-query.html             |   4 +-
 docs/0.18.0/querying/sorting-orders.html           |  14 +-
 docs/0.18.0/querying/sql.html                      | 491 ++++++++++++---------
 docs/0.18.0/querying/timeboundaryquery.html        |   9 +-
 docs/0.18.0/querying/timeseriesquery.html          |  10 +-
 docs/0.18.0/querying/topnmetricspec.html           |  13 +-
 docs/0.18.0/querying/topnquery.html                |   8 +-
 docs/0.18.0/querying/virtual-columns.html          |  14 +-
 docs/0.18.0/tutorials/cluster.html                 |   2 +-
 docs/0.18.0/tutorials/docker.html                  |   2 +-
 docs/0.18.0/tutorials/index.html                   |   2 +-
 docs/0.18.0/tutorials/tutorial-batch-hadoop.html   |   2 +-
 docs/0.18.0/tutorials/tutorial-batch.html          |   2 +-
 docs/0.18.0/tutorials/tutorial-compaction.html     |   2 +-
 docs/0.18.0/tutorials/tutorial-delete-data.html    |   2 +-
 docs/0.18.0/tutorials/tutorial-ingestion-spec.html |   2 +-
 docs/0.18.0/tutorials/tutorial-kafka.html          |   2 +-
 .../0.18.0/tutorials/tutorial-kerberos-hadoop.html |   2 +-
 docs/0.18.0/tutorials/tutorial-query.html          |   2 +-
 docs/0.18.0/tutorials/tutorial-retention.html      |   2 +-
 docs/0.18.0/tutorials/tutorial-rollup.html         |   2 +-
 docs/0.18.0/tutorials/tutorial-transform-spec.html |   2 +-
 docs/0.18.0/tutorials/tutorial-update-data.html    |   2 +-
 161 files changed, 1057 insertions(+), 626 deletions(-)

diff --git a/docs/0.18.0/SearchQuerySpec.html b/docs/0.18.0/SearchQuerySpec.html
index c28fca2..ee66987 100644
--- a/docs/0.18.0/SearchQuerySpec.html
+++ b/docs/0.18.0/SearchQuerySpec.html
@@ -1,8 +1,8 @@
 <!DOCTYPE html>
 <meta charset="utf-8">
 <title>Redirecting...</title>
-<link rel="canonical" href="querying/searchqueryspec.html">
-<meta http-equiv="refresh" content="0; url=querying/searchqueryspec.html">
+<link rel="canonical" href="querying/searchquery.html">
+<meta http-equiv="refresh" content="0; url=querying/searchquery.html">
 <h1>Redirecting...</h1>
-<a href="querying/searchqueryspec.html">Click here if you are not redirected.</a>
-<script>location="querying/searchqueryspec.html"</script>
+<a href="querying/searchquery.html">Click here if you are not redirected.</a>
+<script>location="querying/searchquery.html"</script>
diff --git a/docs/0.18.0/comparisons/druid-vs-elasticsearch.html b/docs/0.18.0/comparisons/druid-vs-elasticsearch.html
index cd35d2f..25250ee 100644
--- a/docs/0.18.0/comparisons/druid-vs-elasticsearch.html
+++ b/docs/0.18.0/comparisons/druid-vs-elasticsearch.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/comparisons/druid-vs-key-value.html b/docs/0.18.0/comparisons/druid-vs-key-value.html
index 980df4b..634116f 100644
--- a/docs/0.18.0/comparisons/druid-vs-key-value.html
+++ b/docs/0.18.0/comparisons/druid-vs-key-value.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/comparisons/druid-vs-kudu.html b/docs/0.18.0/comparisons/druid-vs-kudu.html
index 14c4397..02db695 100644
--- a/docs/0.18.0/comparisons/druid-vs-kudu.html
+++ b/docs/0.18.0/comparisons/druid-vs-kudu.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/comparisons/druid-vs-redshift.html b/docs/0.18.0/comparisons/druid-vs-redshift.html
index 15040da..63872b7 100644
--- a/docs/0.18.0/comparisons/druid-vs-redshift.html
+++ b/docs/0.18.0/comparisons/druid-vs-redshift.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/comparisons/druid-vs-spark.html b/docs/0.18.0/comparisons/druid-vs-spark.html
index 67d70f0..bd7af90 100644
--- a/docs/0.18.0/comparisons/druid-vs-spark.html
+++ b/docs/0.18.0/comparisons/druid-vs-spark.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/comparisons/druid-vs-sql-on-hadoop.html b/docs/0.18.0/comparisons/druid-vs-sql-on-hadoop.html
index 8d566a2..4e5a741 100644
--- a/docs/0.18.0/comparisons/druid-vs-sql-on-hadoop.html
+++ b/docs/0.18.0/comparisons/druid-vs-sql-on-hadoop.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/configuration/index.html b/docs/0.18.0/configuration/index.html
index 4676fdc..ca4779a 100644
--- a/docs/0.18.0/configuration/index.html
+++ b/docs/0.18.0/configuration/index.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -1462,7 +1462,6 @@ then the value from the configuration below is used:</p>
 <tr><td><code>druid.server.http.unannouncePropagationDelay</code></td><td>How long to wait for zookeeper unannouncements to propagate before shutting down Jetty. This is a minimum and <code>druid.server.http.gracefulShutdownTimeout</code> does not start counting down until after this period elapses.</td><td><code>PT0S</code> (do not wait)</td></tr>
 <tr><td><code>druid.server.http.maxQueryTimeout</code></td><td>Maximum allowed value (in milliseconds) for <code>timeout</code> parameter. See <a href="../querying/query-context.html">query-context</a> to know more about <code>timeout</code>. Query is rejected if the query context <code>timeout</code> is greater than this value.</td><td>Long.MAX_VALUE</td></tr>
 <tr><td><code>druid.server.http.maxRequestHeaderSize</code></td><td>Maximum size of a request header in bytes. Larger headers consume more memory and can make a server more vulnerable to denial of service attacks.</td><td>8 * 1024</td></tr>
-<tr><td><code>druid.server.http.maxSubqueryRows</code></td><td>Maximum number of rows from subqueries per query. These rows are stored in memory.</td><td>100000</td></tr>
 <tr><td><code>druid.server.http.enableForwardedRequestCustomizer</code></td><td>If enabled, adds Jetty ForwardedRequestCustomizer which reads X-Forwarded-* request headers to manipulate servlet request object when Druid is used behind a proxy.</td><td>false</td></tr>
 </tbody>
 </table>
@@ -1716,6 +1715,7 @@ line.</p>
 <tr><td><code>druid.server.http.enableRequestLimit</code></td><td>If enabled, no requests would be queued in jetty queue and &quot;HTTP 429 Too Many Requests&quot; error response would be sent.</td><td>false</td></tr>
 <tr><td><code>druid.server.http.defaultQueryTimeout</code></td><td>Query timeout in millis, beyond which unfinished queries will be cancelled</td><td>300000</td></tr>
 <tr><td><code>druid.server.http.maxScatterGatherBytes</code></td><td>Maximum number of bytes gathered from data processes such as Historicals and realtime processes to execute a query. Queries that exceed this limit will fail. This is an advance configuration that allows to protect in case Broker is under heavy load and not utilizing the data gathered in memory fast enough and leading to OOMs. This limit can be further reduced at query time using <code>maxScatterGatherBytes</code> in the [...]
+<tr><td><code>druid.server.http.maxSubqueryRows</code></td><td>Maximum number of rows from subqueries per query. These rows are stored in memory.</td><td>100000</td></tr>
 <tr><td><code>druid.server.http.gracefulShutdownTimeout</code></td><td>The maximum amount of time Jetty waits after receiving shutdown signal. After this timeout the threads will be forcefully shutdown. This allows any queries that are executing to complete.</td><td><code>PT0S</code> (do not wait)</td></tr>
 <tr><td><code>druid.server.http.unannouncePropagationDelay</code></td><td>How long to wait for zookeeper unannouncements to propagate before shutting down Jetty. This is a minimum and <code>druid.server.http.gracefulShutdownTimeout</code> does not start counting down until after this period elapses.</td><td><code>PT0S</code> (do not wait)</td></tr>
 <tr><td><code>druid.server.http.maxQueryTimeout</code></td><td>Maximum allowed value (in milliseconds) for <code>timeout</code> parameter. See <a href="/docs/0.18.0/querying/query-context.html">query-context</a> to know more about <code>timeout</code>. Query is rejected if the query context <code>timeout</code> is greater than this value.</td><td>Long.MAX_VALUE</td></tr>
@@ -1787,24 +1787,19 @@ line.</p>
 <tbody>
 <tr><td><code>druid.sql.enable</code></td><td>Whether to enable SQL at all, including background metadata fetching. If false, this overrides all other SQL-related properties and disables SQL metadata, serving, and planning completely.</td><td>true</td></tr>
 <tr><td><code>druid.sql.avatica.enable</code></td><td>Whether to enable JDBC querying at <code>/druid/v2/sql/avatica/</code>.</td><td>true</td></tr>
-<tr><td><code>druid.sql.avatica.maxConnections</code></td><td>Maximum number of open connections for the Avatica server. These are not HTTP connections, but are logical client connections that may span multiple HTTP connections.</td><td>50</td></tr>
+<tr><td><code>druid.sql.avatica.maxConnections</code></td><td>Maximum number of open connections for the Avatica server. These are not HTTP connections, but are logical client connections that may span multiple HTTP connections.</td><td>25</td></tr>
 <tr><td><code>druid.sql.avatica.maxRowsPerFrame</code></td><td>Maximum number of rows to return in a single JDBC frame. Setting this property to -1 indicates that no row limit should be applied. Clients can optionally specify a row limit in their requests; if a client specifies a row limit, the lesser value of the client-provided limit and <code>maxRowsPerFrame</code> will be used.</td><td>5,000</td></tr>
-<tr><td><code>druid.sql.avatica.maxStatementsPerConnection</code></td><td>Maximum number of simultaneous open statements per Avatica client connection.</td><td>1</td></tr>
+<tr><td><code>druid.sql.avatica.maxStatementsPerConnection</code></td><td>Maximum number of simultaneous open statements per Avatica client connection.</td><td>4</td></tr>
 <tr><td><code>druid.sql.avatica.connectionIdleTimeout</code></td><td>Avatica client connection idle timeout.</td><td>PT5M</td></tr>
 <tr><td><code>druid.sql.http.enable</code></td><td>Whether to enable JSON over HTTP querying at <code>/druid/v2/sql/</code>.</td><td>true</td></tr>
-<tr><td><code>druid.sql.planner.awaitInitializationOnStart</code></td><td>Boolean</td><td>Whether the Broker will wait for its SQL metadata view to fully initialize before starting up. If set to 'true', the Broker's HTTP server will not start up, and the Broker will not announce itself as available, until the server view is initialized. See also <code>druid.broker.segment.awaitInitializationOnStart</code>, a related setting.</td><td>true</td></tr>
-<tr><td><code>druid.sql.planner.maxQueryCount</code></td><td>Maximum number of queries to issue, including nested queries. Set to 1 to disable sub-queries, or set to 0 for unlimited.</td><td>8</td></tr>
-<tr><td><code>druid.sql.planner.maxSemiJoinRowsInMemory</code></td><td>Maximum number of rows to keep in memory for executing two-stage semi-join queries like <code>SELECT * FROM Employee WHERE DeptName IN (SELECT DeptName FROM Dept)</code>.</td><td>100000</td></tr>
 <tr><td><code>druid.sql.planner.maxTopNLimit</code></td><td>Maximum threshold for a <a href="/docs/0.18.0/querying/topnquery.html">TopN query</a>. Higher limits will be planned as <a href="/docs/0.18.0/querying/groupbyquery.html">GroupBy queries</a> instead.</td><td>100000</td></tr>
 <tr><td><code>druid.sql.planner.metadataRefreshPeriod</code></td><td>Throttle for metadata refreshes.</td><td>PT1M</td></tr>
-<tr><td><code>druid.sql.planner.metadataSegmentCacheEnable</code></td><td>Whether to keep a cache of published segments in broker. If true, broker polls coordinator in background to get segments from metadata store and maintains a local cache. If false, coordinator's REST API will be invoked when broker needs published segments info.</td><td>false</td></tr>
-<tr><td><code>druid.sql.planner.metadataSegmentPollPeriod</code></td><td>How often to poll coordinator for published segments list if <code>druid.sql.planner.metadataSegmentCacheEnable</code> is set to true. Poll period is in milliseconds.</td><td>60000</td></tr>
-<tr><td><code>druid.sql.planner.selectThreshold</code></td><td>Page size threshold for <a href="/docs/0.18.0/querying/select-query.html">Select queries</a>. Select queries for larger resultsets will be issued back-to-back using pagination.</td><td>1000</td></tr>
 <tr><td><code>druid.sql.planner.useApproximateCountDistinct</code></td><td>Whether to use an approximate cardinality algorithm for <code>COUNT(DISTINCT foo)</code>.</td><td>true</td></tr>
-<tr><td><code>druid.sql.planner.useApproximateTopN</code></td><td>Whether to use approximate <a href="/docs/0.18.0/querying/topnquery.html">TopN queries</a> when a SQL query could be expressed as such. If false, exact <a href="/docs/0.18.0/querying/groupbyquery.html">GroupBy queries</a> will be used instead.</td><td>true</td></tr>
+<tr><td><code>druid.sql.planner.useApproximateTopN</code></td><td>Whether to use approximate <a href="../querying/topnquery.html">TopN queries</a> when a SQL query could be expressed as such. If false, exact <a href="../querying/groupbyquery.html">GroupBy queries</a> will be used instead.</td><td>true</td></tr>
 <tr><td><code>druid.sql.planner.requireTimeCondition</code></td><td>Whether to require SQL to have filter conditions on __time column so that all generated native queries will have user specified intervals. If true, all queries without filter condition on __time column will fail</td><td>false</td></tr>
 <tr><td><code>druid.sql.planner.sqlTimeZone</code></td><td>Sets the default time zone for the server, which will affect how time functions and timestamp literals behave. Should be a time zone name like &quot;America/Los_Angeles&quot; or offset like &quot;-08:00&quot;.</td><td>UTC</td></tr>
-<tr><td><code>druid.sql.planner.serializeComplexValues</code></td><td>Whether to serialize &quot;complex&quot; output values, false will return the class name instead of the serialized value.</td><td>true</td></tr>
+<tr><td><code>druid.sql.planner.metadataSegmentCacheEnable</code></td><td>Whether to keep a cache of published segments in broker. If true, broker polls coordinator in background to get segments from metadata store and maintains a local cache. If false, coordinator's REST API will be invoked when broker needs published segments info.</td><td>false</td></tr>
+<tr><td><code>druid.sql.planner.metadataSegmentPollPeriod</code></td><td>How often to poll coordinator for published segments list if <code>druid.sql.planner.metadataSegmentCacheEnable</code> is set to true. Poll period is in milliseconds.</td><td>60000</td></tr>
 </tbody>
 </table>
 <blockquote>
@@ -1955,8 +1950,8 @@ If there is an L1 miss and L2 hit, it will also populate L1.</p>
 <tr><th>Property</th><th>Description</th><th>Default</th></tr>
 </thead>
 <tbody>
-<tr><td><code>druid.query.vectorize</code></td><td>See <a href="../querying/query-context.html#vectorizable-queries">Vectorizable queries</a> for details. This value can be overridden by <code>vectorize</code> in the query contexts.</td><td><code>false</code></td></tr>
-<tr><td><code>druid.query.vectorSize</code></td><td>See <a href="../querying/query-context.html#vectorizable-queries">Vectorizable queries</a> for details. This value can be overridden by <code>vectorSize</code> in the query contexts.</td><td><code>512</code></td></tr>
+<tr><td><code>druid.query.vectorize</code></td><td>See <a href="../querying/query-context.html#vectorization-parameters">Vectorization parameters</a> for details. This value can be overridden by <code>vectorize</code> in the query contexts.</td><td><code>false</code></td></tr>
+<tr><td><code>druid.query.vectorSize</code></td><td>See <a href="../querying/query-context.html#vectorization-parameters">Vectorization parameters</a> for details. This value can be overridden by <code>vectorSize</code> in the query contexts.</td><td><code>512</code></td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="topn-query-config"></a><a href="#topn-query-config" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
diff --git a/docs/0.18.0/configuration/logging.html b/docs/0.18.0/configuration/logging.html
index 88af8c2..16487cd 100644
--- a/docs/0.18.0/configuration/logging.html
+++ b/docs/0.18.0/configuration/logging.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/dependencies/deep-storage.html b/docs/0.18.0/dependencies/deep-storage.html
index ce565e8..4996d0b 100644
--- a/docs/0.18.0/dependencies/deep-storage.html
+++ b/docs/0.18.0/dependencies/deep-storage.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/dependencies/metadata-storage.html b/docs/0.18.0/dependencies/metadata-storage.html
index ab48955..fa223cf 100644
--- a/docs/0.18.0/dependencies/metadata-storage.html
+++ b/docs/0.18.0/dependencies/metadata-storage.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/dependencies/zookeeper.html b/docs/0.18.0/dependencies/zookeeper.html
index fd95190..b339032 100644
--- a/docs/0.18.0/dependencies/zookeeper.html
+++ b/docs/0.18.0/dependencies/zookeeper.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/design/architecture.html b/docs/0.18.0/design/architecture.html
index 12b2ad8..1169b9d 100644
--- a/docs/0.18.0/design/architecture.html
+++ b/docs/0.18.0/design/architecture.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -249,6 +249,8 @@ query. Within those columns, Druid can skip from row to row, avoiding reading da
 <li>Within each segment, using indexes to identify which rows must be accessed.</li>
 <li>Within each segment, only reading the specific rows and columns that are relevant to a particular query.</li>
 </ul>
+<p>For more details about how Druid executes queries, refer to the <a href="/docs/0.18.0/querying/query-execution.html">Query execution</a>
+documentation.</p>
 </span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/tutorials/tutorial-kerberos-hadoop.html"><span class="arrow-prev">← </span><span>Kerberized HDFS deep storage</span></a><a class="docs-next button" href="/docs/0.18.0/design/segments.html"><span>Segments</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#processes-and-servers">Processes and Servers</a></li><li><a h [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
diff --git a/docs/0.18.0/design/auth.html b/docs/0.18.0/design/auth.html
index b10a620..240651c 100644
--- a/docs/0.18.0/design/auth.html
+++ b/docs/0.18.0/design/auth.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/design/broker.html b/docs/0.18.0/design/broker.html
index 42b301b..b10732d 100644
--- a/docs/0.18.0/design/broker.html
+++ b/docs/0.18.0/design/broker.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/design/coordinator.html b/docs/0.18.0/design/coordinator.html
index 7616a50..f485e5d 100644
--- a/docs/0.18.0/design/coordinator.html
+++ b/docs/0.18.0/design/coordinator.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/design/historical.html b/docs/0.18.0/design/historical.html
index d3dcd72..7459553 100644
--- a/docs/0.18.0/design/historical.html
+++ b/docs/0.18.0/design/historical.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/design/index.html b/docs/0.18.0/design/index.html
index dea6996..357621b 100644
--- a/docs/0.18.0/design/index.html
+++ b/docs/0.18.0/design/index.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/design/indexer.html b/docs/0.18.0/design/indexer.html
index 425c595..4ea1c31 100644
--- a/docs/0.18.0/design/indexer.html
+++ b/docs/0.18.0/design/indexer.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/design/indexing-service.html b/docs/0.18.0/design/indexing-service.html
index 6c9fbf2..e279742 100644
--- a/docs/0.18.0/design/indexing-service.html
+++ b/docs/0.18.0/design/indexing-service.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/design/middlemanager.html b/docs/0.18.0/design/middlemanager.html
index dff98f6..1ee0efc 100644
--- a/docs/0.18.0/design/middlemanager.html
+++ b/docs/0.18.0/design/middlemanager.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/design/overlord.html b/docs/0.18.0/design/overlord.html
index a2db1ab..77544ad 100644
--- a/docs/0.18.0/design/overlord.html
+++ b/docs/0.18.0/design/overlord.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/design/peons.html b/docs/0.18.0/design/peons.html
index b2a0d85..2acc5d0 100644
--- a/docs/0.18.0/design/peons.html
+++ b/docs/0.18.0/design/peons.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/design/processes.html b/docs/0.18.0/design/processes.html
index 5219992..0a421b9 100644
--- a/docs/0.18.0/design/processes.html
+++ b/docs/0.18.0/design/processes.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/design/router.html b/docs/0.18.0/design/router.html
index cd0f606..dd21ef8 100644
--- a/docs/0.18.0/design/router.html
+++ b/docs/0.18.0/design/router.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/design/segments.html b/docs/0.18.0/design/segments.html
index cc666e9..b44b1ff 100644
--- a/docs/0.18.0/design/segments.html
+++ b/docs/0.18.0/design/segments.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/build.html b/docs/0.18.0/development/build.html
index 1c62ec6..3674125 100644
--- a/docs/0.18.0/development/build.html
+++ b/docs/0.18.0/development/build.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/experimental.html b/docs/0.18.0/development/experimental.html
index 9e30eb2..beb80ad 100644
--- a/docs/0.18.0/development/experimental.html
+++ b/docs/0.18.0/development/experimental.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -88,7 +88,7 @@ This can mean any of the following things:</p>
 <p>Note that not all of these points apply to every experimental feature. Some have been battle-tested in terms of
 implementation, but are still marked experimental due to an evolving API. Please check the documentation for each
 feature for full details.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/development/versioning.html"><span class="arrow-prev">← </span><span>Versioning</span></a><a class="docs-next button" href="/docs/0.18.0/misc/math-expr.html"><span>Expressions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center"><p><a href="/tec [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/development/versioning.html"><span class="arrow-prev">← </span><span>Versioning</span></a><a class="docs-next button" href="/docs/0.18.0/misc/papers-and-talks.html"><span>Papers</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center"><p><a href="/t [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/development/extensions-contrib/ambari-metrics-emitter.html b/docs/0.18.0/development/extensions-contrib/ambari-metrics-emitter.html
index c0422d4..7f14291 100644
--- a/docs/0.18.0/development/extensions-contrib/ambari-metrics-emitter.html
+++ b/docs/0.18.0/development/extensions-contrib/ambari-metrics-emitter.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-contrib/cassandra.html b/docs/0.18.0/development/extensions-contrib/cassandra.html
index c041bd4..8ba0978 100644
--- a/docs/0.18.0/development/extensions-contrib/cassandra.html
+++ b/docs/0.18.0/development/extensions-contrib/cassandra.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-contrib/cloudfiles.html b/docs/0.18.0/development/extensions-contrib/cloudfiles.html
index 3540c34..46afa66 100644
--- a/docs/0.18.0/development/extensions-contrib/cloudfiles.html
+++ b/docs/0.18.0/development/extensions-contrib/cloudfiles.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-contrib/distinctcount.html b/docs/0.18.0/development/extensions-contrib/distinctcount.html
index 4596826..910d615 100644
--- a/docs/0.18.0/development/extensions-contrib/distinctcount.html
+++ b/docs/0.18.0/development/extensions-contrib/distinctcount.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-contrib/graphite.html b/docs/0.18.0/development/extensions-contrib/graphite.html
index 0dfb909..f592cab 100644
--- a/docs/0.18.0/development/extensions-contrib/graphite.html
+++ b/docs/0.18.0/development/extensions-contrib/graphite.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -148,7 +148,7 @@ druid.emitter.graphite.eventConverter={"type":"whiteList", "namespacePrefix": "d
 
 </code></pre>
 <p><strong>Druid emits a huge number of metrics we highly recommend to use the <code>whiteList</code> converter</strong></p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/development/extensions-contrib/distinctcount.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">DistinctCount Aggregator</span></a><a class="docs-next button" href="/docs/0.18.0/querying/aggregations.html"><span>Aggregations</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#introduction"> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/development/extensions-contrib/distinctcount.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">DistinctCount Aggregator</span></a><a class="docs-next button" href="/docs/0.18.0/querying/hll-old.html"><span class="function-name-prevnext">Cardinality/HyperUnique aggregators</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul  [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/development/extensions-contrib/influx.html b/docs/0.18.0/development/extensions-contrib/influx.html
index 7553d08..8354891 100644
--- a/docs/0.18.0/development/extensions-contrib/influx.html
+++ b/docs/0.18.0/development/extensions-contrib/influx.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -110,7 +110,7 @@
       }
 </code></pre>
 <p>The <code>whitelistMeasurements</code> field is an optional list of strings. If present, measurements that do not match one of the strings in the list will be ignored.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/virtual-columns.html"><span class="arrow-prev">← </span><span>Virtual Columns</span></a><a class="docs-next button" href="/docs/0.18.0/development/extensions-contrib/influxdb-emitter.html"><span class="function-name-prevnext">InfluxDB Emitter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#line-protocol [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/select-query.html"><span class="arrow-prev">← </span><span>Select</span></a><a class="docs-next button" href="/docs/0.18.0/development/extensions-contrib/influxdb-emitter.html"><span class="function-name-prevnext">InfluxDB Emitter</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#line-protocol">Line Proto [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/development/extensions-contrib/influxdb-emitter.html b/docs/0.18.0/development/extensions-contrib/influxdb-emitter.html
index 8ebb05b..69917db 100644
--- a/docs/0.18.0/development/extensions-contrib/influxdb-emitter.html
+++ b/docs/0.18.0/development/extensions-contrib/influxdb-emitter.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-contrib/kafka-emitter.html b/docs/0.18.0/development/extensions-contrib/kafka-emitter.html
index 60779f4..aa4285e 100644
--- a/docs/0.18.0/development/extensions-contrib/kafka-emitter.html
+++ b/docs/0.18.0/development/extensions-contrib/kafka-emitter.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-contrib/materialized-view.html b/docs/0.18.0/development/extensions-contrib/materialized-view.html
index 8acbb65..ee3ed9f 100644
--- a/docs/0.18.0/development/extensions-contrib/materialized-view.html
+++ b/docs/0.18.0/development/extensions-contrib/materialized-view.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-contrib/momentsketch-quantiles.html b/docs/0.18.0/development/extensions-contrib/momentsketch-quantiles.html
index 6f6ce51..2cd0aca 100644
--- a/docs/0.18.0/development/extensions-contrib/momentsketch-quantiles.html
+++ b/docs/0.18.0/development/extensions-contrib/momentsketch-quantiles.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-contrib/moving-average-query.html b/docs/0.18.0/development/extensions-contrib/moving-average-query.html
index a41ad16..9a88acf 100644
--- a/docs/0.18.0/development/extensions-contrib/moving-average-query.html
+++ b/docs/0.18.0/development/extensions-contrib/moving-average-query.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-contrib/opentsdb-emitter.html b/docs/0.18.0/development/extensions-contrib/opentsdb-emitter.html
index b324e37..17d62f6 100644
--- a/docs/0.18.0/development/extensions-contrib/opentsdb-emitter.html
+++ b/docs/0.18.0/development/extensions-contrib/opentsdb-emitter.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-contrib/redis-cache.html b/docs/0.18.0/development/extensions-contrib/redis-cache.html
index 5b3f5d5..e995f24 100644
--- a/docs/0.18.0/development/extensions-contrib/redis-cache.html
+++ b/docs/0.18.0/development/extensions-contrib/redis-cache.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-contrib/sqlserver.html b/docs/0.18.0/development/extensions-contrib/sqlserver.html
index 2d7c025..12b6b44 100644
--- a/docs/0.18.0/development/extensions-contrib/sqlserver.html
+++ b/docs/0.18.0/development/extensions-contrib/sqlserver.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-contrib/statsd.html b/docs/0.18.0/development/extensions-contrib/statsd.html
index 9c811c2..bac3a62 100644
--- a/docs/0.18.0/development/extensions-contrib/statsd.html
+++ b/docs/0.18.0/development/extensions-contrib/statsd.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-contrib/tdigestsketch-quantiles.html b/docs/0.18.0/development/extensions-contrib/tdigestsketch-quantiles.html
index e44b14d..155e753 100644
--- a/docs/0.18.0/development/extensions-contrib/tdigestsketch-quantiles.html
+++ b/docs/0.18.0/development/extensions-contrib/tdigestsketch-quantiles.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-contrib/thrift.html b/docs/0.18.0/development/extensions-contrib/thrift.html
index fdd0f6e..669ba76 100644
--- a/docs/0.18.0/development/extensions-contrib/thrift.html
+++ b/docs/0.18.0/development/extensions-contrib/thrift.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-contrib/time-min-max.html b/docs/0.18.0/development/extensions-contrib/time-min-max.html
index 1185c12..16758ea 100644
--- a/docs/0.18.0/development/extensions-contrib/time-min-max.html
+++ b/docs/0.18.0/development/extensions-contrib/time-min-max.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/approximate-histograms.html b/docs/0.18.0/development/extensions-core/approximate-histograms.html
index 0d3ba27..1076449 100644
--- a/docs/0.18.0/development/extensions-core/approximate-histograms.html
+++ b/docs/0.18.0/development/extensions-core/approximate-histograms.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/avro.html b/docs/0.18.0/development/extensions-core/avro.html
index d03ddf5..e11c5d1 100644
--- a/docs/0.18.0/development/extensions-core/avro.html
+++ b/docs/0.18.0/development/extensions-core/avro.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/azure.html b/docs/0.18.0/development/extensions-core/azure.html
index 88a7c68..2586472 100644
--- a/docs/0.18.0/development/extensions-core/azure.html
+++ b/docs/0.18.0/development/extensions-core/azure.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/bloom-filter.html b/docs/0.18.0/development/extensions-core/bloom-filter.html
index 38b07e5..223d4e3 100644
--- a/docs/0.18.0/development/extensions-core/bloom-filter.html
+++ b/docs/0.18.0/development/extensions-core/bloom-filter.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/datasketches-extension.html b/docs/0.18.0/development/extensions-core/datasketches-extension.html
index fe84ffd..c46f0bf 100644
--- a/docs/0.18.0/development/extensions-core/datasketches-extension.html
+++ b/docs/0.18.0/development/extensions-core/datasketches-extension.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/datasketches-hll.html b/docs/0.18.0/development/extensions-core/datasketches-hll.html
index 183c9a5..78edda1 100644
--- a/docs/0.18.0/development/extensions-core/datasketches-hll.html
+++ b/docs/0.18.0/development/extensions-core/datasketches-hll.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/datasketches-quantiles.html b/docs/0.18.0/development/extensions-core/datasketches-quantiles.html
index d3e564e..41d0bcd 100644
--- a/docs/0.18.0/development/extensions-core/datasketches-quantiles.html
+++ b/docs/0.18.0/development/extensions-core/datasketches-quantiles.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/datasketches-theta.html b/docs/0.18.0/development/extensions-core/datasketches-theta.html
index 663c47d..5d165c2 100644
--- a/docs/0.18.0/development/extensions-core/datasketches-theta.html
+++ b/docs/0.18.0/development/extensions-core/datasketches-theta.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/datasketches-tuple.html b/docs/0.18.0/development/extensions-core/datasketches-tuple.html
index a197e53..2ac2d11 100644
--- a/docs/0.18.0/development/extensions-core/datasketches-tuple.html
+++ b/docs/0.18.0/development/extensions-core/datasketches-tuple.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/druid-basic-security.html b/docs/0.18.0/development/extensions-core/druid-basic-security.html
index cbb3187..f3a51b0 100644
--- a/docs/0.18.0/development/extensions-core/druid-basic-security.html
+++ b/docs/0.18.0/development/extensions-core/druid-basic-security.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/druid-kerberos.html b/docs/0.18.0/development/extensions-core/druid-kerberos.html
index 72b031f..a692793 100644
--- a/docs/0.18.0/development/extensions-core/druid-kerberos.html
+++ b/docs/0.18.0/development/extensions-core/druid-kerberos.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/druid-lookups.html b/docs/0.18.0/development/extensions-core/druid-lookups.html
index c936be3..36a890d 100644
--- a/docs/0.18.0/development/extensions-core/druid-lookups.html
+++ b/docs/0.18.0/development/extensions-core/druid-lookups.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/google.html b/docs/0.18.0/development/extensions-core/google.html
index fd09a84..cb951c4 100644
--- a/docs/0.18.0/development/extensions-core/google.html
+++ b/docs/0.18.0/development/extensions-core/google.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/hdfs.html b/docs/0.18.0/development/extensions-core/hdfs.html
index ae1a7ae..098fd91 100644
--- a/docs/0.18.0/development/extensions-core/hdfs.html
+++ b/docs/0.18.0/development/extensions-core/hdfs.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/kafka-extraction-namespace.html b/docs/0.18.0/development/extensions-core/kafka-extraction-namespace.html
index 64543e5..0dc3424 100644
--- a/docs/0.18.0/development/extensions-core/kafka-extraction-namespace.html
+++ b/docs/0.18.0/development/extensions-core/kafka-extraction-namespace.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/kafka-ingestion.html b/docs/0.18.0/development/extensions-core/kafka-ingestion.html
index d16e27e..1ac85fd 100644
--- a/docs/0.18.0/development/extensions-core/kafka-ingestion.html
+++ b/docs/0.18.0/development/extensions-core/kafka-ingestion.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/kinesis-ingestion.html b/docs/0.18.0/development/extensions-core/kinesis-ingestion.html
index b25a4e7..a68ddcf 100644
--- a/docs/0.18.0/development/extensions-core/kinesis-ingestion.html
+++ b/docs/0.18.0/development/extensions-core/kinesis-ingestion.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/lookups-cached-global.html b/docs/0.18.0/development/extensions-core/lookups-cached-global.html
index ca9113c..3009382 100644
--- a/docs/0.18.0/development/extensions-core/lookups-cached-global.html
+++ b/docs/0.18.0/development/extensions-core/lookups-cached-global.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/mysql.html b/docs/0.18.0/development/extensions-core/mysql.html
index 0d6c209..f128e2c 100644
--- a/docs/0.18.0/development/extensions-core/mysql.html
+++ b/docs/0.18.0/development/extensions-core/mysql.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/orc.html b/docs/0.18.0/development/extensions-core/orc.html
index d9793fc..3d6ed27 100644
--- a/docs/0.18.0/development/extensions-core/orc.html
+++ b/docs/0.18.0/development/extensions-core/orc.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/parquet.html b/docs/0.18.0/development/extensions-core/parquet.html
index ba6719e..8a76793 100644
--- a/docs/0.18.0/development/extensions-core/parquet.html
+++ b/docs/0.18.0/development/extensions-core/parquet.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/postgresql.html b/docs/0.18.0/development/extensions-core/postgresql.html
index 30383e1..63dbd73 100644
--- a/docs/0.18.0/development/extensions-core/postgresql.html
+++ b/docs/0.18.0/development/extensions-core/postgresql.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/protobuf.html b/docs/0.18.0/development/extensions-core/protobuf.html
index ad48269..6c2f1ef 100644
--- a/docs/0.18.0/development/extensions-core/protobuf.html
+++ b/docs/0.18.0/development/extensions-core/protobuf.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/s3.html b/docs/0.18.0/development/extensions-core/s3.html
index d96983e..32ba9f4 100644
--- a/docs/0.18.0/development/extensions-core/s3.html
+++ b/docs/0.18.0/development/extensions-core/s3.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/simple-client-sslcontext.html b/docs/0.18.0/development/extensions-core/simple-client-sslcontext.html
index 9ed0641..442ce6f 100644
--- a/docs/0.18.0/development/extensions-core/simple-client-sslcontext.html
+++ b/docs/0.18.0/development/extensions-core/simple-client-sslcontext.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/stats.html b/docs/0.18.0/development/extensions-core/stats.html
index 2dc22c4..cbc75d5 100644
--- a/docs/0.18.0/development/extensions-core/stats.html
+++ b/docs/0.18.0/development/extensions-core/stats.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions-core/test-stats.html b/docs/0.18.0/development/extensions-core/test-stats.html
index 4df3308..fc58e62 100644
--- a/docs/0.18.0/development/extensions-core/test-stats.html
+++ b/docs/0.18.0/development/extensions-core/test-stats.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/extensions.html b/docs/0.18.0/development/extensions.html
index 6dddd88..b01833d 100644
--- a/docs/0.18.0/development/extensions.html
+++ b/docs/0.18.0/development/extensions.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/geo.html b/docs/0.18.0/development/geo.html
index 66496d5..8752bbf 100644
--- a/docs/0.18.0/development/geo.html
+++ b/docs/0.18.0/development/geo.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -77,6 +77,10 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes functionality that is only available in the native language.</p>
+</blockquote>
 <p>Apache Druid supports filtering specially spatially indexed columns based on an origin and a bound.</p>
 <h2><a class="anchor" aria-hidden="true" id="spatial-indexing"></a><a href="#spatial-indexing" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>In any of the data specs, there is the option of providing spatial dimensions. For example, for a JSON data spec, spatial dimensions can be specified as follows:</p>
@@ -156,7 +160,7 @@
 <tr><td>ordinate</td><td>Vertical coordinate for corners of the polygon</td><td>yes</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/caching.html"><span class="arrow-prev">← </span><span>Query caching</span></a><a class="docs-next button" href="/docs/0.18.0/configuration/index.html"><span>Configuration reference</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#spatial-indexing">Spatial indexing</a></li><li><a href="#spatial-filters">S [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/virtual-columns.html"><span class="arrow-prev">← </span><span>Virtual columns</span></a><a class="docs-next button" href="/docs/0.18.0/configuration/index.html"><span>Configuration reference</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#spatial-indexing">Spatial indexing</a></li><li><a href="#spatial- [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/development/javascript.html b/docs/0.18.0/development/javascript.html
index 3e1339d..42209d9 100644
--- a/docs/0.18.0/development/javascript.html
+++ b/docs/0.18.0/development/javascript.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/modules.html b/docs/0.18.0/development/modules.html
index 6460a16..2d60659 100644
--- a/docs/0.18.0/development/modules.html
+++ b/docs/0.18.0/development/modules.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/overview.html b/docs/0.18.0/development/overview.html
index 177436a..f87d312 100644
--- a/docs/0.18.0/development/overview.html
+++ b/docs/0.18.0/development/overview.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/development/versioning.html b/docs/0.18.0/development/versioning.html
index 95811ba..f4fa5da 100644
--- a/docs/0.18.0/development/versioning.html
+++ b/docs/0.18.0/development/versioning.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/ingestion/data-formats.html b/docs/0.18.0/ingestion/data-formats.html
index f1abc82..fc965ae 100644
--- a/docs/0.18.0/ingestion/data-formats.html
+++ b/docs/0.18.0/ingestion/data-formats.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/ingestion/data-management.html b/docs/0.18.0/ingestion/data-management.html
index 145c360..3b37383 100644
--- a/docs/0.18.0/ingestion/data-management.html
+++ b/docs/0.18.0/ingestion/data-management.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/ingestion/faq.html b/docs/0.18.0/ingestion/faq.html
index 020f1a4..257ac9d 100644
--- a/docs/0.18.0/ingestion/faq.html
+++ b/docs/0.18.0/ingestion/faq.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/ingestion/hadoop.html b/docs/0.18.0/ingestion/hadoop.html
index 948b943..8b30f2e 100644
--- a/docs/0.18.0/ingestion/hadoop.html
+++ b/docs/0.18.0/ingestion/hadoop.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/ingestion/index.html b/docs/0.18.0/ingestion/index.html
index 65ebdeb..0601947 100644
--- a/docs/0.18.0/ingestion/index.html
+++ b/docs/0.18.0/ingestion/index.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/ingestion/native-batch.html b/docs/0.18.0/ingestion/native-batch.html
index cb9a36f..82e89c1 100644
--- a/docs/0.18.0/ingestion/native-batch.html
+++ b/docs/0.18.0/ingestion/native-batch.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/ingestion/schema-design.html b/docs/0.18.0/ingestion/schema-design.html
index bea68ae..1344d9e 100644
--- a/docs/0.18.0/ingestion/schema-design.html
+++ b/docs/0.18.0/ingestion/schema-design.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/ingestion/standalone-realtime.html b/docs/0.18.0/ingestion/standalone-realtime.html
index 65fd143..85b288f 100644
--- a/docs/0.18.0/ingestion/standalone-realtime.html
+++ b/docs/0.18.0/ingestion/standalone-realtime.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/ingestion/tasks.html b/docs/0.18.0/ingestion/tasks.html
index 85a6224..d38016b 100644
--- a/docs/0.18.0/ingestion/tasks.html
+++ b/docs/0.18.0/ingestion/tasks.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/ingestion/tranquility.html b/docs/0.18.0/ingestion/tranquility.html
index dfe242b..f66b92b 100644
--- a/docs/0.18.0/ingestion/tranquility.html
+++ b/docs/0.18.0/ingestion/tranquility.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/misc/math-expr.html b/docs/0.18.0/misc/math-expr.html
index 119576f..43f57a0 100644
--- a/docs/0.18.0/misc/math-expr.html
+++ b/docs/0.18.0/misc/math-expr.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -78,9 +78,14 @@
   ~ under the License.
   -->
 <blockquote>
-<p>This feature is still experimental. It has not been optimized for performance yet, and its implementation is known to
-have significant inefficiencies.</p>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/querying.html">native queries</a> and <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a>.
+This document describes the native language. For information about functions available in SQL, refer to the
+<a href="/docs/0.18.0/querying/sql.html#scalar-functions">SQL documentation</a>.</p>
 </blockquote>
+<p>Expressions are used in various places in the native query language, including
+<a href="/docs/0.18.0/querying/virtual-columns.html">virtual columns</a> and <a href="/docs/0.18.0/querying/datasource.html#join">join conditions</a>. They are
+also generated by most <a href="/docs/0.18.0/querying/sql.html#scalar-functions">Druid SQL functions</a> during the
+<a href="/docs/0.18.0/querying/sql.html#query-translation">query translation</a> process.</p>
 <p>This expression language supports the following operators (listed in decreasing order of precedence).</p>
 <table>
 <thead>
@@ -277,7 +282,7 @@ type of the result:</p>
 <tr><td>ipv4_stringify(address)</td><td>Converts <code>address</code> into an IPv4 address dotted-decimal string. If <code>address</code> is a string that is a valid IPv4 address, then it is passed through. Returns null if <code>address</code> cannot be represented as an IPv4 address.</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/development/experimental.html"><span class="arrow-prev">← </span><span>Experimental features</span></a><a class="docs-next button" href="/docs/0.18.0/misc/papers-and-talks.html"><span>Papers</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#general-functions">General functions</a></li><li><a href="#string-function [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/post-aggregations.html"><span class="arrow-prev">← </span><span>Post-aggregations</span></a><a class="docs-next button" href="/docs/0.18.0/querying/having.html"><span class="function-name-prevnext">Having filters (groupBy)</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#general-functions">General functi [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/misc/papers-and-talks.html b/docs/0.18.0/misc/papers-and-talks.html
index e1ab537..de2f272 100644
--- a/docs/0.18.0/misc/papers-and-talks.html
+++ b/docs/0.18.0/misc/papers-and-talks.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -91,7 +91,7 @@
 <li><p><a href="https://www.youtube.com/watch?v=Sz4w75xRrYM">Stories from the Trenches - The Challenges of Building an Analytics Stack</a> - Discusses features that were added to scale Druid.</p></li>
 <li><p><a href="https://www.youtube.com/watch?v=bZ3LqG3iHbM">Building Interactive Applications at Scale</a> - Discusses building applications on top of Druid.</p></li>
 </ul>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/misc/math-expr.html"><span class="arrow-prev">← </span><span>Expressions</span></a><a class="docs-next button" href="/docs/0.18.0/comparisons/druid-vs-elasticsearch.html"><span>Apache Druid vs Elasticsearch</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#papers">Papers</a></li><li><a href="#presentations">Presen [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/development/experimental.html"><span class="arrow-prev">← </span><span>Experimental features</span></a><a class="docs-next button" href="/docs/0.18.0/comparisons/druid-vs-elasticsearch.html"><span>Apache Druid vs Elasticsearch</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#papers">Papers</a></li><li><a href="#p [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/operations/alerts.html b/docs/0.18.0/operations/alerts.html
index 328d1dc..3f7cc55 100644
--- a/docs/0.18.0/operations/alerts.html
+++ b/docs/0.18.0/operations/alerts.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/api-reference.html b/docs/0.18.0/operations/api-reference.html
index ce0c979..4c8ea1b 100644
--- a/docs/0.18.0/operations/api-reference.html
+++ b/docs/0.18.0/operations/api-reference.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/basic-cluster-tuning.html b/docs/0.18.0/operations/basic-cluster-tuning.html
index 8f4fa6e..8bdb8f0 100644
--- a/docs/0.18.0/operations/basic-cluster-tuning.html
+++ b/docs/0.18.0/operations/basic-cluster-tuning.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/deep-storage-migration.html b/docs/0.18.0/operations/deep-storage-migration.html
index 9f120cb..78df397 100644
--- a/docs/0.18.0/operations/deep-storage-migration.html
+++ b/docs/0.18.0/operations/deep-storage-migration.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/druid-console.html b/docs/0.18.0/operations/druid-console.html
index 448739d..32bda75 100644
--- a/docs/0.18.0/operations/druid-console.html
+++ b/docs/0.18.0/operations/druid-console.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/dump-segment.html b/docs/0.18.0/operations/dump-segment.html
index 8801ea0..5fd3dae 100644
--- a/docs/0.18.0/operations/dump-segment.html
+++ b/docs/0.18.0/operations/dump-segment.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/export-metadata.html b/docs/0.18.0/operations/export-metadata.html
index 922b6d5..c78d63e 100644
--- a/docs/0.18.0/operations/export-metadata.html
+++ b/docs/0.18.0/operations/export-metadata.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/getting-started.html b/docs/0.18.0/operations/getting-started.html
index a617d70..450ea99 100644
--- a/docs/0.18.0/operations/getting-started.html
+++ b/docs/0.18.0/operations/getting-started.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/high-availability.html b/docs/0.18.0/operations/high-availability.html
index 312bd29..c83bb95 100644
--- a/docs/0.18.0/operations/high-availability.html
+++ b/docs/0.18.0/operations/high-availability.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/http-compression.html b/docs/0.18.0/operations/http-compression.html
index 3bda9d1..ce184eb 100644
--- a/docs/0.18.0/operations/http-compression.html
+++ b/docs/0.18.0/operations/http-compression.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/insert-segment-to-db.html b/docs/0.18.0/operations/insert-segment-to-db.html
index b625e51..0a25757 100644
--- a/docs/0.18.0/operations/insert-segment-to-db.html
+++ b/docs/0.18.0/operations/insert-segment-to-db.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/management-uis.html b/docs/0.18.0/operations/management-uis.html
index e7e9615..1084e95 100644
--- a/docs/0.18.0/operations/management-uis.html
+++ b/docs/0.18.0/operations/management-uis.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/metadata-migration.html b/docs/0.18.0/operations/metadata-migration.html
index f799384..82fdd2e 100644
--- a/docs/0.18.0/operations/metadata-migration.html
+++ b/docs/0.18.0/operations/metadata-migration.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/metrics.html b/docs/0.18.0/operations/metrics.html
index eaab791..7e4b7cf 100644
--- a/docs/0.18.0/operations/metrics.html
+++ b/docs/0.18.0/operations/metrics.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -107,6 +107,8 @@
 <tr><td><code>query/success/count</code></td><td>number of queries successfully processed</td><td>This metric is only available if the QueryCountStatsMonitor module is included.</td><td></td></tr>
 <tr><td><code>query/failed/count</code></td><td>number of failed queries</td><td>This metric is only available if the QueryCountStatsMonitor module is included.</td><td></td></tr>
 <tr><td><code>query/interrupted/count</code></td><td>number of queries interrupted due to cancellation or timeout</td><td>This metric is only available if the QueryCountStatsMonitor module is included.</td><td></td></tr>
+<tr><td><code>sqlQuery/time</code></td><td>Milliseconds taken to complete a SQL query.</td><td>id, nativeQueryIds, dataSource, remoteAddress, success.</td><td>&lt; 1s</td></tr>
+<tr><td><code>sqlQuery/bytes</code></td><td>number of bytes returned in SQL query response.</td><td>id, nativeQueryIds, dataSource, remoteAddress, success.</td><td></td></tr>
 </tbody>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="historical"></a><a href="#historical" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
diff --git a/docs/0.18.0/operations/other-hadoop.html b/docs/0.18.0/operations/other-hadoop.html
index 08ff03d..c537487 100644
--- a/docs/0.18.0/operations/other-hadoop.html
+++ b/docs/0.18.0/operations/other-hadoop.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/password-provider.html b/docs/0.18.0/operations/password-provider.html
index cd881ef..aa6f1c9 100644
--- a/docs/0.18.0/operations/password-provider.html
+++ b/docs/0.18.0/operations/password-provider.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/pull-deps.html b/docs/0.18.0/operations/pull-deps.html
index 6dcb053..8f4a0df 100644
--- a/docs/0.18.0/operations/pull-deps.html
+++ b/docs/0.18.0/operations/pull-deps.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/reset-cluster.html b/docs/0.18.0/operations/reset-cluster.html
index cf10b09..3cfe51b 100644
--- a/docs/0.18.0/operations/reset-cluster.html
+++ b/docs/0.18.0/operations/reset-cluster.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/rolling-updates.html b/docs/0.18.0/operations/rolling-updates.html
index abe42fc..b0e0760 100644
--- a/docs/0.18.0/operations/rolling-updates.html
+++ b/docs/0.18.0/operations/rolling-updates.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/rule-configuration.html b/docs/0.18.0/operations/rule-configuration.html
index 7d63857..9240ee1 100644
--- a/docs/0.18.0/operations/rule-configuration.html
+++ b/docs/0.18.0/operations/rule-configuration.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/segment-optimization.html b/docs/0.18.0/operations/segment-optimization.html
index 4755802..e9d498d 100644
--- a/docs/0.18.0/operations/segment-optimization.html
+++ b/docs/0.18.0/operations/segment-optimization.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/single-server.html b/docs/0.18.0/operations/single-server.html
index 6ec3d05..fed855a 100644
--- a/docs/0.18.0/operations/single-server.html
+++ b/docs/0.18.0/operations/single-server.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/tls-support.html b/docs/0.18.0/operations/tls-support.html
index 9173974..9366068 100644
--- a/docs/0.18.0/operations/tls-support.html
+++ b/docs/0.18.0/operations/tls-support.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/operations/use_sbt_to_build_fat_jar.html b/docs/0.18.0/operations/use_sbt_to_build_fat_jar.html
index 3fb59e4..f0cb986 100644
--- a/docs/0.18.0/operations/use_sbt_to_build_fat_jar.html
+++ b/docs/0.18.0/operations/use_sbt_to_build_fat_jar.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/querying/aggregations.html b/docs/0.18.0/querying/aggregations.html
index e326ab3..3ca13c5 100644
--- a/docs/0.18.0/querying/aggregations.html
+++ b/docs/0.18.0/querying/aggregations.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -77,6 +77,12 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes the native
+language. For information about aggregators available in SQL, refer to the
+<a href="/docs/0.18.0/querying/sql.html#aggregation-functions">SQL documentation</a>.</p>
+</blockquote>
 <p>Aggregations can be provided at ingestion time as part of the ingestion spec as a way of summarizing data before it enters Apache Druid.
 Aggregations can also be specified as part of many queries at query time.</p>
 <p>Available aggregations are:</p>
@@ -330,7 +336,7 @@ We recommend using <a href="/docs/0.18.0/development/extensions-core/datasketche
   <span class="hljs-string">"aggregator"</span> : &lt;aggregation&gt;
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/development/extensions-contrib/graphite.html"><span class="arrow-prev">← </span><span>Graphite Emitter</span></a><a class="docs-next button" href="/docs/0.18.0/querying/datasource.html"><span>Datasources</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#approximate-aggregations">Approximate Aggregations</a><ul cla [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/dimensionspecs.html"><span class="arrow-prev">← </span><span>Dimensions</span></a><a class="docs-next button" href="/docs/0.18.0/querying/post-aggregations.html"><span>Post-aggregations</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#approximate-aggregations">Approximate Aggregations</a><ul class="toc-h [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/caching.html b/docs/0.18.0/querying/caching.html
index 124d5e8..37d9690 100644
--- a/docs/0.18.0/querying/caching.html
+++ b/docs/0.18.0/querying/caching.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -121,7 +121,7 @@ result merging and puts less strain on the Brokers.</p>
 This restriction exists because the cache stores results at the level of intermediate partial segments generated by the
 ingestion tasks. These intermediate partial segments will not necessarily be identical across task replicas, so
 remote cache types such as <code>memcached</code> will be ignored by task executor processes.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/multitenancy.html"><span class="arrow-prev">← </span><span>Multitenancy considerations</span></a><a class="docs-next button" href="/docs/0.18.0/development/geo.html"><span>Spatial filters</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#using-and-populating-cache">Using and populating cache</a></li><li>< [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/multitenancy.html"><span class="arrow-prev">← </span><span>Multitenancy</span></a><a class="docs-next button" href="/docs/0.18.0/querying/query-context.html"><span>Context parameters</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#using-and-populating-cache">Using and populating cache</a></li><li><a hre [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/datasource.html b/docs/0.18.0/querying/datasource.html
index d3ea249..59ecd69 100644
--- a/docs/0.18.0/querying/datasource.html
+++ b/docs/0.18.0/querying/datasource.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -77,34 +77,158 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>A data source is the Apache Druid equivalent of a database table. However, a query can also masquerade as a data source, providing subquery-like functionality. Query data sources are currently supported only by <a href="/docs/0.18.0/querying/groupbyquery.html">GroupBy</a> queries.</p>
-<h3><a class="anchor" aria-hidden="true" id="table-datasource"></a><a href="#table-datasource" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
-<p>The table data source is the most common type. It's represented by a string, or by the full structure:</p>
-<pre><code class="hljs css language-json">{
-    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"table"</span>,
-    <span class="hljs-attr">"name"</span>: <span class="hljs-string">"&lt;string_value&gt;"</span>
+<p>Datasources in Apache Druid are things that you can query. The most common kind of datasource is a table datasource,
+and in many contexts the word &quot;datasource&quot; implicitly refers to table datasources. This is especially true
+<a href="../ingestion/index.html">during data ingestion</a>, where ingestion is always creating or writing into a table
+datasource. But at query time, there are many other types of datasources available.</p>
+<p>The word &quot;datasource&quot; is generally spelled <code>dataSource</code> (with a capital S) when it appears in API requests and
+responses.</p>
+<h2><a class="anchor" aria-hidden="true" id="datasource-type"></a><a href="#datasource-type" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<h3><a class="anchor" aria-hidden="true" id="table"></a><a href="#table" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-1-tab-2" class="nav-link active" data-group="group_1" data-tab="tab-group-1-content-2">SQL</div><div id="tab-group-1-tab-3" class="nav-link" data-group="group_1" data-tab="tab-group-1-content-3">Native</div></div><div class="tab-content"><div id="tab-group-1-content-2" class="tab-pane active" data-group="group_1" tabindex="-1"><div><span><pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span> column1, co [...]
+</span></div></div><div id="tab-group-1-content-3" class="tab-pane" data-group="group_1" tabindex="-1"><div><span><pre><code class="hljs css language-json">{<br />  <span class="hljs-attr">"queryType"</span>: <span class="hljs-string">"scan"</span>,<br />  <span class="hljs-attr">"dataSource"</span>: <span class="hljs-string">"dataSourceName"</span>,<br />  <span class="hljs-attr">"columns"</span>: [<span class="hljs-string">"column1"</span>, <span class="hljs-string">"column2"</span>],< [...]
+</span></div></div></div></div>
+<p>The table datasource is the most common type. This is the kind of datasource you get when you perform
+<a href="../ingestion/index.html">data ingestion</a>. They are split up into segments, distributed around the cluster,
+and queried in parallel.</p>
+<p>In <a href="sql.html#from">Druid SQL</a>, table datasources reside in the the <code>druid</code> schema. This is the default schema, so table
+datasources can be referenced as either <code>druid.dataSourceName</code> or simply <code>dataSourceName</code>.</p>
+<p>In native queries, table datasources can be referenced using their names as strings (as in the example above), or by
+using JSON objects of the form:</p>
+<pre><code class="hljs css language-json">"dataSource": {
+  "type": "table",
+  "name": "dataSourceName"
 }
 </code></pre>
-<h3><a class="anchor" aria-hidden="true" id="union-datasource"></a><a href="#union-datasource" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
-<p>This data source unions two or more table data sources.</p>
-<pre><code class="hljs css language-json">{
-       <span class="hljs-attr">"type"</span>: <span class="hljs-string">"union"</span>,
-       <span class="hljs-attr">"dataSources"</span>: [<span class="hljs-string">"&lt;string_value1&gt;"</span>, <span class="hljs-string">"&lt;string_value2&gt;"</span>, <span class="hljs-string">"&lt;string_value3&gt;"</span>, ... ]
-}
-</code></pre>
-<p>Note that the data sources being unioned should have the same schema.
-Union Queries should be always sent to a Broker/Router process and are <em>NOT</em> supported directly by the Historical processes.</p>
-<h3><a class="anchor" aria-hidden="true" id="query-datasource"></a><a href="#query-datasource" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
-<p>This is used for nested groupBys and is only currently supported for groupBys.</p>
-<pre><code class="hljs css language-json">{
-    "type": "query",
-    "query": {
-        "type": "groupBy",
-        ...
-    }
-}
+<p>To see a list of all table datasources, use the SQL query
+<code>SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'druid'</code>.</p>
+<h3><a class="anchor" aria-hidden="true" id="lookup"></a><a href="#lookup" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-4-tab-5" class="nav-link active" data-group="group_4" data-tab="tab-group-4-content-5">SQL</div><div id="tab-group-4-tab-6" class="nav-link" data-group="group_4" data-tab="tab-group-4-content-6">Native</div></div><div class="tab-content"><div id="tab-group-4-content-5" class="tab-pane active" data-group="group_4" tabindex="-1"><div><span><pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span> k, v <span  [...]
+</span></div></div><div id="tab-group-4-content-6" class="tab-pane" data-group="group_4" tabindex="-1"><div><span><pre><code class="hljs css language-json">{<br />  <span class="hljs-attr">"queryType"</span>: <span class="hljs-string">"scan"</span>,<br />  <span class="hljs-attr">"dataSource"</span>: {<br />    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"lookup"</span>,<br />    <span class="hljs-attr">"lookup"</span>: <span class="hljs-string">"countries"</span><br [...]
+</span></div></div></div></div>
+<p>Lookup datasources correspond to Druid's key-value <a href="lookups.html">lookup</a> objects. In <a href="sql.html#from">Druid SQL</a>,
+they reside in the the <code>lookup</code> schema. They are preloaded in memory on all servers, so they can be accessed rapidly.
+They can be joined onto regular tables using the <a href="#join">join operator</a>.</p>
+<p>Lookup datasources are key-value oriented and always have exactly two columns: <code>k</code> (the key) and <code>v</code> (the value), and
+both are always strings.</p>
+<p>To see a list of all lookup datasources, use the SQL query
+<code>SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'lookup'</code>.</p>
+<blockquote>
+<p>Performance tip: Lookups can be joined with a base table either using an explicit <a href="#join">join</a>, or by using the
+SQL <a href="sql.html#string-functions"><code>LOOKUP</code> function</a>.
+However, the join operator must evaluate the condition on each row, whereas the
+<code>LOOKUP</code> function can defer evaluation until after an aggregation phase. This means that the <code>LOOKUP</code> function is
+usually faster than joining to a lookup datasource.</p>
+</blockquote>
+<h3><a class="anchor" aria-hidden="true" id="query"></a><a href="#query" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-7-tab-8" class="nav-link active" data-group="group_7" data-tab="tab-group-7-content-8">SQL</div><div id="tab-group-7-tab-9" class="nav-link" data-group="group_7" data-tab="tab-group-7-content-9">Native</div></div><div class="tab-content"><div id="tab-group-7-content-8" class="tab-pane active" data-group="group_7" tabindex="-1"><div><span><pre><code class="hljs css language-sql"><span class="hljs-comment">-- Uses a subquery to cou [...]
+</span></div></div><div id="tab-group-7-content-9" class="tab-pane" data-group="group_7" tabindex="-1"><div><span><pre><code class="hljs css language-json">{<br />  <span class="hljs-attr">"queryType"</span>: <span class="hljs-string">"timeseries"</span>,<br />  <span class="hljs-attr">"dataSource"</span>: {<br />    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"query"</span>,<br />    <span class="hljs-attr">"query"</span>: {<br />      <span class="hljs-attr">"query [...]
+</span></div></div></div></div>
+<p>Query datasources allow you to issue subqueries. In native queries, they can appear anywhere that accepts a
+<code>dataSource</code>. In SQL, they can appear in the following places, always surrounded by parentheses:</p>
+<ul>
+<li>The FROM clause: <code>FROM (&lt;subquery&gt;)</code>.</li>
+<li>As inputs to a JOIN: <code>&lt;table-or-subquery-1&gt; t1 INNER JOIN &lt;table-or-subquery-2&gt; t2 ON t1.&lt;col1&gt; = t2.&lt;col2&gt;</code>.</li>
+<li>In the WHERE clause: <code>WHERE &lt;column&gt; { IN | NOT IN } (&lt;subquery&gt;)</code>. These are translated to joins by the SQL planner.</li>
+</ul>
+<blockquote>
+<p>Performance tip: In most cases, subquery results are fully buffered in memory on the Broker and then further
+processing occurs on the Broker itself. This means that subqueries with large result sets can cause performance
+bottlenecks or run into memory usage limits on the Broker. See the <a href="/docs/0.18.0/querying/query-execution.html">Query execution</a> documentation
+for more details on how subqueries are executed and what limits will apply.</p>
+</blockquote>
+<h3><a class="anchor" aria-hidden="true" id="join"></a><a href="#join" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-10-tab-11" class="nav-link active" data-group="group_10" data-tab="tab-group-10-content-11">SQL</div><div id="tab-group-10-tab-12" class="nav-link" data-group="group_10" data-tab="tab-group-10-content-12">Native</div></div><div class="tab-content"><div id="tab-group-10-content-11" class="tab-pane active" data-group="group_10" tabindex="-1"><div><span><pre><code class="hljs css language-sql"><span class="hljs-comment">-- Joins "sa [...]
+</span></div></div><div id="tab-group-10-content-12" class="tab-pane" data-group="group_10" tabindex="-1"><div><span><pre><code class="hljs css language-json">{<br />  <span class="hljs-attr">"queryType"</span>: <span class="hljs-string">"groupBy"</span>,<br />  <span class="hljs-attr">"dataSource"</span>: {<br />    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"join"</span>,<br />    <span class="hljs-attr">"left"</span>: <span class="hljs-string">"sales"</span>,<br  [...]
+</span></div></div></div></div>
+<p>Join datasources allow you to do a SQL-style join of two datasources. Stacking joins on top of each other allows
+you to join arbitrarily many datasources.</p>
+<p>In Druid 0.18.0, joins are implemented with a broadcast hash-join algorithm. This means that all tables
+other than the leftmost &quot;base&quot; table must fit in memory. It also means that the join condition must be an equality. This
+feature is intended mainly to allow joining regular Druid tables with <a href="#lookup">lookup</a>, <a href="#inline">inline</a>, and
+<a href="#query">query</a> datasources.</p>
+<p>For information about how Druid executes queries involving joins, refer to the
+<a href="query-execution.html#join">Query execution</a> page.</p>
+<h4><a class="anchor" aria-hidden="true" id="joins-in-sql"></a><a href="#joins-in-sql" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<p>SQL joins take the form:</p>
+<pre><code class="hljs">&lt;o1&gt; [ <span class="hljs-keyword">INNER</span> | LEFT [<span class="hljs-keyword">OUTER</span>] ] <span class="hljs-keyword">JOIN</span> &lt;o2&gt; <span class="hljs-keyword">ON</span> &lt;condition&gt;
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/aggregations.html"><span class="arrow-prev">← </span><span>Aggregations</span></a><a class="docs-next button" href="/docs/0.18.0/querying/dimensionspecs.html"><span>Transforming Dimension Values</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="t [...]
+<p>The condition must involve only equalities, but functions are okay, and there can be multiple equalities ANDed together.
+Conditions like <code>t1.x = t2.x</code>, or <code>LOWER(t1.x) = t2.x</code>, or <code>t1.x = t2.x AND t1.y = t2.y</code> can all be handled. Conditions
+like <code>t1.x &lt;&gt; t2.x</code> cannot currently be handled.</p>
+<p>Note that Druid SQL is less rigid than what native join datasources can handle. In cases where a SQL query does
+something that is not allowed as-is with a native join datasource, Druid SQL will generate a subquery. This can have
+a substantial effect on performance and scalability, so it is something to watch out for. Some examples of when the
+SQL layer will generate subqueries include:</p>
+<ul>
+<li><p>Joining a regular Druid table to itself, or to another regular Druid table. The native join datasource can accept
+a table on the left-hand side, but not the right, so a subquery is needed.</p></li>
+<li><p>Join conditions where the expressions on either side are of different types.</p></li>
+<li><p>Join conditions where the right-hand expression is not a direct column access.</p></li>
+</ul>
+<p>For more information about how Druid translates SQL to native queries, refer to the
+<a href="/docs/0.18.0/querying/sql.html#query-translation">Druid SQL</a> documentation.</p>
+<h4><a class="anchor" aria-hidden="true" id="joins-in-native-queries"></a><a href="#joins-in-native-queries" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 [...]
+<p>Native join datasources have the following properties. All are required.</p>
+<table>
+<thead>
+<tr><th>Field</th><th>Description</th></tr>
+</thead>
+<tbody>
+<tr><td><code>left</code></td><td>Left-hand datasource. Must be of type <code>table</code>, <code>join</code>, <code>lookup</code>, <code>query</code>, or <code>inline</code>. Placing another join as the left datasource allows you to join arbitrarily many datasources.</td></tr>
+<tr><td><code>right</code></td><td>Right-hand datasource. Must be of type <code>lookup</code>, <code>query</code>, or <code>inline</code>. Note that this is more rigid than what Druid SQL requires.</td></tr>
+<tr><td><code>rightPrefix</code></td><td>String prefix that will be applied to all columns from the right-hand datasource, to prevent them from colliding with columns from the left-hand datasource. Can be any string, so long as it is nonempty and is not be a prefix of the string <code>__time</code>. Any columns from the left-hand side that start with your <code>rightPrefix</code> will be shadowed. It is up to you to provide a prefix that will not shadow any important columns from the lef [...]
+<tr><td><code>condition</code></td><td><a href="/docs/0.18.0/misc/math-expr.html">Expression</a> that must be an equality where one side is an expression of the left-hand side, and the other side is a simple column reference to the right-hand side. Note that this is more rigid than what Druid SQL requires: here, the right-hand reference must be a simple column reference; in SQL it can be an expression.</td></tr>
+<tr><td><code>joinType</code></td><td><code>INNER</code> or <code>LEFT</code>.</td></tr>
+</tbody>
+</table>
+<h4><a class="anchor" aria-hidden="true" id="join-performance"></a><a href="#join-performance" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<p>Joins are a feature that can significantly affect performance of your queries. Some performance tips and notes:</p>
+<ol>
+<li>Joins are especially useful with <a href="#lookup">lookup datasources</a>, but in most cases, the
+<a href="sql.html#string-functions"><code>LOOKUP</code> function</a> performs better than a join. Consider using the <code>LOOKUP</code> function if
+it is appropriate for your use case.</li>
+<li>When using joins in Druid SQL, keep in mind that it can generate subqueries that you did not explicitly include in
+your queries. Refer to the <a href="/docs/0.18.0/querying/sql.html#query-translation">Druid SQL</a> documentation for more details about when this happens
+and how to detect it.</li>
+<li>One common reason for implicit subquery generation is if the types of the two halves of an equality do not match.
+For example, since lookup keys are always strings, the condition <code>druid.d JOIN lookup.l ON d.field = l.field</code> will
+perform best if <code>d.field</code> is a string.</li>
+<li>As of Druid 0.18.0, the join operator must evaluate the condition for each row. In the future, we expect
+to implement both early and deferred condition evaluation, which we expect to improve performance considerably for
+common use cases.</li>
+</ol>
+<h4><a class="anchor" aria-hidden="true" id="future-work-for-joins"></a><a href="#future-work-for-joins" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
+<p>Joins are an area of active development in Druid. The following features are missing today but may appear in
+future versions:</p>
+<ul>
+<li>Preloaded dimension tables that are wider than lookups (i.e. supporting more than a single key and single value).</li>
+<li>RIGHT OUTER and FULL OUTER joins. Currently, they are partially implemented. Queries will run but results will not
+always be correct.</li>
+<li>Performance-related optimizations as mentioned in the <a href="#join-performance">previous section</a>.</li>
+<li>Join algorithms other than broadcast hash-joins.</li>
+</ul>
+<h3><a class="anchor" aria-hidden="true" id="union"></a><a href="#union" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-13-tab-14" class="nav-link active" data-group="group_13" data-tab="tab-group-13-content-14">Native</div></div><div class="tab-content"><div id="tab-group-13-content-14" class="tab-pane active" data-group="group_13" tabindex="-1"><div><span><pre><code class="hljs css language-json">{<br />  <span class="hljs-attr">"queryType"</span>: <span class="hljs-string">"scan"</span>,<br />  <span class="hljs-attr">"dataSource"</span>: {<br  [...]
+</span></div></div></div></div>
+<p>Union datasources allow you to treat two or more table datasources as a single datasource. The datasources being unioned
+do not need to have identical schemas. If they do not fully match up, then columns that exist in one table but not
+another will be treated as if they contained all null values in the tables where they do not exist.</p>
+<p>Union datasources are not available in Druid SQL.</p>
+<p>Refer to the <a href="/docs/0.18.0/querying/query-execution.html#union">Query execution</a> documentation for more details on how union datasources
+are executed.</p>
+<h3><a class="anchor" aria-hidden="true" id="inline"></a><a href="#inline" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<div class="tabs"><div class="nav-tabs"><div id="tab-group-15-tab-16" class="nav-link active" data-group="group_15" data-tab="tab-group-15-content-16">Native</div></div><div class="tab-content"><div id="tab-group-15-content-16" class="tab-pane active" data-group="group_15" tabindex="-1"><div><span><pre><code class="hljs css language-json">{<br />  <span class="hljs-attr">"queryType"</span>: <span class="hljs-string">"scan"</span>,<br />  <span class="hljs-attr">"dataSource"</span>: {<br  [...]
+</span></div></div></div></div>
+<p>Inline datasources allow you to query a small amount of data that is embedded in the query itself. They are useful when
+you want to write a query on a small amount of data without loading it first. They are also useful as inputs into a
+<a href="#join">join</a>. Druid also uses them internally to handle subqueries that need to be inlined on the Broker. See the
+<a href="#query"><code>query</code> datasource</a> documentation for more details.</p>
+<p>There are two fields in an inline datasource: an array of <code>columnNames</code> and an array of <code>rows</code>. Each row is an array
+that must be exactly as long as the list of <code>columnNames</code>. The first element in each row corresponds to the first
+column in <code>columnNames</code>, and so on.</p>
+<p>Inline datasources are not available in Druid SQL.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/query-execution.html"><span class="arrow-prev">← </span><span>Query execution</span></a><a class="docs-next button" href="/docs/0.18.0/querying/joins.html"><span>Joins</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#datasource-type">Datasource type</a><ul class="toc-headings"><li><a href="#table"><code> [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/datasourcemetadataquery.html b/docs/0.18.0/querying/datasourcemetadataquery.html
index 5f5147a..2008199 100644
--- a/docs/0.18.0/querying/datasourcemetadataquery.html
+++ b/docs/0.18.0/querying/datasourcemetadataquery.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -77,6 +77,11 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes a query
+type that is only available in the native language.</p>
+</blockquote>
 <p>Data Source Metadata queries return metadata information for a dataSource.  These queries return information about:</p>
 <ul>
 <li>The timestamp of latest ingested event for the dataSource. This is the ingested event without any consideration of rollup.</li>
@@ -106,7 +111,7 @@
   }
 } ]
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/segmentmetadataquery.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">SegmentMetadata</span></a><a class="docs-next button" href="/docs/0.18.0/querying/searchquery.html"><span>Search</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="containe [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/segmentmetadataquery.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">SegmentMetadata</span></a><a class="docs-next button" href="/docs/0.18.0/querying/filters.html"><span>Filters</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"> [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/dimensionspecs.html b/docs/0.18.0/querying/dimensionspecs.html
index e7afa4c..b1995a8 100644
--- a/docs/0.18.0/querying/dimensionspecs.html
+++ b/docs/0.18.0/querying/dimensionspecs.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Transforming Dimension Values · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/dimensionspecs.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" conte [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Query dimensions · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/dimensionspecs.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.18.0" / [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/dimensionspecs.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Transforming Dimension Values</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/dimensionspecs.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Query dimensions</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -77,6 +77,12 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes the native
+language. For information about functions available in SQL, refer to the
+<a href="/docs/0.18.0/querying/sql.html#scalar-functions">SQL documentation</a>.</p>
+</blockquote>
 <p>The following JSON fields can be used in a query to operate on dimension values.</p>
 <h2><a class="anchor" aria-hidden="true" id="dimensionspec"></a><a href="#dimensionspec" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p><code>DimensionSpec</code>s define how dimension values get transformed prior to aggregation.</p>
@@ -194,7 +200,7 @@ entire pattern.</p>
 <pre><code class="hljs css language-json">{ <span class="hljs-attr">"type"</span> : <span class="hljs-string">"partial"</span>, <span class="hljs-attr">"expr"</span> : &lt;regular_expression&gt; }
 </code></pre>
 <h3><a class="anchor" aria-hidden="true" id="search-query-extraction-function"></a><a href="#search-query-extraction-function" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
-<p>Returns the dimension value unchanged if the given <a href="/docs/0.18.0/querying/searchqueryspec.html"><code>SearchQuerySpec</code></a>
+<p>Returns the dimension value unchanged if the given <a href="../querying/searchquery.html#searchqueryspec"><code>SearchQuerySpec</code></a>
 matches, otherwise returns null.</p>
 <pre><code class="hljs css language-json">{ <span class="hljs-attr">"type"</span> : <span class="hljs-string">"searchQuery"</span>, <span class="hljs-attr">"query"</span> : &lt;search_query_spec&gt; }
 </code></pre>
@@ -446,7 +452,7 @@ Optionally user can specify the language to use in order to perform upper or low
   <span class="hljs-attr">"offset"</span> : <span class="hljs-number">2</span>
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/datasource.html"><span class="arrow-prev">← </span><span>Datasources</span></a><a class="docs-next button" href="/docs/0.18.0/querying/filters.html"><span>Query Filters</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#dimensionspec">DimensionSpec</a><ul class="toc-headings"><li><a href="#default-dimensio [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/granularities.html"><span class="arrow-prev">← </span><span>Granularities</span></a><a class="docs-next button" href="/docs/0.18.0/querying/aggregations.html"><span>Aggregations</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#dimensionspec">DimensionSpec</a><ul class="toc-headings"><li><a href="#default [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/filters.html b/docs/0.18.0/querying/filters.html
index 61884ae..3c7e936 100644
--- a/docs/0.18.0/querying/filters.html
+++ b/docs/0.18.0/querying/filters.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Query Filters · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/filters.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.18.0" /><meta pro [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Query filters · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/filters.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.18.0" /><meta pro [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/filters.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Query Filters</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/filters.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Query filters</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -77,6 +77,12 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes the native
+language. For information about aggregators available in SQL, refer to the
+<a href="/docs/0.18.0/querying/sql.html#scalar-functions">SQL documentation</a>.</p>
+</blockquote>
 <p>A filter is a JSON object indicating which rows of data should be included in the computation for a query. It’s essentially the equivalent of the WHERE clause in SQL. Apache Druid supports the following types of filters.</p>
 <h3><a class="anchor" aria-hidden="true" id="selector-filter"></a><a href="#selector-filter" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
 <p>The simplest filter is a selector filter. The selector filter will match a specific dimension with a specific value. Selector filters can be used as the base filters for more complex Boolean expressions of filters.</p>
@@ -470,7 +476,7 @@ should be specified as if the timestamp values were strings.</p>
 <pre><code class="hljs css language-json">
 { <span class="hljs-attr">"type"</span> : <span class="hljs-string">"true"</span> }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/dimensionspecs.html"><span class="arrow-prev">← </span><span>Transforming Dimension Values</span></a><a class="docs-next button" href="/docs/0.18.0/querying/granularities.html"><span>Aggregation Granularity</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#column-types">Column types</a><ul class="toc-head [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/datasourcemetadataquery.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">DatasourceMetadata</span></a><a class="docs-next button" href="/docs/0.18.0/querying/granularities.html"><span>Granularities</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#column-types">Column types</a> [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/granularities.html b/docs/0.18.0/querying/granularities.html
index 0ee4d68..d9a3d20 100644
--- a/docs/0.18.0/querying/granularities.html
+++ b/docs/0.18.0/querying/granularities.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Aggregation Granularity · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/granularities.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.1 [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Query granularities · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/granularities.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.18.0" [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/granularities.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Aggregation Granularity</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/granularities.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Query granularities</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -77,6 +77,12 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes the native
+language. For information about time functions available in SQL, refer to the
+<a href="/docs/0.18.0/querying/sql.html#time-functions">SQL documentation</a>.</p>
+</blockquote>
 <p>The granularity field determines how data gets bucketed across the time dimension, or how it gets aggregated by hour, day, minute, etc.</p>
 <p>It can be specified either as a string for simple granularities or as an object for arbitrary granularities.</p>
 <h3><a class="anchor" aria-hidden="true" id="simple-granularities"></a><a href="#simple-granularities" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
@@ -411,7 +417,7 @@ In this case, Row <code>{&quot;timestamp&quot;: &quot;2013-09-02T23:32:45Z&quot;
 are not in the same bucket.</p>
 <h4><a class="anchor" aria-hidden="true" id="supported-time-zones"></a><a href="#supported-time-zones" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
 <p>Timezone support is provided by the <a href="http://www.joda.org">Joda Time library</a>, which uses the standard IANA time zones. See the <a href="http://joda-time.sourceforge.net/timezones.html">Joda Time supported timezones</a>.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/filters.html"><span class="arrow-prev">← </span><span>Query Filters</span></a><a class="docs-next button" href="/docs/0.18.0/querying/having.html"><span class="function-name-prevnext">Filter groupBy query results</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="contai [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/filters.html"><span class="arrow-prev">← </span><span>Filters</span></a><a class="docs-next button" href="/docs/0.18.0/querying/dimensionspecs.html"><span>Dimensions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center"><p><a href="/tech [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/groupbyquery.html b/docs/0.18.0/querying/groupbyquery.html
index 8223568..acf7958 100644
--- a/docs/0.18.0/querying/groupbyquery.html
+++ b/docs/0.18.0/querying/groupbyquery.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -77,6 +77,12 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes a query
+type in the native language. For information about when Druid SQL will use this query type, refer to the
+<a href="/docs/0.18.0/querying/sql.html#query-types">SQL documentation</a>.</p>
+</blockquote>
 <p>These types of Apache Druid queries take a groupBy query object and return an array of JSON objects where each object represents a
 grouping asked for by the query.</p>
 <blockquote>
diff --git a/docs/0.18.0/querying/having.html b/docs/0.18.0/querying/having.html
index a6c4c00..d33e0b7 100644
--- a/docs/0.18.0/querying/having.html
+++ b/docs/0.18.0/querying/having.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Filter groupBy query results · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/having.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.18. [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Having filters (groupBy) · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/having.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.18.0" / [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/having.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Filter groupBy query results</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/having.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Having filters (groupBy)</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -77,6 +77,12 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes the native
+language. For information about functions available in SQL, refer to the
+<a href="/docs/0.18.0/querying/sql.html#scalar-functions">SQL documentation</a>.</p>
+</blockquote>
 <p>A having clause is a JSON object identifying which rows from a groupBy query should be returned, by specifying conditions on aggregated values.</p>
 <p>It is essentially the equivalent of the HAVING clause in SQL.</p>
 <p>Apache Druid supports the following types of having clauses.</p>
@@ -259,7 +265,7 @@ The grammar for a <code>dimSelector</code> filter is as follows:</p>
         }
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/granularities.html"><span class="arrow-prev">← </span><span>Aggregation Granularity</span></a><a class="docs-next button" href="/docs/0.18.0/querying/hll-old.html"><span class="function-name-prevnext">Cardinality/HyperUnique aggregators</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="fo [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/misc/math-expr.html"><span class="arrow-prev">← </span><span>Expressions</span></a><a class="docs-next button" href="/docs/0.18.0/querying/limitspec.html"><span class="function-name-prevnext">Sorting and limiting (groupBy)</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="conta [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/hll-old.html b/docs/0.18.0/querying/hll-old.html
index c3c0cfb..2b0bae6 100644
--- a/docs/0.18.0/querying/hll-old.html
+++ b/docs/0.18.0/querying/hll-old.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -163,7 +163,7 @@ The &quot;isInputHyperUnique&quot; field only affects ingestion-time behavior, a
 <p>The HyperLogLog algorithm generates decimal estimates with some error. &quot;round&quot; can be set to true to round off estimated
 values to whole numbers. Note that even with rounding, the cardinality is still an estimate. The &quot;round&quot; field only
 affects query-time behavior, and is ignored at ingestion-time.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/having.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">Filter groupBy query results</span></a><a class="docs-next button" href="/docs/0.18.0/querying/limitspec.html"><span class="function-name-prevnext">Sort groupBy query results</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/development/extensions-contrib/graphite.html"><span class="arrow-prev">← </span><span>Graphite Emitter</span></a><a class="docs-next button" href="/docs/0.18.0/querying/select-query.html"><span>Select</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#cardinality-aggregator">Cardinality aggregator</a><ul class="toc [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/joins.html b/docs/0.18.0/querying/joins.html
index 1bca1c5..2554f82 100644
--- a/docs/0.18.0/querying/joins.html
+++ b/docs/0.18.0/querying/joins.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -77,34 +77,24 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>Apache Druid has limited support for joins through <a href="/docs/0.18.0/querying/lookups.html">query-time lookups</a>. The common use case of
-query-time lookups is to replace one dimension value (e.g. a String ID) with another value (e.g. a human-readable String value). This is similar to a star-schema join.</p>
-<p>Druid does not yet have full support for joins. Although Druid’s storage format would allow for the implementation
-of joins (there is no loss of fidelity for columns included as dimensions), full support for joins have not yet been implemented yet
-for the following reasons:</p>
+<p>Druid has two features related to joining of data:</p>
 <ol>
-<li>Scaling join queries has been, in our professional experience,
-a constant bottleneck of working with distributed databases.</li>
-<li>The incremental gains in functionality are perceived to be
-of less value than the anticipated problems with managing
-highly concurrent, join-heavy workloads.</li>
+<li><a href="/docs/0.18.0/querying/datasource.html#join">Join</a> operators. These are available using a <a href="/docs/0.18.0/querying/datasource.html#join">join datasource</a> in native
+queries, or using the <a href="/docs/0.18.0/querying/sql.html#query-syntax">JOIN operator</a> in Druid SQL. Refer to the
+<a href="/docs/0.18.0/querying/datasource.html#join">join datasource</a> documentation for information about how joins work in Druid.</li>
+<li><a href="/docs/0.18.0/querying/lookups.html">Query-time lookups</a>, simple key-to-value mappings. These are preloaded on all servers that are involved
+in queries and can be accessed with or without an explicit join operator. Refer to the <a href="/docs/0.18.0/querying/lookups.html">lookups</a>
+documentation for more details.</li>
 </ol>
-<p>A join query is essentially the merging of two or more streams of data based on a shared set of keys. The primary
-high-level strategies for join queries we are aware of are a hash-based strategy or a
-sorted-merge strategy. The hash-based strategy requires that all but
-one data set be available as something that looks like a hash table,
-a lookup operation is then performed on this hash table for every
-row in the “primary” stream. The sorted-merge strategy assumes
-that each stream is sorted by the join key and thus allows for the incremental
-joining of the streams. Each of these strategies, however,
-requires the materialization of some number of the streams either in
-sorted order or in a hash table form.</p>
-<p>When all sides of the join are significantly large tables (&gt; 1 billion
-records), materializing the pre-join streams requires complex
-distributed memory management. The complexity of the memory
-management is only amplified by the fact that we are targeting highly
-concurrent, multi-tenant workloads.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/lookups.html"><span class="arrow-prev">← </span><span>Lookups</span></a><a class="docs-next button" href="/docs/0.18.0/querying/multitenancy.html"><span>Multitenancy considerations</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center"><p [...]
+<p>Whenever possible, for best performance it is good to avoid joins at query time. Often this can be accomplished by
+joining data before it is loaded into Druid. However, there are situations where joins or lookups are the best solution
+available despite the performance overhead, including:</p>
+<ul>
+<li>The fact-to-dimension (star and snowflake schema) case: you need to change dimension values after initial ingestion,
+and aren't able to reingest to do this. In this case, you can use lookups for your dimension tables.</li>
+<li>Your workload requires joins or filters on subqueries.</li>
+</ul>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/datasource.html"><span class="arrow-prev">← </span><span>Datasources</span></a><a class="docs-next button" href="/docs/0.18.0/querying/lookups.html"><span>Lookups</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-center"><p><a href="/technol [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/limitspec.html b/docs/0.18.0/querying/limitspec.html
index f9435e8..b17d4ce 100644
--- a/docs/0.18.0/querying/limitspec.html
+++ b/docs/0.18.0/querying/limitspec.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Sort groupBy query results · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/limitspec.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.18 [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Sorting and limiting (groupBy) · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/limitspec.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content=" [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/limitspec.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Sort groupBy query results</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/limitspec.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Sorting and limiting (groupBy)</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -77,6 +77,11 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes the native
+language. For information about sorting in SQL, refer to the <a href="/docs/0.18.0/querying/sql.html#order-by">SQL documentation</a>.</p>
+</blockquote>
 <p>The limitSpec field provides the functionality to sort and limit the set of results from a groupBy query. If you group by a single dimension and are ordering by a single metric, we highly recommend using <a href="/docs/0.18.0/querying/topnquery.html">TopN Queries</a> instead. The performance will be substantially better. Available options are:</p>
 <h3><a class="anchor" aria-hidden="true" id="defaultlimitspec"></a><a href="#defaultlimitspec" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>The default limit spec takes a limit and the list of columns to do an orderBy operation over. The grammar is:</p>
@@ -96,7 +101,7 @@
 </code></pre>
 <p>If only the dimension is provided (as a JSON string), the default order-by is ascending with lexicographic sorting.</p>
 <p>See <a href="/docs/0.18.0/querying/sorting-orders.html">Sorting Orders</a> for more information on the sorting orders specified by &quot;dimensionOrder&quot;.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/hll-old.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">Cardinality/HyperUnique aggregators</span></a><a class="docs-next button" href="/docs/0.18.0/querying/post-aggregations.html"><span>Post-Aggregations</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="foot [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/having.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">Having filters (groupBy)</span></a><a class="docs-next button" href="/docs/0.18.0/querying/topnmetricspec.html"><span class="function-name-prevnext">Sorting (topN)</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-foo [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/lookups.html b/docs/0.18.0/querying/lookups.html
index 89ffc21..09040cf 100644
--- a/docs/0.18.0/querying/lookups.html
+++ b/docs/0.18.0/querying/lookups.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -95,24 +95,38 @@ particular app-id changes, and you issue a query with a lookup to store the app-
 it will return the current account manager for that app-id REGARDLESS of the time range over which you query.</p>
 <p>If you require data time range sensitive lookups, such a use case is not currently supported dynamically at query time,
 and such data belongs in the raw denormalized data for use in Druid.</p>
-<p>Very small lookups (count of keys on the order of a few dozen to a few hundred) can be passed at query time as a &quot;map&quot;
-lookup as per <a href="/docs/0.18.0/querying/dimensionspecs.html">dimension specs</a>.</p>
+<p>Lookups are generally preloaded in-memory on all servers. But very small lookups (on the order of a few dozen to a few
+hundred entries) can also be passed inline in native queries time using the &quot;map&quot; lookup type. Refer to the
+<a href="/docs/0.18.0/querying/dimensionspecs.html">dimension specs</a> documentation for details.</p>
 <p>Other lookup types are available as extensions, including:</p>
 <ul>
 <li>Globally cached lookups from local files, remote URIs, or JDBC through <a href="/docs/0.18.0/development/extensions-core/lookups-cached-global.html">lookups-cached-global</a>.</li>
 <li>Globally cached lookups from a Kafka topic through <a href="/docs/0.18.0/development/extensions-core/kafka-extraction-namespace.html">kafka-extraction-namespace</a>.</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="query-syntax"></a><a href="#query-syntax" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
-<p>In <a href="sql.html">Druid SQL</a>, lookups can be queried using the <code>LOOKUP</code> function, for example:</p>
-<pre><code class="hljs"><span class="hljs-keyword">SELECT</span> LOOKUP(<span class="hljs-built_in">column_name</span>, <span class="hljs-string">'lookup-name'</span>), COUNT(*) <span class="hljs-keyword">FROM</span> datasource <span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> <span class="hljs-number">1</span>
+<p>In <a href="sql.html">Druid SQL</a>, lookups can be queried using the <a href="/docs/0.18.0/querying/sql.html#string-functions"><code>LOOKUP</code> function</a>, for example:</p>
+<pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span>
+  LOOKUP(<span class="hljs-keyword">store</span>, <span class="hljs-string">'store_to_country'</span>) <span class="hljs-keyword">AS</span> country,
+  <span class="hljs-keyword">SUM</span>(revenue)
+<span class="hljs-keyword">FROM</span> sales
+<span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> <span class="hljs-number">1</span>
+</code></pre>
+<p>They can also be queried using the <a href="/docs/0.18.0/querying/datasource.html#join">JOIN operator</a>:</p>
+<pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span>
+  store_to_country.v <span class="hljs-keyword">AS</span> country,
+  <span class="hljs-keyword">SUM</span>(sales.revenue) <span class="hljs-keyword">AS</span> country_revenue
+<span class="hljs-keyword">FROM</span>
+  sales
+  <span class="hljs-keyword">INNER</span> <span class="hljs-keyword">JOIN</span> lookup.store_to_country <span class="hljs-keyword">ON</span> sales.store = store_to_country.k
+<span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> <span class="hljs-number">1</span>
 </code></pre>
 <p>In native queries, lookups can be queried with <a href="dimensionspecs.html">dimension specs or extraction functions</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="query-execution"></a><a href="#query-execution" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>When executing an aggregation query involving lookups, Druid can decide to apply lookups either while scanning and
-aggregating rows, or to apply them after aggregation is complete. It is more efficient to apply lookups after
-aggregation is complete, so Druid will do this if it can. Druid decides this by checking if the lookup is marked
-as &quot;injective&quot; or not. In general, you should set this property for any lookup that is naturally one-to-one, to allow
-Druid to run your queries as fast as possible.</p>
+<p>When executing an aggregation query involving lookup functions (like the SQL <a href="/docs/0.18.0/querying/sql.html#string-functions"><code>LOOKUP</code> function</a>,
+Druid can decide to apply them while scanning and aggregating rows, or to apply them after aggregation is complete. It
+is more efficient to apply lookups after aggregation is complete, so Druid will do this if it can. Druid decides this
+by checking if the lookup is marked as &quot;injective&quot; or not. In general, you should set this property for any lookup that
+is naturally one-to-one, to allow Druid to run your queries as fast as possible.</p>
 <p>Injective lookups should include <em>all</em> possible keys that may show up in your dataset, and should also map all keys to
 <em>unique values</em>. This matters because non-injective lookups may map different keys to the same value, which must be
 accounted for during aggregation, lest query results contain two result values that should have been aggregated into
@@ -129,6 +143,11 @@ one.</p>
 </code></pre>
 <p>To tell Druid that your lookup is injective, you must specify <code>&quot;injective&quot; : true</code> in the lookup configuration. Druid
 will not detect this automatically.</p>
+<blockquote>
+<p>Currently, the injective lookup optimization is not triggered when lookups are inputs to a
+<a href="/docs/0.18.0/querying/datasource.html#join">join datasource</a>. It is only used when lookup functions are used directly, without the join
+operator.</p>
+</blockquote>
 <h2><a class="anchor" aria-hidden="true" id="dynamic-configuration"></a><a href="#dynamic-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <blockquote>
 <p>Dynamic lookup configuration is an <a href="/docs/0.18.0/development/experimental.html">experimental</a> feature. Static
@@ -434,7 +453,7 @@ The return value will be the json representation of the factory.</p>
 <p>Overall druid cluster lookups configuration is persisted in metadata store and also individual lookup processes optionally persist a snapshot of loaded lookups on disk.
 If upgrading from druid version 0.10.0 to 0.10.1, then migration for all persisted metadata is handled automatically.
 If downgrading from 0.10.1 to 0.9.0 then lookups updates done via Coordinator while 0.10.1 was running, would be lost.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/multi-value-dimensions.html"><span class="arrow-prev">← </span><span>Multi-value dimensions</span></a><a class="docs-next button" href="/docs/0.18.0/querying/joins.html"><span>Joins</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#query-syntax">Query Syntax</a></li><li><a href="#query-execution">Query Ex [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/joins.html"><span class="arrow-prev">← </span><span>Joins</span></a><a class="docs-next button" href="/docs/0.18.0/querying/multi-value-dimensions.html"><span>Multi-value dimensions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#query-syntax">Query Syntax</a></li><li><a href="#query-execution">Query Ex [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/multi-value-dimensions.html b/docs/0.18.0/querying/multi-value-dimensions.html
index fe8ff53..63da759 100644
--- a/docs/0.18.0/querying/multi-value-dimensions.html
+++ b/docs/0.18.0/querying/multi-value-dimensions.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -359,7 +359,7 @@ in the query below.</p>
 <p>Note that, for groupBy queries, you could get similar result with a <a href="having.html">having spec</a> but using a filtered
 dimensionSpec is much more efficient because that gets applied at the lowest level in the query processing pipeline.
 Having specs are applied at the outermost level of groupBy query processing.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/select-query.html"><span class="arrow-prev">← </span><span>Select</span></a><a class="docs-next button" href="/docs/0.18.0/querying/lookups.html"><span>Lookups</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#querying-multi-value-dimensions">Querying multi-value dimensions</a><ul class="toc-headings"><li [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/lookups.html"><span class="arrow-prev">← </span><span>Lookups</span></a><a class="docs-next button" href="/docs/0.18.0/querying/multitenancy.html"><span>Multitenancy</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#querying-multi-value-dimensions">Querying multi-value dimensions</a><ul class="toc-heading [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/multitenancy.html b/docs/0.18.0/querying/multitenancy.html
index 0abb4f1..a619c6a 100644
--- a/docs/0.18.0/querying/multitenancy.html
+++ b/docs/0.18.0/querying/multitenancy.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -131,7 +131,7 @@ slow (download or reporting style queries) can be de-prioritized and more intera
 <p>Broker processes can also be dedicated to a given tier. For example, one set of Broker processes can be dedicated to fast interactive queries,
 and a second set of Broker processes can be dedicated to slower reporting queries. Druid also provides a <a href="/docs/0.18.0/design/router.html">Router</a>
 process that can route queries to different Brokers based on various query parameters (datasource, interval, etc.).</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/joins.html"><span class="arrow-prev">← </span><span>Joins</span></a><a class="docs-next button" href="/docs/0.18.0/querying/caching.html"><span>Query caching</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#shared-datasources-or-datasource-per-tenant">Shared datasources or datasource-per-tenant?</a></li> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/multi-value-dimensions.html"><span class="arrow-prev">← </span><span>Multi-value dimensions</span></a><a class="docs-next button" href="/docs/0.18.0/querying/caching.html"><span>Query caching</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#shared-datasources-or-datasource-per-tenant">Shared datasources  [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/post-aggregations.html b/docs/0.18.0/querying/post-aggregations.html
index af0aae6..64e60a2 100644
--- a/docs/0.18.0/querying/post-aggregations.html
+++ b/docs/0.18.0/querying/post-aggregations.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Post-Aggregations · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/post-aggregations.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.18. [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Post-aggregations · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/post-aggregations.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.18. [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/post-aggregations.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Post-Aggregations</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/post-aggregations.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Post-aggregations</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -77,6 +77,12 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes the native
+language. For information about functions available in SQL, refer to the
+<a href="/docs/0.18.0/querying/sql.html#aggregation-functions">SQL documentation</a>.</p>
+</blockquote>
 <p>Post-aggregations are specifications of processing that should happen on aggregated values as they come out of Apache Druid. If you include a post aggregation as part of a query, make sure to include all aggregators the post-aggregator requires.</p>
 <p>There are several post-aggregators available.</p>
 <h3><a class="anchor" aria-hidden="true" id="arithmetic-post-aggregator"></a><a href="#arithmetic-post-aggregator" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H [...]
@@ -224,7 +230,7 @@ cause the user-specified rounding behavior to get lost and default to &quot;no r
   ...
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/limitspec.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">Sort groupBy query results</span></a><a class="docs-next button" href="/docs/0.18.0/querying/query-context.html"><span>Query context</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example-usage">Example Usage</a></li [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/aggregations.html"><span class="arrow-prev">← </span><span>Aggregations</span></a><a class="docs-next button" href="/docs/0.18.0/misc/math-expr.html"><span>Expressions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example-usage">Example Usage</a></li></ul></nav></div><footer class="nav-footer druid-fo [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/query-context.html b/docs/0.18.0/querying/query-context.html
index a5228e1..6e99c64 100644
--- a/docs/0.18.0/querying/query-context.html
+++ b/docs/0.18.0/querying/query-context.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -77,7 +77,15 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
-<p>The query context is used for various query configuration parameters. The following parameters apply to all queries.</p>
+<h2><a class="anchor" aria-hidden="true" id="general-parameters"></a><a href="#general-parameters" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22- [...]
+<p>The query context is used for various query configuration parameters. Query context parameters can be specified in
+the following ways:</p>
+<ul>
+<li>For <a href="/docs/0.18.0/querying/sql.html#client-apis">Druid SQL</a>, context parameters are provided either as a JSON object named <code>context</code> to the
+HTTP POST API, or as properties to the JDBC connection.</li>
+<li>For <a href="/docs/0.18.0/querying/querying.html">native queries</a>, context parameters are provided as a JSON object named <code>context</code>.</li>
+</ul>
+<p>These parameters apply to all query types.</p>
 <table>
 <thead>
 <tr><th>property</th><th>default</th><th>description</th></tr>
@@ -103,8 +111,9 @@
 <tr><td>parallelMergeSmallBatchRows</td><td><code>druid.processing.merge.task.smallBatchNumRows</code></td><td>Size of result batches to operate on in ForkJoinPool merge tasks for parallel result merging on the Broker. See <a href="../configuration/index.html#broker">Broker configuration</a> for more details.</td></tr>
 </tbody>
 </table>
+<h2><a class="anchor" aria-hidden="true" id="query-type-specific-parameters"></a><a href="#query-type-specific-parameters" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 1 [...]
 <p>In addition, some query types offer context parameters specific to that query type.</p>
-<h3><a class="anchor" aria-hidden="true" id="topn-queries"></a><a href="#topn-queries" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<h3><a class="anchor" aria-hidden="true" id="topn"></a><a href="#topn" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
 <table>
 <thead>
 <tr><th>property</th><th>default</th><th>description</th></tr>
@@ -113,7 +122,7 @@
 <tr><td>minTopNThreshold</td><td><code>1000</code></td><td>The top minTopNThreshold local results from each segment are returned for merging to determine the global topN.</td></tr>
 </tbody>
 </table>
-<h3><a class="anchor" aria-hidden="true" id="timeseries-queries"></a><a href="#timeseries-queries" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22- [...]
+<h3><a class="anchor" aria-hidden="true" id="timeseries"></a><a href="#timeseries" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
 <table>
 <thead>
 <tr><th>property</th><th>default</th><th>description</th></tr>
@@ -122,9 +131,10 @@
 <tr><td>skipEmptyBuckets</td><td><code>false</code></td><td>Disable timeseries zero-filling behavior, so only buckets with results will be returned.</td></tr>
 </tbody>
 </table>
-<h3><a class="anchor" aria-hidden="true" id="groupby-queries"></a><a href="#groupby-queries" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>See <a href="/docs/0.18.0/querying/groupbyquery.html#advanced-configurations">GroupBy query context</a>.</p>
-<h3><a class="anchor" aria-hidden="true" id="vectorizable-queries"></a><a href="#vectorizable-queries" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<h3><a class="anchor" aria-hidden="true" id="groupby"></a><a href="#groupby" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
+<p>See the list of <a href="/docs/0.18.0/querying/groupbyquery.html#advanced-configurations">GroupBy query context</a> parameters available on the groupBy
+query page.</p>
+<h2><a class="anchor" aria-hidden="true" id="vectorization-parameters"></a><a href="#vectorization-parameters" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-. [...]
 <p>The GroupBy and Timeseries query types can run in <em>vectorized</em> mode, which speeds up query execution by processing
 batches of rows at a time. Not all queries can be vectorized. In particular, vectorization currently has the following
 requirements:</p>
@@ -139,10 +149,11 @@ include &quot;selector&quot;, &quot;bound&quot;, &quot;in&quot;, &quot;like&quot
 <li>For GroupBy: No multi-value dimensions.</li>
 <li>For Timeseries: No &quot;descending&quot; order.</li>
 <li>Only immutable segments (not real-time).</li>
+<li>Only <a href="datasource.html#table">table datasources</a> (not joins, subqueries, lookups, or inline datasources).</li>
 </ul>
 <p>Other query types (like TopN, Scan, Select, and Search) ignore the &quot;vectorize&quot; parameter, and will execute without
 vectorization. These query types will ignore the &quot;vectorize&quot; parameter even if it is set to <code>&quot;force&quot;</code>.</p>
-<p>Vectorization is an alpha-quality feature as of Druid 0.18.0. We heartily welcome any feedback and testing
+<p>Vectorization is a beta-quality feature as of Druid 0.18.0. We heartily welcome any feedback and testing
 from the community as we work to battle-test it.</p>
 <table>
 <thead>
@@ -153,7 +164,7 @@ from the community as we work to battle-test it.</p>
 <tr><td>vectorSize</td><td><code>512</code></td><td>Sets the row batching size for a particular query. This will override <code>druid.query.vectorSize</code> if it's set.</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/post-aggregations.html"><span class="arrow-prev">← </span><span>Post-Aggregations</span></a><a class="docs-next button" href="/docs/0.18.0/querying/searchqueryspec.html"><span>Refining search queries</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div cla [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/caching.html"><span class="arrow-prev">← </span><span>Query caching</span></a><a class="docs-next button" href="/docs/0.18.0/querying/timeseriesquery.html"><span>Timeseries</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#general-parameters">General parameters</a></li><li><a href="#query-type-specific-pa [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/query-execution.html b/docs/0.18.0/querying/query-execution.html
new file mode 100644
index 0000000..3a8454f
--- /dev/null
+++ b/docs/0.18.0/querying/query-execution.html
@@ -0,0 +1,167 @@
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Query execution · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/query-execution.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.18.0" / [...]
+              window.dataLayer = window.dataLayer || [];
+              function gtag(){dataLayer.push(arguments); }
+              gtag('js', new Date());
+              gtag('config', 'UA-131010415-1');
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            var coll = document.getElementsByClassName('collapsible');
+            var checkActiveCategory = true;
+            for (var i = 0; i < coll.length; i++) {
+              var links = coll[i].nextElementSibling.getElementsByTagName('*');
+              if (checkActiveCategory){
+                for (var j = 0; j < links.length; j++) {
+                  if (links[j].classList.contains('navListItemActive')){
+                    coll[i].nextElementSibling.classList.toggle('hide');
+                    coll[i].childNodes[1].classList.toggle('rotate');
+                    checkActiveCategory = false;
+                    break;
+                  }
+                }
+              }
+
+              coll[i].addEventListener('click', function() {
+                var arrow = this.childNodes[1];
+                arrow.classList.toggle('rotate');
+                var content = this.nextElementSibling;
+                content.classList.toggle('hide');
+              });
+            }
+
+            document.addEventListener('DOMContentLoaded', function() {
+              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
+              createToggler('#tocToggler', 'body', 'tocActive');
+
+              var headings = document.querySelector('.toc-headings');
+              headings && headings.addEventListener('click', function(event) {
+                var el = event.target;
+                while(el !== headings){
+                  if (el.tagName === 'A') {
+                    document.body.classList.remove('tocActive');
+                    break;
+                  } else{
+                    el = el.parentNode;
+                  }
+                }
+              }, false);
+
+              function createToggler(togglerSelector, targetSelector, className) {
+                var toggler = document.querySelector(togglerSelector);
+                var target = document.querySelector(targetSelector);
+
+                if (!toggler) {
+                  return;
+                }
+
+                toggler.onclick = function(event) {
+                  event.preventDefault();
+
+                  target.classList.toggle(className);
+                };
+              }
+            });
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/query-execution.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Query execution</h1></header><article><div><span><!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+<blockquote>
+<p>This document describes how Druid executes <a href="/docs/0.18.0/querying/querying.html">native queries</a>, but since <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> queries
+are translated to native queries, this document applies to the SQL runtime as well. Refer to the SQL
+<a href="/docs/0.18.0/querying/sql.html#query-translation">Query translation</a> page for information about how SQL queries are translated to native
+queries.</p>
+</blockquote>
+<p>Druid's approach to query execution varies depending on the kind of <a href="/docs/0.18.0/querying/datasource.html">datasource</a> you are querying.</p>
+<h2><a class="anchor" aria-hidden="true" id="datasource-type"></a><a href="#datasource-type" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<h3><a class="anchor" aria-hidden="true" id="table"></a><a href="#table" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p>Queries that operate directly on <a href="/docs/0.18.0/querying/datasource.html#table">table datasources</a> are executed using a scatter-gather approach
+led by the Broker process. The process looks like this:</p>
+<ol>
+<li><p>The Broker identifies which <a href="/docs/0.18.0/design/segments.html">segments</a> are relevant to the query based on the <code>&quot;intervals&quot;</code>
+parameter. Segments are always partitioned by time, so any segment whose interval overlaps the query interval is
+potentially relevant.</p></li>
+<li><p>The Broker may additionally further prune the segment list based on the <code>&quot;filter&quot;</code>, if the input data was partitioned
+by range using the <a href="/docs/0.18.0/ingestion/native-batch.html#partitionsspec"><code>single_dim</code> partitionsSpec</a>, and if the filter matches
+the dimension used for partitioning.</p></li>
+<li><p>The Broker, having pruned the list of segments for the query, forwards the query to data servers (like Historicals
+and tasks running on MiddleManagers) that are currently serving those segments.</p></li>
+<li><p>For all query types except <a href="/docs/0.18.0/querying/scan-query.html">Scan</a>, data servers process each segment in parallel and generate partial
+results for each segment. The specific processing that is done depends on the query type. These partial results may be
+cached if <a href="/docs/0.18.0/querying/caching.html">query caching</a> is enabled. For Scan queries, segments are processed in order by a single thread,
+and results are not cached.</p></li>
+<li><p>The Broker receives partial results from each data server, merges them into the final result set, and returns them
+to the caller. For Timeseries and Scan queries, and for GroupBy queries where there is no sorting, the Broker is able to
+do this in a streaming fashion. Otherwise, the Broker fully computes the result set before returning anything.</p></li>
+</ol>
+<h3><a class="anchor" aria-hidden="true" id="lookup"></a><a href="#lookup" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>Queries that operate directly on <a href="/docs/0.18.0/querying/datasource.html#lookup">lookup datasources</a> (without a join) are executed on the Broker
+that received the query, using its local copy of the lookup. All registered lookup tables are preloaded in-memory on the
+Broker. The query runs single-threaded.</p>
+<h3><a class="anchor" aria-hidden="true" id="query"></a><a href="#query" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p><a href="/docs/0.18.0/querying/datasource.html#query">Query datasources</a> are subqueries. Each subquery is executed as if it was its own query and
+the results are brought back to the Broker. Then, the Broker continues on with the rest of the query as if the subquery
+was replaced with an inline datasource.</p>
+<p>In most cases, subquery results are fully buffered in memory on the Broker before the rest of the query proceeds,
+meaning subqueries execute sequentially. The total number of rows buffered across all subqueries of a given query
+in this way cannot exceed the <a href="/docs/0.18.0/configuration/index.html"><code>druid.server.http.maxSubqueryRows</code> property</a>.</p>
+<p>There is one exception: if the outer query and all subqueries are the <a href="/docs/0.18.0/querying/groupbyquery.html">groupBy</a> type, then subquery
+results can be processed in a streaming fashion and the <code>druid.server.http.maxSubqueryRows</code> limit does not apply.</p>
+<h3><a class="anchor" aria-hidden="true" id="join"></a><a href="#join" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p><a href="/docs/0.18.0/querying/datasource.html#join">Join datasources</a> are handled using a broadcast hash-join approach.</p>
+<ol>
+<li><p>The Broker executes any subqueries that are inputs the join, as described in the <a href="#query">query</a> section, and
+replaces them with inline datasources.</p></li>
+<li><p>The Broker flattens a join tree, if present, into a &quot;base&quot; datasource (the bottom-leftmost one) and other leaf
+datasources (the rest).</p></li>
+<li><p>Query execution proceeds using the same structure that the base datasource would use on its own. If the base
+datasource is a <a href="#table">table</a>, segments are pruned based on <code>&quot;intervals&quot;</code> as usual, and the query is executed on the
+cluster by forwarding it to all relevant data servers in parallel. If the base datasource is a <a href="#lookup">lookup</a> or
+<a href="#inline">inline</a> datasource (including an inline datasource that was the result of inlining a subquery), the query is
+executed on the Broker itself. The base query cannot be a union, because unions are not currently supported as inputs to
+a join.</p></li>
+<li><p>Before beginning to process the base datasource, the server(s) that will execute the query first inspect all the
+non-base leaf datasources to determine if a new hash table needs to be built for the upcoming hash join. Currently,
+lookups do not require new hash tables to be built (because they are preloaded), but inline datasources do.</p></li>
+<li><p>Query execution proceeds again using the same structure that the base datasource would use on its own, with one
+addition: while processing the base datasource, Druid servers will use the hash tables built from the other join inputs
+to produce the join result row-by-row, and query engines will operate on the joined rows rather than the base rows.</p></li>
+</ol>
+<h3><a class="anchor" aria-hidden="true" id="union"></a><a href="#union" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p>Queries that operate directly on <a href="/docs/0.18.0/querying/datasource.html#union">union datasources</a> are split up on the Broker into a separate
+query for each table that is part of the union. Each of these queries runs separately, and the Broker merges their
+results together.</p>
+<h3><a class="anchor" aria-hidden="true" id="inline"></a><a href="#inline" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
+<p>Queries that operate directly on <a href="/docs/0.18.0/querying/datasource.html#inline">inline datasources</a> are executed on the Broker that received the
+query. The query runs single-threaded.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/querying.html"><span class="arrow-prev">← </span><span>Native queries</span></a><a class="docs-next button" href="/docs/0.18.0/querying/datasource.html"><span>Datasources</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#datasource-type">Datasource type</a><ul class="toc-headings"><li><a href="#table"><co [...]
+                document.addEventListener('keyup', function(e) {
+                  if (e.target !== document.body) {
+                    return;
+                  }
+                  // keyCode for '/' (slash)
+                  if (e.keyCode === 191) {
+                    const search = document.getElementById('search_input_react');
+                    search && search.focus();
+                  }
+                });
+              </script><script>
+              var search = docsearch({
+                
+                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
+                indexName: 'apache_druid',
+                inputSelector: '#search_input_react',
+                algoliaOptions: {"facetFilters":["language:en","version:0.18.0"]}
+              });
+            </script></body></html>
\ No newline at end of file
diff --git a/docs/0.18.0/querying/querying.html b/docs/0.18.0/querying/querying.html
index 617cb20..2f55a80 100644
--- a/docs/0.18.0/querying/querying.html
+++ b/docs/0.18.0/querying/querying.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -78,8 +78,10 @@
   ~ under the License.
   -->
 <blockquote>
-<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and native queries. Druid SQL
-queries are planned into native queries. This document describes the native query language.</p>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes the
+native query language. For information about how Druid SQL chooses which native query types to use when
+it runs a SQL query, refer to the <a href="/docs/0.18.0/querying/sql.html#query-types">SQL documentation</a>.</p>
 </blockquote>
 <p>Native queries in Druid are JSON objects and are typically issued to the Broker or Router processes. Queries can be
 posted like this:</p>
@@ -112,14 +114,15 @@ specific processes.</p>
 <li><a href="/docs/0.18.0/querying/segmentmetadataquery.html">SegmentMetadata</a></li>
 <li><a href="/docs/0.18.0/querying/datasourcemetadataquery.html">DatasourceMetadata</a></li>
 </ul>
-<h3><a class="anchor" aria-hidden="true" id="search-queries"></a><a href="#search-queries" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<h3><a class="anchor" aria-hidden="true" id="other-queries"></a><a href="#other-queries" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <ul>
+<li><a href="/docs/0.18.0/querying/scan-query.html">Scan</a></li>
 <li><a href="/docs/0.18.0/querying/searchquery.html">Search</a></li>
 </ul>
-<h2><a class="anchor" aria-hidden="true" id="which-query-should-i-use"></a><a href="#which-query-should-i-use" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-. [...]
-<p>Where possible, we recommend using <a href="">Timeseries</a> and <a href="">TopN</a> queries instead of <a href="">GroupBy</a>. GroupBy is the most flexible Druid query, but also has the poorest performance.
-Timeseries are significantly faster than groupBy queries for aggregations that don't require grouping over dimensions. For grouping and sorting over a single dimension,
-topN queries are much more optimized than groupBys.</p>
+<h2><a class="anchor" aria-hidden="true" id="which-query-type-should-i-use"></a><a href="#which-query-type-should-i-use" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12  [...]
+<p>For aggregation queries, if more than one would satisfy your needs, we generally recommend using Timeseries or TopN
+whenever possible, as they are specifically optimized for their use cases. If neither is a good fit, you should use
+the GroupBy query, which is the most flexible.</p>
 <h2><a class="anchor" aria-hidden="true" id="query-cancellation"></a><a href="#query-cancellation" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22- [...]
 <p>Queries can be cancelled explicitly using their unique identifier.  If the
 query identifier is set at the time of query, or is otherwise known, the following
@@ -166,7 +169,7 @@ endpoint can be used on the Broker or Router to cancel the query.</p>
 <tr><td><code>Unknown exception</code></td><td>Some other exception occurred. Check errorMessage and errorClass for details, although keep in mind that the contents of those fields are free-form and may change from release to release.</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/sql.html"><span class="arrow-prev">← </span><span>Druid SQL</span></a><a class="docs-next button" href="/docs/0.18.0/querying/timeseriesquery.html"><span>Timeseries</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#available-queries">Available queries</a><ul class="toc-headings"><li><a href="#aggregation- [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/sql.html"><span class="arrow-prev">← </span><span>Druid SQL</span></a><a class="docs-next button" href="/docs/0.18.0/querying/query-execution.html"><span>Query execution</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#available-queries">Available queries</a><ul class="toc-headings"><li><a href="#aggrega [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/scan-query.html b/docs/0.18.0/querying/scan-query.html
index d825a3c..cbb7ce0 100644
--- a/docs/0.18.0/querying/scan-query.html
+++ b/docs/0.18.0/querying/scan-query.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -77,6 +77,12 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes a query
+type in the native language. For information about when Druid SQL will use this query type, refer to the
+<a href="/docs/0.18.0/querying/sql.html#query-types">SQL documentation</a>.</p>
+</blockquote>
 <p>The Scan query returns raw Apache Druid rows in streaming mode.</p>
 <p>In addition to straightforward usage where a Scan query is issued to the Broker, the Scan query can also be issued
 directly to Historical processes or streaming ingestion tasks. This can be useful if you want to retrieve large
@@ -262,7 +268,7 @@ is complete.</p>
   <span class="hljs-attr">"maxSegmentPartitionsOrderedInMemory"</span>: <span class="hljs-number">100</span>
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/groupbyquery.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">GroupBy</span></a><a class="docs-next button" href="/docs/0.18.0/querying/timeboundaryquery.html"><span class="function-name-prevnext">TimeBoundary</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example-results">E [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/groupbyquery.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">GroupBy</span></a><a class="docs-next button" href="/docs/0.18.0/querying/searchquery.html"><span>Search</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#example-results">Example results</a></li><li><a href="#time-o [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/searchquery.html b/docs/0.18.0/querying/searchquery.html
index d15f52f..b09c6d3 100644
--- a/docs/0.18.0/querying/searchquery.html
+++ b/docs/0.18.0/querying/searchquery.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -77,6 +77,11 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes a query
+type that is only available in the native language.</p>
+</blockquote>
 <p>A search query returns dimension values that match the search specification.</p>
 <pre><code class="hljs css language-json">{
   <span class="hljs-attr">"queryType"</span>: <span class="hljs-string">"search"</span>,
@@ -111,7 +116,7 @@
 <tr><td>limit</td><td>Defines the maximum number per Historical process (parsed as int) of search results to return.</td><td>no (default to 1000)</td></tr>
 <tr><td>intervals</td><td>A JSON Object representing ISO-8601 Intervals. This defines the time ranges to run the query over.</td><td>yes</td></tr>
 <tr><td>searchDimensions</td><td>The dimensions to run the search over. Excluding this means the search is run over all dimensions.</td><td>no</td></tr>
-<tr><td>query</td><td>See <a href="/docs/0.18.0/querying/searchqueryspec.html">SearchQuerySpec</a>.</td><td>yes</td></tr>
+<tr><td>query</td><td>See <a href="#searchqueryspec">SearchQuerySpec</a>.</td><td>yes</td></tr>
 <tr><td>sort</td><td>An object specifying how the results of the search should be sorted.<br/>Possible types are &quot;lexicographic&quot; (the default sort), &quot;alphanumeric&quot;, &quot;strlen&quot;, and &quot;numeric&quot;.<br/>See <a href="/docs/0.18.0/querying/sorting-orders.html">Sorting Orders</a> for more details.</td><td>no</td></tr>
 <tr><td>context</td><td>See <a href="/docs/0.18.0/querying/query-context.html">Context</a></td><td>no</td></tr>
 </tbody>
@@ -190,7 +195,38 @@ of cost estimation.</p></li>
 <tr><td><code>searchStrategy</code></td><td>Overrides the value of <code>druid.query.search.searchStrategy</code> for this query.</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/datasourcemetadataquery.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">DatasourceMetadata</span></a><a class="docs-next button" href="/docs/0.18.0/querying/select-query.html"><span>Select</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#server-configuration">Server configura [...]
+<h2><a class="anchor" aria-hidden="true" id="searchqueryspec"></a><a href="#searchqueryspec" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<h3><a class="anchor" aria-hidden="true" id="insensitive_contains"></a><a href="#insensitive_contains" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p>If any part of a dimension value contains the value specified in this search query spec, regardless of case, a &quot;match&quot; occurs. The grammar is:</p>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"type"</span>  : <span class="hljs-string">"insensitive_contains"</span>,
+  <span class="hljs-attr">"value"</span> : <span class="hljs-string">"some_value"</span>
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="fragment"></a><a href="#fragment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
+<p>If any part of a dimension value contains all of the values specified in this search query spec, regardless of case by default, a &quot;match&quot; occurs. The grammar is:</p>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"type"</span> : <span class="hljs-string">"fragment"</span>,
+  <span class="hljs-attr">"case_sensitive"</span> : <span class="hljs-literal">false</span>,
+  <span class="hljs-attr">"values"</span> : [<span class="hljs-string">"fragment1"</span>, <span class="hljs-string">"fragment2"</span>]
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="contains"></a><a href="#contains" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
+<p>If any part of a dimension value contains the value specified in this search query spec, a &quot;match&quot; occurs. The grammar is:</p>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"type"</span>  : <span class="hljs-string">"contains"</span>,
+  <span class="hljs-attr">"case_sensitive"</span> : <span class="hljs-literal">true</span>,
+  <span class="hljs-attr">"value"</span> : <span class="hljs-string">"some_value"</span>
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="regex"></a><a href="#regex" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p>If any part of a dimension value contains the pattern specified in this search query spec, a &quot;match&quot; occurs. The grammar is:</p>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"type"</span>  : <span class="hljs-string">"regex"</span>,
+  <span class="hljs-attr">"pattern"</span> : <span class="hljs-string">"some_pattern"</span>
+}
+</code></pre>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/scan-query.html"><span class="arrow-prev">← </span><span>Scan</span></a><a class="docs-next button" href="/docs/0.18.0/querying/timeboundaryquery.html"><span class="function-name-prevnext">TimeBoundary</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#server-configuration">Server configuration</a></li><li [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/searchqueryspec.html b/docs/0.18.0/querying/searchqueryspec.html
index 88d657d..6f4eca9 100644
--- a/docs/0.18.0/querying/searchqueryspec.html
+++ b/docs/0.18.0/querying/searchqueryspec.html
@@ -1,130 +1,8 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Refining search queries · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/searchqueryspec.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0 [...]
-              window.dataLayer = window.dataLayer || [];
-              function gtag(){dataLayer.push(arguments); }
-              gtag('js', new Date());
-              gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
-            var coll = document.getElementsByClassName('collapsible');
-            var checkActiveCategory = true;
-            for (var i = 0; i < coll.length; i++) {
-              var links = coll[i].nextElementSibling.getElementsByTagName('*');
-              if (checkActiveCategory){
-                for (var j = 0; j < links.length; j++) {
-                  if (links[j].classList.contains('navListItemActive')){
-                    coll[i].nextElementSibling.classList.toggle('hide');
-                    coll[i].childNodes[1].classList.toggle('rotate');
-                    checkActiveCategory = false;
-                    break;
-                  }
-                }
-              }
-
-              coll[i].addEventListener('click', function() {
-                var arrow = this.childNodes[1];
-                arrow.classList.toggle('rotate');
-                var content = this.nextElementSibling;
-                content.classList.toggle('hide');
-              });
-            }
-
-            document.addEventListener('DOMContentLoaded', function() {
-              createToggler('#navToggler', '#docsNav', 'docsSliderActive');
-              createToggler('#tocToggler', 'body', 'tocActive');
-
-              var headings = document.querySelector('.toc-headings');
-              headings && headings.addEventListener('click', function(event) {
-                var el = event.target;
-                while(el !== headings){
-                  if (el.tagName === 'A') {
-                    document.body.classList.remove('tocActive');
-                    break;
-                  } else{
-                    el = el.parentNode;
-                  }
-                }
-              }, false);
-
-              function createToggler(togglerSelector, targetSelector, className) {
-                var toggler = document.querySelector(togglerSelector);
-                var target = document.querySelector(targetSelector);
-
-                if (!toggler) {
-                  return;
-                }
-
-                toggler.onclick = function(event) {
-                  event.preventDefault();
-
-                  target.classList.toggle(className);
-                };
-              }
-            });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/searchqueryspec.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Refining search queries</h1></header><article><div><span><!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-<p>Search query specs define how a &quot;match&quot; is defined between a search value and a dimension value. The available search query specs are:</p>
-<h2><a class="anchor" aria-hidden="true" id="insensitivecontainssearchqueryspec"></a><a href="#insensitivecontainssearchqueryspec" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5 [...]
-<p>If any part of a dimension value contains the value specified in this search query spec, regardless of case, a &quot;match&quot; occurs. The grammar is:</p>
-<pre><code class="hljs css language-json">{
-  <span class="hljs-attr">"type"</span>  : <span class="hljs-string">"insensitive_contains"</span>,
-  <span class="hljs-attr">"value"</span> : <span class="hljs-string">"some_value"</span>
-}
-</code></pre>
-<h2><a class="anchor" aria-hidden="true" id="fragmentsearchqueryspec"></a><a href="#fragmentsearchqueryspec" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 [...]
-<p>If any part of a dimension value contains all of the values specified in this search query spec, regardless of case by default, a &quot;match&quot; occurs. The grammar is:</p>
-<pre><code class="hljs css language-json">{
-  <span class="hljs-attr">"type"</span> : <span class="hljs-string">"fragment"</span>,
-  <span class="hljs-attr">"case_sensitive"</span> : <span class="hljs-literal">false</span>,
-  <span class="hljs-attr">"values"</span> : [<span class="hljs-string">"fragment1"</span>, <span class="hljs-string">"fragment2"</span>]
-}
-</code></pre>
-<h2><a class="anchor" aria-hidden="true" id="containssearchqueryspec"></a><a href="#containssearchqueryspec" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 [...]
-<p>If any part of a dimension value contains the value specified in this search query spec, a &quot;match&quot; occurs. The grammar is:</p>
-<pre><code class="hljs css language-json">{
-  <span class="hljs-attr">"type"</span>  : <span class="hljs-string">"contains"</span>,
-  <span class="hljs-attr">"case_sensitive"</span> : <span class="hljs-literal">true</span>,
-  <span class="hljs-attr">"value"</span> : <span class="hljs-string">"some_value"</span>
-}
-</code></pre>
-<h2><a class="anchor" aria-hidden="true" id="regexsearchqueryspec"></a><a href="#regexsearchqueryspec" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
-<p>If any part of a dimension value contains the pattern specified in this search query spec, a &quot;match&quot; occurs. The grammar is:</p>
-<pre><code class="hljs css language-json">{
-  <span class="hljs-attr">"type"</span>  : <span class="hljs-string">"regex"</span>,
-  <span class="hljs-attr">"pattern"</span> : <span class="hljs-string">"some_pattern"</span>
-}
-</code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/query-context.html"><span class="arrow-prev">← </span><span>Query context</span></a><a class="docs-next button" href="/docs/0.18.0/querying/sorting-orders.html"><span>Sorting Orders</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#insensitivecontainssearchqueryspec">InsensitiveContainsSearchQuerySpec</a> [...]
-                document.addEventListener('keyup', function(e) {
-                  if (e.target !== document.body) {
-                    return;
-                  }
-                  // keyCode for '/' (slash)
-                  if (e.keyCode === 191) {
-                    const search = document.getElementById('search_input_react');
-                    search && search.focus();
-                  }
-                });
-              </script><script>
-              var search = docsearch({
-                
-                apiKey: '2de99082a9f38e49dfaa059bbe4c901d',
-                indexName: 'apache_druid',
-                inputSelector: '#search_input_react',
-                algoliaOptions: {"facetFilters":["language:en","version:0.18.0"]}
-              });
-            </script></body></html>
\ No newline at end of file
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Redirecting...</title>
+<link rel="canonical" href="searchquery.html">
+<meta http-equiv="refresh" content="0; url=searchquery.html">
+<h1>Redirecting...</h1>
+<a href="searchquery.html">Click here if you are not redirected.</a>
+<script>location="searchquery.html"</script>
diff --git a/docs/0.18.0/querying/segmentmetadataquery.html b/docs/0.18.0/querying/segmentmetadataquery.html
index fbd72ec..8f50629 100644
--- a/docs/0.18.0/querying/segmentmetadataquery.html
+++ b/docs/0.18.0/querying/segmentmetadataquery.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -77,6 +77,12 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes a query
+type that is only available in the native language. However, Druid SQL contains similar functionality in
+its <a href="/docs/0.18.0/querying/sql.html#metadata-tables">metadata tables</a>.</p>
+</blockquote>
 <p>Segment metadata queries return per-segment information about:</p>
 <ul>
 <li>Cardinality of all columns in the segment</li>
diff --git a/docs/0.18.0/querying/select-query.html b/docs/0.18.0/querying/select-query.html
index be8cfda..95fd801 100644
--- a/docs/0.18.0/querying/select-query.html
+++ b/docs/0.18.0/querying/select-query.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -79,7 +79,7 @@
   -->
 <p>Older versions of Apache Druid included a Select query type. Since Druid 0.17.0, it has been removed and replaced by the <a href="/docs/0.18.0/querying/scan-query.html">Scan query</a>, which offers improved memory usage and performance. This solves issues that users had with Select queries causing Druid to run out of memory or slow down.</p>
 <p>The Scan query has a different syntax, but supports many of the features of the Select query, including time ordering and limiting. Scan does not include the Select query's pagination feature; however, in many cases pagination is unnecessary with Scan due to its ability to return a virtually unlimited number of results in one call.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/searchquery.html"><span class="arrow-prev">← </span><span>Search</span></a><a class="docs-next button" href="/docs/0.18.0/querying/multi-value-dimensions.html"><span>Multi-value dimensions</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"><div class="text-ce [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/hll-old.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">Cardinality/HyperUnique aggregators</span></a><a class="docs-next button" href="/docs/0.18.0/development/extensions-contrib/influx.html"><span class="function-name-prevnext">InfluxDB Line Protocol Parser</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav> [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/sorting-orders.html b/docs/0.18.0/querying/sorting-orders.html
index b433100..16891ea 100644
--- a/docs/0.18.0/querying/sorting-orders.html
+++ b/docs/0.18.0/querying/sorting-orders.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Sorting Orders · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/sorting-orders.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.18.0" />< [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>String comparators · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/sorting-orders.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.18.0" [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/sorting-orders.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Sorting Orders</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/sorting-orders.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">String comparators</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -77,6 +77,12 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes the native
+language. For information about functions available in SQL, refer to the
+<a href="/docs/0.18.0/querying/sql.html#scalar-functions">SQL documentation</a>.</p>
+</blockquote>
 <p>These sorting orders are used by the <a href="/docs/0.18.0/querying/topnmetricspec.html">TopNMetricSpec</a>, <a href="/docs/0.18.0/querying/searchquery.html">SearchQuery</a>, GroupByQuery's <a href="/docs/0.18.0/querying/limitspec.html">LimitSpec</a>, and <a href="./filters.html#bound-filter">BoundFilter</a>.</p>
 <h2><a class="anchor" aria-hidden="true" id="lexicographic"></a><a href="#lexicographic" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>Sorts values by converting Strings to their UTF-8 byte array representations and comparing lexicographically, byte-by-byte.</p>
@@ -97,7 +103,7 @@
 <h2><a class="anchor" aria-hidden="true" id="version"></a><a href="#version" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
 <p>Sorts values as versions, e.g.: &quot;10.0 sorts after 9.0&quot;, &quot;1.0.0-SNAPSHOT sorts after 1.0.0&quot;.</p>
 <p>See <a href="https://maven.apache.org/ref/3.6.0/maven-artifact/apidocs/org/apache/maven/artifact/versioning/ComparableVersion.html">https://maven.apache.org/ref/3.6.0/maven-artifact/apidocs/org/apache/maven/artifact/versioning/ComparableVersion.html</a> for more details on how this ordering sorts values.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/searchqueryspec.html"><span class="arrow-prev">← </span><span>Refining search queries</span></a><a class="docs-next button" href="/docs/0.18.0/querying/topnmetricspec.html"><span class="function-name-prevnext">TopNMetricSpec</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#lexicographic">Lexicographic</a [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/topnmetricspec.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">Sorting (topN)</span></a><a class="docs-next button" href="/docs/0.18.0/querying/virtual-columns.html"><span>Virtual columns</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#lexicographic">Lexicographic</a></li><l [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/sql.html b/docs/0.18.0/querying/sql.html
index e55d469..7335e9a 100644
--- a/docs/0.18.0/querying/sql.html
+++ b/docs/0.18.0/querying/sql.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -84,31 +84,20 @@
   patterns in this markdown file and parse it to TypeScript file for web console
 -->
 <blockquote>
-<p>Apache Druid supports two query languages: Druid SQL and <a href="/docs/0.18.0/querying/querying.html">native queries</a>, which
-SQL queries are planned into, and which end users can also issue directly. This document describes the SQL language.</p>
+<p>Apache Druid supports two query languages: Druid SQL and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes the SQL language.</p>
 </blockquote>
 <p>Druid SQL is a built-in SQL layer and an alternative to Druid's native JSON-based query language, and is powered by a
 parser and planner based on <a href="https://calcite.apache.org/">Apache Calcite</a>. Druid SQL translates SQL into native Druid
 queries on the query Broker (the first process you query), which are then passed down to data processes as native Druid
-queries. Other than the (slight) overhead of translating SQL on the Broker, there isn't an additional performance
-penalty versus native queries.</p>
+queries. Other than the (slight) overhead of <a href="#query-translation">translating</a> SQL on the Broker, there isn't an
+additional performance penalty versus native queries.</p>
 <h2><a class="anchor" aria-hidden="true" id="query-syntax"></a><a href="#query-syntax" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
-<p>Each Druid datasource appears as a table in the &quot;druid&quot; schema. This is also the default schema, so Druid datasources
-can be referenced as either <code>druid.dataSourceName</code> or simply <code>dataSourceName</code>.</p>
-<p>Identifiers like datasource and column names can optionally be quoted using double quotes. To escape a double quote
-inside an identifier, use another double quote, like <code>&quot;My &quot;&quot;very own&quot;&quot; identifier&quot;</code>. All identifiers are case-sensitive
-and no implicit case conversions are performed.</p>
-<p>Literal strings should be quoted with single quotes, like <code>'foo'</code>. Literal strings with Unicode escapes can be written
-like <code>U&amp;'fo\00F6'</code>, where character codes in hex are prefixed by a backslash. Literal numbers can be written in forms
-like <code>100</code> (denoting an integer), <code>100.0</code> (denoting a floating point value), or <code>1.0e5</code> (scientific notation). Literal
-timestamps can be written like <code>TIMESTAMP '2000-01-01 00:00:00'</code>. Literal intervals, used for time arithmetic, can be
-written like <code>INTERVAL '1' HOUR</code>, <code>INTERVAL '1 02:03' DAY TO MINUTE</code>, <code>INTERVAL '1-2' YEAR TO MONTH</code>, and so on.</p>
-<p>Druid SQL supports dynamic parameters in question mark (<code>?</code>) syntax, where parameters are bound to the <code>?</code> placeholders at execution time. To use dynamic parameters, replace any literal in the query with a <code>?</code> character and ensure that corresponding parameter values are provided at execution time. Parameters are bound to the placeholders in the order in which they are passed.</p>
 <p>Druid SQL supports SELECT queries with the following structure:</p>
 <pre><code class="hljs">[ <span class="hljs-keyword">EXPLAIN</span> PLAN <span class="hljs-keyword">FOR</span> ]
 [ <span class="hljs-keyword">WITH</span> tableName [ ( column1, column2, ... ) ] <span class="hljs-keyword">AS</span> ( <span class="hljs-keyword">query</span> ) ]
 <span class="hljs-keyword">SELECT</span> [ <span class="hljs-keyword">ALL</span> | <span class="hljs-keyword">DISTINCT</span> ] { * | exprs }
-<span class="hljs-keyword">FROM</span> <span class="hljs-keyword">table</span>
+<span class="hljs-keyword">FROM</span> { &lt;<span class="hljs-keyword">table</span>&gt; | (&lt;subquery&gt;) | &lt;o1&gt; [ <span class="hljs-keyword">INNER</span> | <span class="hljs-keyword">LEFT</span> ] <span class="hljs-keyword">JOIN</span> &lt;o2&gt; <span class="hljs-keyword">ON</span> condition }
 [ <span class="hljs-keyword">WHERE</span> expr ]
 [ <span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> [ exprs | <span class="hljs-keyword">GROUPING</span> <span class="hljs-keyword">SETS</span> ( (exprs), ... ) | <span class="hljs-keyword">ROLLUP</span> (exprs) | <span class="hljs-keyword">CUBE</span> (exprs) ] ]
 [ <span class="hljs-keyword">HAVING</span> expr ]
@@ -116,15 +105,29 @@ written like <code>INTERVAL '1' HOUR</code>, <code>INTERVAL '1 02:03' DAY TO MIN
 [ <span class="hljs-keyword">LIMIT</span> <span class="hljs-keyword">limit</span> ]
 [ <span class="hljs-keyword">UNION</span> <span class="hljs-keyword">ALL</span> &lt;another <span class="hljs-keyword">query</span>&gt; ]
 </code></pre>
-<p>The FROM clause refers to either a Druid datasource, like <code>druid.foo</code>, an <a href="#metadata-tables">INFORMATION_SCHEMA table</a>, a
-subquery, or a common-table-expression provided in the WITH clause. If the FROM clause references a subquery or a
-common-table-expression, and both levels of queries are aggregations and they cannot be combined into a single level of
-aggregation, the overall query will be executed as a <a href="groupbyquery.html#nested-groupbys">nested GroupBy</a>.</p>
+<h3><a class="anchor" aria-hidden="true" id="from"></a><a href="#from" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6 [...]
+<p>The FROM clause can refer to any of the following:</p>
+<ul>
+<li><a href="datasource.html#table">Table datasources</a> from the <code>druid</code> schema. This is the default schema, so Druid table
+datasources can be referenced as either <code>druid.dataSourceName</code> or simply <code>dataSourceName</code>.</li>
+<li><a href="datasource.html#lookup">Lookups</a> from the <code>lookup</code> schema, for example <code>lookup.countries</code>. Note that lookups can
+also be queried using the <a href="#string-functions"><code>LOOKUP</code> function</a>.</li>
+<li><a href="datasource.html#query">Subqueries</a>.</li>
+<li><a href="datasource.html#join">Joins</a> between anything in this list, except between native datasources (table, lookup,
+query) and system tables. The join condition must be an equality between expressions from the left- and right-hand side
+of the join.</li>
+<li><a href="#metadata-tables">Metadata tables</a> from the <code>INFORMATION_SCHEMA</code> or <code>sys</code> schemas. Unlike the other options for the
+FROM clause, metadata tables are not considered datasources. They exist only in the SQL layer.</li>
+</ul>
+<p>For more information about table, lookup, query, and join datasources, refer to the <a href="datasource.html">Datasources</a>
+documentation.</p>
+<h3><a class="anchor" aria-hidden="true" id="where"></a><a href="#where" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>The WHERE clause refers to columns in the FROM table, and will be translated to <a href="filters.html">native filters</a>. The
 WHERE clause can also reference a subquery, like <code>WHERE col1 IN (SELECT foo FROM ...)</code>. Queries like this are executed
-as <a href="#query-execution">semi-joins</a>, described below.</p>
+as a join on the subquery, described below in the <a href="#subqueries">Query translation</a> section.</p>
+<h3><a class="anchor" aria-hidden="true" id="group-by"></a><a href="#group-by" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
 <p>The GROUP BY clause refers to columns in the FROM table. Using GROUP BY, DISTINCT, or any aggregation functions will
-trigger an aggregation query using one of Druid's <a href="#query-execution">three native aggregation query types</a>. GROUP BY
+trigger an aggregation query using one of Druid's <a href="#query-types">three native aggregation query types</a>. GROUP BY
 can refer to an expression or a select clause ordinal position (like <code>GROUP BY 2</code> to group by the second selected
 column).</p>
 <p>The GROUP BY clause can also refer to multiple grouping sets in three ways. The most flexible is GROUP BY GROUPING SETS,
@@ -141,22 +144,46 @@ Grouping columns that do not apply to a particular row will contain <code>NULL</
 <p>When using GROUP BY GROUPING SETS, GROUP BY ROLLUP, or GROUP BY CUBE, be aware that results may not be generated in the
 order that you specify your grouping sets in the query. If you need results to be generated in a particular order, use
 the ORDER BY clause.</p>
+<h3><a class="anchor" aria-hidden="true" id="having"></a><a href="#having" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2. [...]
 <p>The HAVING clause refers to columns that are present after execution of GROUP BY. It can be used to filter on either
 grouping expressions or aggregated values. It can only be used together with GROUP BY.</p>
+<h3><a class="anchor" aria-hidden="true" id="order-by"></a><a href="#order-by" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
 <p>The ORDER BY clause refers to columns that are present after execution of GROUP BY. It can be used to order the results
 based on either grouping expressions or aggregated values. ORDER BY can refer to an expression or a select clause
 ordinal position (like <code>ORDER BY 2</code> to order by the second selected column). For non-aggregation queries, ORDER BY
 can only order by the <code>__time</code> column. For aggregation queries, ORDER BY can order by any column.</p>
+<h3><a class="anchor" aria-hidden="true" id="limit"></a><a href="#limit" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
 <p>The LIMIT clause can be used to limit the number of rows returned. It can be used with any query type. It is pushed down
-to data processes for queries that run with the native TopN query type, but not the native GroupBy query type. Future
+to Data processes for queries that run with the native TopN query type, but not the native GroupBy query type. Future
 versions of Druid will support pushing down limits using the native GroupBy query type as well. If you notice that
 adding a limit doesn't change performance very much, then it's likely that Druid didn't push down the limit for your
 query.</p>
+<h3><a class="anchor" aria-hidden="true" id="union-all"></a><a href="#union-all" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
 <p>The &quot;UNION ALL&quot; operator can be used to fuse multiple queries together. Their results will be concatenated, and each
-query will run separately, back to back (not in parallel). Druid does not currently support &quot;UNION&quot; without &quot;ALL&quot;.</p>
-<p>Add &quot;EXPLAIN PLAN FOR&quot; to the beginning of any query to see how it would be run as a native Druid query. In this case,
-the query will not actually be executed.</p>
-<h2><a class="anchor" aria-hidden="true" id="data-types-and-casts"></a><a href="#data-types-and-casts" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+query will run separately, back to back (not in parallel). Druid does not currently support &quot;UNION&quot; without &quot;ALL&quot;.
+UNION ALL must appear at the very outer layer of a SQL query (it cannot appear in a subquery or in the FROM clause).</p>
+<p>Note that despite the similar name, UNION ALL is not the same thing as as <a href="/docs/0.18.0/querying/datasource.html#union">union datasource</a>.
+UNION ALL allows unioning the results of queries, whereas union datasources allow unioning tables.</p>
+<h3><a class="anchor" aria-hidden="true" id="explain-plan"></a><a href="#explain-plan" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
+<p>Add &quot;EXPLAIN PLAN FOR&quot; to the beginning of any query to get information about how it will be translated. In this case,
+the query will not actually be executed. Refer to the <a href="#query-translation">Query translation</a> documentation for help
+interpreting EXPLAIN PLAN output.</p>
+<h3><a class="anchor" aria-hidden="true" id="identifiers-and-literals"></a><a href="#identifiers-and-literals" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-. [...]
+<p>Identifiers like datasource and column names can optionally be quoted using double quotes. To escape a double quote
+inside an identifier, use another double quote, like <code>&quot;My &quot;&quot;very own&quot;&quot; identifier&quot;</code>. All identifiers are case-sensitive
+and no implicit case conversions are performed.</p>
+<p>Literal strings should be quoted with single quotes, like <code>'foo'</code>. Literal strings with Unicode escapes can be written
+like <code>U&amp;'fo\00F6'</code>, where character codes in hex are prefixed by a backslash. Literal numbers can be written in forms
+like <code>100</code> (denoting an integer), <code>100.0</code> (denoting a floating point value), or <code>1.0e5</code> (scientific notation). Literal
+timestamps can be written like <code>TIMESTAMP '2000-01-01 00:00:00'</code>. Literal intervals, used for time arithmetic, can be
+written like <code>INTERVAL '1' HOUR</code>, <code>INTERVAL '1 02:03' DAY TO MINUTE</code>, <code>INTERVAL '1-2' YEAR TO MONTH</code>, and so on.</p>
+<h3><a class="anchor" aria-hidden="true" id="dynamic-parameters"></a><a href="#dynamic-parameters" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22- [...]
+<p>Druid SQL supports dynamic parameters using question mark (<code>?</code>) syntax, where parameters are bound to <code>?</code> placeholders
+at execution time. To use dynamic parameters, replace any literal in the query with a <code>?</code> character and provide a
+corresponding parameter value when you execute the query. Parameters are bound to the placeholders in the order in
+which they are passed. Parameters are supported in both the <a href="#http-post">HTTP POST</a> and <a href="#jdbc">JDBC</a> APIs.</p>
+<h2><a class="anchor" aria-hidden="true" id="data-types"></a><a href="#data-types" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<h3><a class="anchor" aria-hidden="true" id="standard-types"></a><a href="#standard-types" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p>Druid natively supports five basic column types: &quot;long&quot; (64 bit signed int), &quot;float&quot; (32 bit float), &quot;double&quot; (64 bit
 float) &quot;string&quot; (UTF-8 encoded strings and string arrays), and &quot;complex&quot; (catch-all for more exotic data types like
 hyperUnique and approxHistogram columns).</p>
@@ -164,27 +191,7 @@ hyperUnique and approxHistogram columns).</p>
 milliseconds since 1970-01-01 00:00:00 UTC, not counting leap seconds. Therefore, timestamps in Druid do not carry any
 timezone information, but only carry information about the exact moment in time they represent. See the
 <a href="#time-functions">Time functions</a> section for more information about timestamp handling.</p>
-<h3><a class="anchor" aria-hidden="true" id="null-handling-modes"></a><a href="#null-handling-modes" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
-<p>By default Druid treats NULLs and empty strings interchangeably, rather than according to the SQL standard. As such,
-in this mode Druid SQL only has partial support for NULLs. For example, the expressions <code>col IS NULL</code> and <code>col = ''</code> are equivalent,
-and both will evaluate to true if <code>col</code> contains an empty string. Similarly, the expression <code>COALESCE(col1, col2)</code> will
-return <code>col2</code> if <code>col1</code> is an empty string. While the <code>COUNT(*)</code> aggregator counts all rows, the <code>COUNT(expr)</code>
-aggregator will count the number of rows where expr is neither null nor the empty string. String columns in Druid are
-NULLable. Numeric columns are NOT NULL; if you query a numeric column that is not present in all segments of your Druid
-datasource, then it will be treated as zero for rows from those segments.</p>
-<p>If <code>druid.generic.useDefaultValueForNull</code> is set to <code>false</code> <em>system-wide, at indexing time</em>, data
-will be stored in a manner that allows distinguishing empty strings from NULL values for string columns, and will allow NULL values to be stored for numeric columns. Druid SQL will generally operate more properly and the SQL optimizer will work best in this mode, however this does come at a cost. See the <a href="/docs/0.18.0/design/segments.html#sql-compatible-null-handling">segment documentation on SQL compatible null-handling</a> for more details.</p>
-<p>For mathematical operations, Druid SQL will use integer math if all operands involved in an expression are integers.
-Otherwise, Druid will switch to floating point math. You can force this to happen by casting one of your operands
-to FLOAT. At runtime, Druid may widen 32-bit floats to 64-bit for certain operators, like SUM aggregators.</p>
-<p>Druid <a href="multi-value-dimensions.html">multi-value string dimensions</a> will appear in the table schema as <code>VARCHAR</code> typed,
-and may be interacted with in expressions as such. Additionally, they can be treated as <code>ARRAY</code> 'like', via a handful of
-special multi-value operators. Expressions against multi-value string dimensions will apply the expression to all values
-of the row, however the caveat is that aggregations on these multi-value string columns will observe the native Druid
-multi-value aggregation behavior, which is equivalent to the <code>UNNEST</code> function available in many dialects.
-Refer to the documentation on <a href="multi-value-dimensions.html">multi-value string dimensions</a> and
-<a href="../misc/math-expr.html">Druid expressions documentation</a> for additional details.</p>
-<p>The following table describes how SQL types map onto Druid types during query runtime. Casts between two SQL types
+<p>The following table describes how Druid maps SQL types onto native types at query runtime. Casts between two SQL types
 that have the same Druid runtime type will have no effect, other than exceptions noted in the table. Casts between two
 SQL types that have different Druid runtime types will generate a runtime cast in Druid. If a value cannot be properly
 cast to another value, as in <code>CAST('foo' AS BIGINT)</code>, the runtime will substitute a default value. NULL values cast
@@ -196,7 +203,7 @@ converted to zeroes).</p>
 </thead>
 <tbody>
 <tr><td>CHAR</td><td>STRING</td><td><code>''</code></td><td></td></tr>
-<tr><td>VARCHAR</td><td>STRING</td><td><code>''</code></td><td>Druid STRING columns are reported as VARCHAR</td></tr>
+<tr><td>VARCHAR</td><td>STRING</td><td><code>''</code></td><td>Druid STRING columns are reported as VARCHAR. Can include <a href="#multi-value-strings">multi-value strings</a> as well.</td></tr>
 <tr><td>DECIMAL</td><td>DOUBLE</td><td><code>0.0</code></td><td>DECIMAL uses floating point, not fixed point math</td></tr>
 <tr><td>FLOAT</td><td>FLOAT</td><td><code>0.0</code></td><td>Druid FLOAT columns are reported as FLOAT</td></tr>
 <tr><td>REAL</td><td>DOUBLE</td><td><code>0.0</code></td><td></td></tr>
@@ -211,8 +218,29 @@ converted to zeroes).</p>
 <tr><td>OTHER</td><td>COMPLEX</td><td>none</td><td>May represent various Druid column types such as hyperUnique, approxHistogram, etc</td></tr>
 </tbody>
 </table>
-<h2><a class="anchor" aria-hidden="true" id="built-in-functions"></a><a href="#built-in-functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22- [...]
-<h3><a class="anchor" aria-hidden="true" id="aggregation-functions"></a><a href="#aggregation-functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
+<h3><a class="anchor" aria-hidden="true" id="multi-value-strings"></a><a href="#multi-value-strings" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.2 [...]
+<p>Druid's native type system allows strings to potentially have multiple values. These
+<a href="multi-value-dimensions.html">multi-value string dimensions</a> will be reported in SQL as <code>VARCHAR</code> typed, and can be
+syntactically used like any other VARCHAR. Regular string functions that refer to multi-value string dimensions will be
+applied to all values for each row individually. Multi-value string dimensions can also be treated as arrays via special
+<a href="#multi-value-string-functions">multi-value string functions</a>, which can perform powerful array-aware operations.</p>
+<p>Grouping by a multi-value expression will observe the native Druid multi-value aggregation behavior, which is similar to
+the <code>UNNEST</code> functionality available in some other SQL dialects. Refer to the documentation on
+<a href="multi-value-dimensions.html">multi-value string dimensions</a> for additional details.</p>
+<h3><a class="anchor" aria-hidden="true" id="null-values"></a><a href="#null-values" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<p>The <code>druid.generic.useDefaultValueForNull</code> <a href="../configuration/index.html#sql-compatible-null-handling">runtime property</a>
+controls Druid's NULL handling mode.</p>
+<p>In the default mode (<code>true</code>), Druid treats NULLs and empty strings interchangeably, rather than according to the SQL
+standard. In this mode Druid SQL only has partial support for NULLs. For example, the expressions <code>col IS NULL</code> and
+<code>col = ''</code> are equivalent, and both will evaluate to true if <code>col</code> contains an empty string. Similarly, the expression
+<code>COALESCE(col1, col2)</code> will return <code>col2</code> if <code>col1</code> is an empty string. While the <code>COUNT(*)</code> aggregator counts all rows,
+the <code>COUNT(expr)</code> aggregator will count the number of rows where expr is neither null nor the empty string. Numeric
+columns in this mode are not nullable; any null or missing values will be treated as zeroes.</p>
+<p>In SQL compatible mode (<code>false</code>), NULLs are treated more closely to the SQL standard. The property affects both storage
+and querying, so for best behavior, it should be set at both ingestion time and query time. There is some overhead
+associated with the ability to handle NULLs; see the <a href="/docs/0.18.0/design/segments.html#sql-compatible-null-handling">segment internals</a>
+documentation for more details.</p>
+<h2><a class="anchor" aria-hidden="true" id="aggregation-functions"></a><a href="#aggregation-functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2 [...]
 <p>Aggregation functions can appear in the SELECT clause of any query. Any aggregator can be filtered using syntax like
 <code>AGG(expr) FILTER(WHERE whereExpr)</code>. Filtered aggregators will only aggregate rows that match their filter. It's
 possible for two aggregators in the same SQL query to have different filters.</p>
@@ -255,8 +283,11 @@ possible for two aggregators in the same SQL query to have different filters.</p
 </tbody>
 </table>
 <p>For advice on choosing approximate aggregation functions, check out our <a href="aggregations.html#approx">approximate aggregations documentation</a>.</p>
+<h2><a class="anchor" aria-hidden="true" id="scalar-functions"></a><a href="#scalar-functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <h3><a class="anchor" aria-hidden="true" id="numeric-functions"></a><a href="#numeric-functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
-<p>Numeric functions will return 64 bit integers or 64 bit floats, depending on their inputs.</p>
+<p>For mathematical operations, Druid SQL will use integer math if all operands involved in an expression are integers.
+Otherwise, Druid will switch to floating point math. You can force this to happen by casting one of your operands
+to FLOAT. At runtime, Druid will widen 32-bit floats to 64-bit for most expressions.</p>
 <table>
 <thead>
 <tr><th>Function</th><th>Notes</th></tr>
@@ -305,7 +336,7 @@ possible for two aggregators in the same SQL query to have different filters.</p
 <tr><td><code>CHAR_LENGTH(expr)</code></td><td>Synonym for <code>LENGTH</code>.</td></tr>
 <tr><td><code>CHARACTER_LENGTH(expr)</code></td><td>Synonym for <code>LENGTH</code>.</td></tr>
 <tr><td><code>STRLEN(expr)</code></td><td>Synonym for <code>LENGTH</code>.</td></tr>
-<tr><td><code>LOOKUP(expr, lookupName)</code></td><td>Look up expr in a registered <a href="lookups.html">query-time lookup table</a>.</td></tr>
+<tr><td><code>LOOKUP(expr, lookupName)</code></td><td>Look up expr in a registered <a href="lookups.html">query-time lookup table</a>. Note that lookups can also be queried directly using the <a href="#from"><code>lookup</code> schema</a>.</td></tr>
 <tr><td><code>LOWER(expr)</code></td><td>Returns expr in all lowercase.</td></tr>
 <tr><td><code>PARSE_LONG(string[, radix])</code></td><td>Parses a string into a long (BIGINT) with the given radix, or 10 (decimal) if a radix is not provided.</td></tr>
 <tr><td><code>POSITION(needle IN haystack [FROM fromIndex])</code></td><td>Returns the index of needle within haystack, with indexes starting from 1. The search will begin at fromIndex, or 1 if fromIndex is not specified. If the needle is not found, returns 0.</td></tr>
@@ -420,40 +451,16 @@ argument should be a string formatted as an IPv4 address subnet in CIDR notation
 <tr><td><code>x IS NOT FALSE</code></td><td>True if x is not false.</td></tr>
 <tr><td><code>x IN (values)</code></td><td>True if x is one of the listed values.</td></tr>
 <tr><td><code>x NOT IN (values)</code></td><td>True if x is not one of the listed values.</td></tr>
-<tr><td><code>x IN (subquery)</code></td><td>True if x is returned by the subquery. See <a href="#query-execution">Query execution</a> above for details about how Druid SQL handles <code>IN (subquery)</code>.</td></tr>
-<tr><td><code>x NOT IN (subquery)</code></td><td>True if x is not returned by the subquery. See <a href="#query-execution">Query execution</a> for details about how Druid SQL handles <code>IN (subquery)</code>.</td></tr>
+<tr><td><code>x IN (subquery)</code></td><td>True if x is returned by the subquery. This will be translated into a join; see <a href="#query-translation">Query translation</a> for details.</td></tr>
+<tr><td><code>x NOT IN (subquery)</code></td><td>True if x is not returned by the subquery. This will be translated into a join; see <a href="#query-translation">Query translation</a> for details.</td></tr>
 <tr><td><code>x AND y</code></td><td>Boolean AND.</td></tr>
 <tr><td><code>x OR y</code></td><td>Boolean OR.</td></tr>
 <tr><td><code>NOT x</code></td><td>Boolean NOT.</td></tr>
 </tbody>
 </table>
-<h3><a class="anchor" aria-hidden="true" id="multi-value-string-functions"></a><a href="#multi-value-string-functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
-<p>All 'array' references in the multi-value string function documentation can refer to multi-value string columns or
-<code>ARRAY</code> literals.</p>
-<table>
-<thead>
-<tr><th>Function</th><th>Notes</th></tr>
-</thead>
-<tbody>
-<tr><td><code>ARRAY(expr1,expr ...)</code></td><td>constructs a SQL ARRAY literal from the expression arguments, using the type of the first argument as the output array type</td></tr>
-<tr><td><code>MV_LENGTH(arr)</code></td><td>returns length of array expression</td></tr>
-<tr><td><code>MV_OFFSET(arr,long)</code></td><td>returns the array element at the 0 based index supplied, or null for an out of range index</td></tr>
-<tr><td><code>MV_ORDINAL(arr,long)</code></td><td>returns the array element at the 1 based index supplied, or null for an out of range index</td></tr>
-<tr><td><code>MV_CONTAINS(arr,expr)</code></td><td>returns 1 if the array contains the element specified by expr, or contains all elements specified by expr if expr is an array, else 0</td></tr>
-<tr><td><code>MV_OVERLAP(arr1,arr2)</code></td><td>returns 1 if arr1 and arr2 have any elements in common, else 0</td></tr>
-<tr><td><code>MV_OFFSET_OF(arr,expr)</code></td><td>returns the 0 based index of the first occurrence of expr in the array, or <code>-1</code> or <code>null</code> if <code>druid.generic.useDefaultValueForNull=false</code> if no matching elements exist in the array.</td></tr>
-<tr><td><code>MV_ORDINAL_OF(arr,expr)</code></td><td>returns the 1 based index of the first occurrence of expr in the array, or <code>-1</code> or <code>null</code> if <code>druid.generic.useDefaultValueForNull=false</code> if no matching elements exist in the array.</td></tr>
-<tr><td><code>MV_PREPEND(expr,arr)</code></td><td>adds expr to arr at the beginning, the resulting array type determined by the type of the array</td></tr>
-<tr><td><code>MV_APPEND(arr1,expr)</code></td><td>appends expr to arr, the resulting array type determined by the type of the first array</td></tr>
-<tr><td><code>MV_CONCAT(arr1,arr2)</code></td><td>concatenates 2 arrays, the resulting array type determined by the type of the first array</td></tr>
-<tr><td><code>MV_SLICE(arr,start,end)</code></td><td>return the subarray of arr from the 0 based index start(inclusive) to end(exclusive), or <code>null</code>, if start is less than 0, greater than length of arr or less than end</td></tr>
-<tr><td><code>MV_TO_STRING(arr,str)</code></td><td>joins all elements of arr by the delimiter specified by str</td></tr>
-<tr><td><code>STRING_TO_MV(str1,str2)</code></td><td>splits str1 into an array on the delimiter specified by str2</td></tr>
-</tbody>
-</table>
-<h3><a class="anchor" aria-hidden="true" id="sketch-operators"></a><a href="#sketch-operators" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
+<h3><a class="anchor" aria-hidden="true" id="sketch-functions"></a><a href="#sketch-functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2. [...]
 <p>These functions operate on expressions or columns that return sketch objects.</p>
-<h4><a class="anchor" aria-hidden="true" id="hll-sketch-operators"></a><a href="#hll-sketch-operators" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<h4><a class="anchor" aria-hidden="true" id="hll-sketch-functions"></a><a href="#hll-sketch-functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
 <p>The following functions operate on <a href="../development/extensions-core/datasketches-hll.html">DataSketches HLL sketches</a>.
 The <a href="../development/extensions-core/datasketches-extension.html">DataSketches extension</a> must be loaded to use the following functions.</p>
 <table>
@@ -467,7 +474,7 @@ The <a href="../development/extensions-core/datasketches-extension.html">DataSke
 <tr><td><code>HLL_SKETCH_TO_STRING(expr)</code></td><td>Returns a human-readable string representation of an HLL sketch for debugging. <code>expr</code> must return an HLL sketch.</td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="theta-sketch-operators"></a><a href="#theta-sketch-operators" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
+<h4><a class="anchor" aria-hidden="true" id="theta-sketch-functions"></a><a href="#theta-sketch-functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>The following functions operate on <a href="../development/extensions-core/datasketches-theta.html">theta sketches</a>.
 The <a href="../development/extensions-core/datasketches-extension.html">DataSketches extension</a> must be loaded to use the following functions.</p>
 <table>
@@ -482,7 +489,7 @@ The <a href="../development/extensions-core/datasketches-extension.html">DataSke
 <tr><td><code>THETA_SKETCH_NOT([size], expr0, expr1, ...)</code></td><td>Returns a set difference of theta sketches, where each input expression must return a theta sketch. The <code>size</code> can be optionally specified as the first parameter.</td></tr>
 </tbody>
 </table>
-<h4><a class="anchor" aria-hidden="true" id="quantiles-sketch-operators"></a><a href="#quantiles-sketch-operators" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H [...]
+<h4><a class="anchor" aria-hidden="true" id="quantiles-sketch-functions"></a><a href="#quantiles-sketch-functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H [...]
 <p>The following functions operate on <a href="../development/extensions-core/datasketches-quantiles.html">quantiles sketches</a>.
 The <a href="../development/extensions-core/datasketches-extension.html">DataSketches extension</a> must be loaded to use the following functions.</p>
 <table>
@@ -498,42 +505,134 @@ The <a href="../development/extensions-core/datasketches-extension.html">DataSke
 <tr><td><code>DS_QUANTILE_SUMMARY(expr)</code></td><td>Returns a string summary of a quantiles sketch, useful for debugging. <code>expr</code> must return a quantiles sketch.</td></tr>
 </tbody>
 </table>
-<h3><a class="anchor" aria-hidden="true" id="other-functions"></a><a href="#other-functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
+<h3><a class="anchor" aria-hidden="true" id="other-scalar-functions"></a><a href="#other-scalar-functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <table>
 <thead>
 <tr><th>Function</th><th>Notes</th></tr>
 </thead>
 <tbody>
-<tr><td><code>CAST(value AS TYPE)</code></td><td>Cast value to another type. See <a href="#data-types-and-casts">Data types and casts</a> for details about how Druid SQL handles CAST.</td></tr>
+<tr><td><code>CAST(value AS TYPE)</code></td><td>Cast value to another type. See <a href="#data-types">Data types</a> for details about how Druid SQL handles CAST.</td></tr>
 <tr><td><code>CASE expr WHEN value1 THEN result1 \[ WHEN value2 THEN result2 ... \] \[ ELSE resultN \] END</code></td><td>Simple CASE.</td></tr>
 <tr><td><code>CASE WHEN boolean_expr1 THEN result1 \[ WHEN boolean_expr2 THEN result2 ... \] \[ ELSE resultN \] END</code></td><td>Searched CASE.</td></tr>
 <tr><td><code>NULLIF(value1, value2)</code></td><td>Returns NULL if value1 and value2 match, else returns value1.</td></tr>
 <tr><td><code>COALESCE(value1, value2, ...)</code></td><td>Returns the first value that is neither NULL nor empty string.</td></tr>
 <tr><td><code>NVL(expr,expr-for-null)</code></td><td>Returns 'expr-for-null' if 'expr' is null (or empty string for string type).</td></tr>
-<tr><td><code>BLOOM_FILTER_TEST(&lt;expr&gt;, &lt;serialized-filter&gt;)</code></td><td>Returns true if the value is contained in the base64 serialized bloom filter. See <a href="../development/extensions-core/bloom-filter.html">bloom filter extension</a> documentation for additional details.</td></tr>
+<tr><td><code>BLOOM_FILTER_TEST(&lt;expr&gt;, &lt;serialized-filter&gt;)</code></td><td>Returns true if the value is contained in a Base64-serialized bloom filter. See the <a href="../development/extensions-core/bloom-filter.html">Bloom filter extension</a> documentation for additional details.</td></tr>
 </tbody>
 </table>
-<h3><a class="anchor" aria-hidden="true" id="unsupported-features"></a><a href="#unsupported-features" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
-<p>Druid does not support all SQL features, including:</p>
-<ul>
-<li>OVER clauses, and analytic functions such as <code>LAG</code> and <code>LEAD</code>.</li>
-<li>JOIN clauses, other than semi-joins as described above.</li>
-<li>OFFSET clauses.</li>
-<li>DDL and DML.</li>
-</ul>
-<p>Additionally, some Druid features are not supported by the SQL language. Some unsupported Druid features include:</p>
-<ul>
-<li><a href="multi-value-dimensions.html">Multi-value dimensions</a>.</li>
-<li><a href="../development/extensions-core/datasketches-extension.html">Set operations on DataSketches aggregators</a>.</li>
-<li><a href="../development/geo.html">Spatial filters</a>.</li>
-<li><a href="querying.html#query-cancellation">Query cancellation</a>.</li>
-</ul>
-<h2><a class="anchor" aria-hidden="true" id="query-execution"></a><a href="#query-execution" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5  [...]
-<p>Queries without aggregations will use Druid's <a href="scan-query.html">Scan</a> native query type.</p>
-<p>Aggregation queries (using GROUP BY, DISTINCT, or any aggregation functions) will use one of Druid's three native
-aggregation query types. Two (Timeseries and TopN) are specialized for specific types of aggregations, whereas the other
-(GroupBy) is general-purpose.</p>
+<h2><a class="anchor" aria-hidden="true" id="multi-value-string-functions"></a><a href="#multi-value-string-functions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 [...]
+<p>All 'array' references in the multi-value string function documentation can refer to multi-value string columns or
+<code>ARRAY</code> literals.</p>
+<table>
+<thead>
+<tr><th>Function</th><th>Notes</th></tr>
+</thead>
+<tbody>
+<tr><td><code>ARRAY(expr1,expr ...)</code></td><td>constructs a SQL ARRAY literal from the expression arguments, using the type of the first argument as the output array type</td></tr>
+<tr><td><code>MV_LENGTH(arr)</code></td><td>returns length of array expression</td></tr>
+<tr><td><code>MV_OFFSET(arr,long)</code></td><td>returns the array element at the 0 based index supplied, or null for an out of range index</td></tr>
+<tr><td><code>MV_ORDINAL(arr,long)</code></td><td>returns the array element at the 1 based index supplied, or null for an out of range index</td></tr>
+<tr><td><code>MV_CONTAINS(arr,expr)</code></td><td>returns 1 if the array contains the element specified by expr, or contains all elements specified by expr if expr is an array, else 0</td></tr>
+<tr><td><code>MV_OVERLAP(arr1,arr2)</code></td><td>returns 1 if arr1 and arr2 have any elements in common, else 0</td></tr>
+<tr><td><code>MV_OFFSET_OF(arr,expr)</code></td><td>returns the 0 based index of the first occurrence of expr in the array, or <code>-1</code> or <code>null</code> if <code>druid.generic.useDefaultValueForNull=false</code> if no matching elements exist in the array.</td></tr>
+<tr><td><code>MV_ORDINAL_OF(arr,expr)</code></td><td>returns the 1 based index of the first occurrence of expr in the array, or <code>-1</code> or <code>null</code> if <code>druid.generic.useDefaultValueForNull=false</code> if no matching elements exist in the array.</td></tr>
+<tr><td><code>MV_PREPEND(expr,arr)</code></td><td>adds expr to arr at the beginning, the resulting array type determined by the type of the array</td></tr>
+<tr><td><code>MV_APPEND(arr1,expr)</code></td><td>appends expr to arr, the resulting array type determined by the type of the first array</td></tr>
+<tr><td><code>MV_CONCAT(arr1,arr2)</code></td><td>concatenates 2 arrays, the resulting array type determined by the type of the first array</td></tr>
+<tr><td><code>MV_SLICE(arr,start,end)</code></td><td>return the subarray of arr from the 0 based index start(inclusive) to end(exclusive), or <code>null</code>, if start is less than 0, greater than length of arr or less than end</td></tr>
+<tr><td><code>MV_TO_STRING(arr,str)</code></td><td>joins all elements of arr by the delimiter specified by str</td></tr>
+<tr><td><code>STRING_TO_MV(str1,str2)</code></td><td>splits str1 into an array on the delimiter specified by str2</td></tr>
+</tbody>
+</table>
+<h2><a class="anchor" aria-hidden="true" id="query-translation"></a><a href="#query-translation" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2- [...]
+<p>Druid SQL translates SQL queries to <a href="/docs/0.18.0/querying/querying.html">native queries</a> before running them, and understanding how this
+translation works is key to getting good performance.</p>
+<h3><a class="anchor" aria-hidden="true" id="best-practices"></a><a href="#best-practices" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
+<p>Consider this (non-exhaustive) list of things to look out for when looking into the performance implications of
+how your SQL queries are translated to native queries.</p>
+<ol>
+<li><p>If you wrote a filter on the primary time column <code>__time</code>, make sure it is being correctly translated to an
+<code>&quot;intervals&quot;</code> filter, as described in the <a href="#time-filters">Time filters</a> section below. If not, you may need to change
+the way you write the filter.</p></li>
+<li><p>Try to avoid subqueries underneath joins: they affect both performance and scalability. This includes implicit
+subqueries generated by conditions on mismatched types, and implicit subqueries generated by conditions that use
+expressions to refer to the right-hand side.</p></li>
+<li><p>Read through the <a href="/docs/0.18.0/querying/query-execution.html">Query execution</a> page to understand how various types of native queries
+will be executed.</p></li>
+<li><p>Be careful when interpreting EXPLAIN PLAN output, and use request logging if in doubt. Request logs will show the
+exact native query that was run. See the <a href="#interpreting-explain-plan-output">next section</a> for more details.</p></li>
+<li><p>If you encounter a query that could be planned better, feel free to
+<a href="https://github.com/apache/druid/issues/new/choose">raise an issue on GitHub</a>. A reproducible test case is always
+appreciated.</p></li>
+</ol>
+<h3><a class="anchor" aria-hidden="true" id="interpreting-explain-plan-output"></a><a href="#interpreting-explain-plan-output" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13. [...]
+<p>The <a href="#explain-plan">EXPLAIN PLAN</a> functionality can help you understand how a given SQL query will
+be translated to native. For simple queries that do not involve subqueries or joins, the output of EXPLAIN PLAN
+is easy to interpret. The native query that will run is embedded as JSON inside a &quot;DruidQueryRel&quot; line:</p>
+<pre><code class="hljs">&gt; EXPLAIN PLAN FOR SELECT COUNT(<span class="hljs-name">*</span>) FROM wikipedia
+
+DruidQueryRel(<span class="hljs-name">query=</span>[{<span class="hljs-string">"queryType"</span>:<span class="hljs-string">"timeseries"</span>,<span class="hljs-string">"dataSource"</span>:<span class="hljs-string">"wikipedia"</span>,<span class="hljs-string">"intervals"</span>:<span class="hljs-string">"-146136543-09-08T08:23:32.096Z/146140482-04-24T15:36:27.903Z"</span>,<span class="hljs-string">"granularity"</span>:<span class="hljs-string">"all"</span>,<span class="hljs-string">"agg [...]
+</code></pre>
+<p>For more complex queries that do involve subqueries or joins, EXPLAIN PLAN is somewhat more difficult to interpret.
+For example, consider this query:</p>
+<pre><code class="hljs">&gt; EXPLAIN PLAN <span class="hljs-keyword">FOR</span>
+&gt; SELECT
+&gt;     channel,
+&gt;     COUNT(*)
+&gt; <span class="hljs-keyword">FROM</span> wikipedia
+&gt; WHERE channel <span class="hljs-keyword">IN</span> (SELECT<span class="hljs-built_in"> page </span><span class="hljs-keyword">FROM</span> wikipedia<span class="hljs-built_in"> GROUP </span>BY<span class="hljs-built_in"> page </span>ORDER BY COUNT(*) DESC LIMIT 10)
+&gt;<span class="hljs-built_in"> GROUP </span>BY channel
+
+DruidJoinQueryRel(condition=[=(<span class="hljs-variable">$1</span>, <span class="hljs-variable">$3</span>)], joinType=[inner], query=[{<span class="hljs-string">"queryType"</span>:<span class="hljs-string">"groupBy"</span>,<span class="hljs-string">"dataSource"</span>:{<span class="hljs-string">"type"</span>:<span class="hljs-string">"table"</span>,<span class="hljs-string">"name"</span>:<span class="hljs-string">"__join__"</span>},<span class="hljs-string">"intervals"</span>:{<span cl [...]
+  DruidQueryRel(query=[{<span class="hljs-string">"queryType"</span>:<span class="hljs-string">"scan"</span>,<span class="hljs-string">"dataSource"</span>:{<span class="hljs-string">"type"</span>:<span class="hljs-string">"table"</span>,<span class="hljs-string">"name"</span>:<span class="hljs-string">"wikipedia"</span>},<span class="hljs-string">"intervals"</span>:{<span class="hljs-string">"type"</span>:<span class="hljs-string">"intervals"</span>,<span class="hljs-string">"intervals"< [...]
+  DruidQueryRel(query=[{<span class="hljs-string">"queryType"</span>:<span class="hljs-string">"topN"</span>,<span class="hljs-string">"dataSource"</span>:{<span class="hljs-string">"type"</span>:<span class="hljs-string">"table"</span>,<span class="hljs-string">"name"</span>:<span class="hljs-string">"wikipedia"</span>},<span class="hljs-string">"dimension"</span>:<span class="hljs-string">"page"</span>,<span class="hljs-string">"metric"</span>:{<span class="hljs-string">"type"</span>:< [...]
+</code></pre>
+<p>Here, there is a join with two inputs. The way to read this is to consider each line of the EXPLAIN PLAN output as
+something that might become a query, or might just become a simple datasource. The <code>query</code> field they all have is
+called a &quot;partial query&quot; and represents what query would be run on the datasource represented by that line, if that
+line ran by itself. In some cases — like the &quot;scan&quot; query in the second line of this example — the query does not
+actually run, and it ends up being translated to a simple table datasource. See the <a href="#joins">Join translation</a> section
+for more details about how this works.</p>
+<p>We can see this for ourselves using Druid's <a href="/docs/0.18.0/configuration/index.html#request-logging">request logging</a> feature. After
+enabling logging and running this query, we can see that it actually runs as the following native query.</p>
+<pre><code class="hljs css language-json">{
+  <span class="hljs-attr">"queryType"</span>: <span class="hljs-string">"groupBy"</span>,
+  <span class="hljs-attr">"dataSource"</span>: {
+    <span class="hljs-attr">"type"</span>: <span class="hljs-string">"join"</span>,
+    <span class="hljs-attr">"left"</span>: <span class="hljs-string">"wikipedia"</span>,
+    <span class="hljs-attr">"right"</span>: {
+      <span class="hljs-attr">"type"</span>: <span class="hljs-string">"query"</span>,
+      <span class="hljs-attr">"query"</span>: {
+        <span class="hljs-attr">"queryType"</span>: <span class="hljs-string">"topN"</span>,
+        <span class="hljs-attr">"dataSource"</span>: <span class="hljs-string">"wikipedia"</span>,
+        <span class="hljs-attr">"dimension"</span>: {<span class="hljs-attr">"type"</span>: <span class="hljs-string">"default"</span>, <span class="hljs-attr">"dimension"</span>: <span class="hljs-string">"page"</span>, <span class="hljs-attr">"outputName"</span>: <span class="hljs-string">"d0"</span>},
+        <span class="hljs-attr">"metric"</span>: {<span class="hljs-attr">"type"</span>: <span class="hljs-string">"numeric"</span>, <span class="hljs-attr">"metric"</span>: <span class="hljs-string">"a0"</span>},
+        <span class="hljs-attr">"threshold"</span>: <span class="hljs-number">10</span>,
+        <span class="hljs-attr">"intervals"</span>: <span class="hljs-string">"-146136543-09-08T08:23:32.096Z/146140482-04-24T15:36:27.903Z"</span>,
+        <span class="hljs-attr">"granularity"</span>: <span class="hljs-string">"all"</span>,
+        <span class="hljs-attr">"aggregations"</span>: [
+          { <span class="hljs-attr">"type"</span>: <span class="hljs-string">"count"</span>, <span class="hljs-attr">"name"</span>: <span class="hljs-string">"a0"</span>}
+        ]
+      }
+    },
+    <span class="hljs-attr">"rightPrefix"</span>: <span class="hljs-string">"j0."</span>,
+    <span class="hljs-attr">"condition"</span>: <span class="hljs-string">"(\"page\" == \"j0.d0\")"</span>,
+    <span class="hljs-attr">"joinType"</span>: <span class="hljs-string">"INNER"</span>
+  },
+  <span class="hljs-attr">"intervals"</span>: <span class="hljs-string">"-146136543-09-08T08:23:32.096Z/146140482-04-24T15:36:27.903Z"</span>,
+  <span class="hljs-attr">"granularity"</span>: <span class="hljs-string">"all"</span>,
+  <span class="hljs-attr">"dimensions"</span>: [
+    {<span class="hljs-attr">"type"</span>: <span class="hljs-string">"default"</span>, <span class="hljs-attr">"dimension"</span>: <span class="hljs-string">"channel"</span>, <span class="hljs-attr">"outputName"</span>: <span class="hljs-string">"d0"</span>}
+  ],
+  <span class="hljs-attr">"aggregations"</span>: [
+    { <span class="hljs-attr">"type"</span>: <span class="hljs-string">"count"</span>, <span class="hljs-attr">"name"</span>: <span class="hljs-string">"a0"</span>}
+  ]
+}
+</code></pre>
+<h3><a class="anchor" aria-hidden="true" id="query-types"></a><a href="#query-types" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
+<p>Druid SQL uses four different native query types.</p>
 <ul>
+<li><p><a href="scan-query.html">Scan</a> is used for queries that do not aggregate (no GROUP BY, no DISTINCT).</p></li>
 <li><p><a href="timeseriesquery.html">Timeseries</a> is used for queries that GROUP BY <code>FLOOR(__time TO &lt;unit&gt;)</code> or <code>TIME_FLOOR(__time, period)</code>, have no other grouping expressions, no HAVING or LIMIT clauses, no nesting, and either no ORDER BY, or an
 ORDER BY that orders by same expression as present in GROUP BY. It also uses Timeseries for &quot;grand total&quot; queries that
 have aggregation functions but no GROUP BY. This query type takes advantage of the fact that Druid segments are sorted
@@ -551,49 +650,85 @@ don't appear in the GROUP BY clause (like aggregation functions) then the Broker
 memory, up to a max of your LIMIT, if any. See the GroupBy documentation for details about tuning performance and memory
 use.</p></li>
 </ul>
-<p>If your query does nested aggregations (an aggregation subquery in your FROM clause) then Druid will execute it as a
-<a href="groupbyquery.html#nested-groupbys">nested GroupBy</a>. In nested GroupBys, the innermost aggregation is distributed, but
-all outer aggregations beyond that take place locally on the query Broker.</p>
-<p>Semi-join queries containing WHERE clauses like <code>col IN (SELECT expr FROM ...)</code> are executed with a special process. The
-Broker will first translate the subquery into a GroupBy to find distinct values of <code>expr</code>. Then, the broker will rewrite
-the subquery to a literal filter, like <code>col IN (val1, val2, ...)</code> and run the outer query. The configuration parameter
-druid.sql.planner.maxSemiJoinRowsInMemory controls the maximum number of values that will be materialized for this kind
-of plan.</p>
+<h3><a class="anchor" aria-hidden="true" id="time-filters"></a><a href="#time-filters" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
 <p>For all native query types, filters on the <code>__time</code> column will be translated into top-level query &quot;intervals&quot; whenever
-possible, which allows Druid to use its global time index to quickly prune the set of data that must be scanned. In
-addition, Druid will use indexes local to each data process to further speed up WHERE evaluation. This can typically be
-done for filters that involve boolean combinations of references to and functions of single columns, like
-<code>WHERE col1 = 'a' AND col2 = 'b'</code>, but not <code>WHERE col1 = col2</code>.</p>
-<h3><a class="anchor" aria-hidden="true" id="approximate-algorithms"></a><a href="#approximate-algorithms" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
+possible, which allows Druid to use its global time index to quickly prune the set of data that must be scanned.
+Consider this (non-exhaustive) list of time filters that will be recognized and translated to &quot;intervals&quot;:</p>
+<ul>
+<li><code>__time &gt;= TIMESTAMP '2000-01-01 00:00:00'</code> (comparison to absolute time)</li>
+<li><code>__time &gt;= CURRENT_TIMESTAMP - INTERVAL '8' HOUR</code> (comparison to relative time)</li>
+<li><code>FLOOR(__time TO DAY) = TIMESTAMP '2000-01-01 00:00:00'</code> (specific day)</li>
+</ul>
+<p>Refer to the <a href="#interpreting-explain-plan-output">Interpreting EXPLAIN PLAN output</a> section for details on confirming
+that time filters are being translated as you expect.</p>
+<h3><a class="anchor" aria-hidden="true" id="joins"></a><a href="#joins" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09 [...]
+<p>SQL join operators are translated to native join datasources as follows:</p>
+<ol>
+<li><p>Joins that the native layer can handle directly are translated literally, to a <a href="/docs/0.18.0/querying/datasource.html#join">join datasource</a>
+whose <code>left</code>, <code>right</code>, and <code>condition</code> are faithful translations of the original SQL. This includes any SQL join where
+the right-hand side is a lookup or subquery, and where the condition is an equality where one side is an expression based
+on the left-hand table, the other side is a simple column reference to the right-hand table, and both sides of the
+equality are the same data type.</p></li>
+<li><p>If a join cannot be handled directly by a native <a href="/docs/0.18.0/querying/datasource.html#join">join datasource</a> as written, Druid SQL
+will insert subqueries to make it runnable. For example, <code>foo INNER JOIN bar ON foo.abc = LOWER(bar.def)</code> cannot be
+directly translated, because there is an expression on the right-hand side instead of a simple column access. A subquery
+will be inserted that effectively transforms this clause to
+<code>foo INNER JOIN (SELECT LOWER(def) AS def FROM bar) t ON foo.abc = t.def</code>.</p></li>
+<li><p>Druid SQL does not currently reorder joins to optimize queries.</p></li>
+</ol>
+<p>Refer to the <a href="#interpreting-explain-plan-output">Interpreting EXPLAIN PLAN output</a> section for details on confirming
+that joins are being translated as you expect.</p>
+<p>Refer to the <a href="/docs/0.18.0/querying/query-execution.html#join">Query execution</a> page for information about how joins are executed.</p>
+<h3><a class="anchor" aria-hidden="true" id="subqueries"></a><a href="#subqueries" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1 [...]
+<p>Subqueries in SQL are generally translated to native query datasources. Refer to the
+<a href="/docs/0.18.0/querying/query-execution.html#query">Query execution</a> page for information about how subqueries are executed.</p>
+<blockquote>
+<p>Note: Subqueries in the WHERE clause, like <code>WHERE col1 IN (SELECT foo FROM ...)</code> are translated to inner joins.</p>
+</blockquote>
+<h3><a class="anchor" aria-hidden="true" id="approximations"></a><a href="#approximations" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p>Druid SQL will use approximate algorithms in some situations:</p>
 <ul>
-<li>The <code>COUNT(DISTINCT col)</code> aggregation functions by default uses a variant of
+<li><p>The <code>COUNT(DISTINCT col)</code> aggregation functions by default uses a variant of
 <a href="http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf">HyperLogLog</a>, a fast approximate distinct counting
 algorithm. Druid SQL will switch to exact distinct counts if you set &quot;useApproximateCountDistinct&quot; to &quot;false&quot;, either
-through query context or through Broker configuration.</li>
-<li>GROUP BY queries over a single column with ORDER BY and LIMIT may be executed using the TopN engine, which uses an
+through query context or through Broker configuration.</p></li>
+<li><p>GROUP BY queries over a single column with ORDER BY and LIMIT may be executed using the TopN engine, which uses an
 approximate algorithm. Druid SQL will switch to an exact grouping algorithm if you set &quot;useApproximateTopN&quot; to &quot;false&quot;,
-either through query context or through Broker configuration.</li>
-<li>The APPROX_COUNT_DISTINCT and APPROX_QUANTILE aggregation functions always use approximate algorithms, regardless
-of configuration.</li>
+either through query context or through Broker configuration.</p></li>
+<li><p>Aggregation functions that are labeled as using sketches or approximations, such as APPROX_COUNT_DISTINCT, are always
+approximate, regardless of configuration.</p></li>
+</ul>
+<h3><a class="anchor" aria-hidden="true" id="unsupported-features"></a><a href="#unsupported-features" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
+<p>Druid does not support all SQL features. In particular, the following features are not supported.</p>
+<ul>
+<li>JOIN between native datasources (table, lookup, subquery) and system tables.</li>
+<li>JOIN conditions that are not an equality between expressions from the left- and right-hand sides.</li>
+<li>OVER clauses, and analytic functions such as <code>LAG</code> and <code>LEAD</code>.</li>
+<li>OFFSET clauses.</li>
+<li>DDL and DML.</li>
+<li>Using Druid-specific functions like <code>TIME_PARSE</code> and <code>APPROX_QUANTILE_DS</code> on <a href="#metadata-tables">metadata tables</a>.</li>
+</ul>
+<p>Additionally, some Druid native query features are not supported by the SQL language. Some unsupported Druid features
+include:</p>
+<ul>
+<li><a href="datasource.html#union">Union datasources</a></li>
+<li><a href="datasource.html#inline">Inline datasources</a></li>
+<li><a href="../development/geo.html">Spatial filters</a>.</li>
+<li><a href="querying.html#query-cancellation">Query cancellation</a>.</li>
 </ul>
 <h2><a class="anchor" aria-hidden="true" id="client-apis"></a><a href="#client-apis" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<h3><a class="anchor" aria-hidden="true" id="json-over-http"></a><a href="#json-over-http" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
-<p>You can make Druid SQL queries using JSON over HTTP by posting to the endpoint <code>/druid/v2/sql/</code>. The request should
+<p><a name="json-over-http"></a></p>
+<h3><a class="anchor" aria-hidden="true" id="http-post"></a><a href="#http-post" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
+<p>You can make Druid SQL queries using HTTP via POST to the endpoint <code>/druid/v2/sql/</code>. The request should
 be a JSON object with a &quot;query&quot; field, like <code>{&quot;query&quot; : &quot;SELECT COUNT(*) FROM data_source WHERE foo = 'bar'&quot;}</code>.</p>
 <h5><a class="anchor" aria-hidden="true" id="request"></a><a href="#request" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1- [...]
-<table>
-<thead>
-<tr><th>Property</th><th>Type</th><th>Description</th><th>Required</th></tr>
-</thead>
-<tbody>
-<tr><td><code>query</code></td><td><code>String</code></td><td>SQL query to run</td><td>yes</td></tr>
-<tr><td><code>resultFormat</code></td><td><code>String</code> (<code>ResultFormat</code>)</td><td>Result format for output</td><td>no (default <code>&quot;object&quot;</code>)</td></tr>
-<tr><td><code>header</code></td><td><code>Boolean</code></td><td>Write column name header for supporting formats</td><td>no (default <code>false</code>)</td></tr>
-<tr><td><code>context</code></td><td><code>Object</code></td><td>Connection context map. see <a href="#connection-context">connection context parameters</a></td><td>no</td></tr>
-<tr><td><code>parameters</code></td><td><code>SqlParameter</code> list</td><td>List of query parameters for parameterized queries.</td><td>no</td></tr>
-</tbody>
-</table>
+<p>|Property|Description|Default|
+|--------|----|-----------|--------|
+|<code>query</code>|SQL query string.| none (required)|
+|<code>resultFormat</code>|Format of query results. See <a href="#responses">Responses</a> for details.|<code>&quot;object&quot;</code>|
+|<code>header</code>|Whether or not to include a header. See [Responses] for details.|<code>false</code>|
+|<code>context</code>|JSON object containing <a href="#connection-context">connection context parameters</a>.|<code>{}</code> (empty)|
+|<code>parameters</code>|List of query parameters for parameterized queries. Each parameter in the list should be a JSON object like <code>{&quot;type&quot;: &quot;VARCHAR&quot;, &quot;value&quot;: &quot;foo&quot;}</code>. The type should be a SQL type; see <a href="#data-types">Data types</a> for a list of supported SQL types.|<code>[]</code> (empty)|</p>
 <p>You can use <em>curl</em> to send SQL queries from the command-line:</p>
 <pre><code class="hljs css language-bash">$ cat query.json
 {<span class="hljs-string">"query"</span>:<span class="hljs-string">"SELECT COUNT(*) AS TheCount FROM data_source"</span>}
@@ -619,19 +754,10 @@ like:</p>
   ]
 }
 </code></pre>
-<h5><a class="anchor" aria-hidden="true" id="sqlparameter"></a><a href="#sqlparameter" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83. [...]
-<table>
-<thead>
-<tr><th>Property</th><th>Type</th><th>Description</th><th>Required</th></tr>
-</thead>
-<tbody>
-<tr><td><code>type</code></td><td><code>String</code> (<code>SqlType</code>)</td><td>String value of <code>SqlType</code> of parameter. <a href="https://calcite.apache.org/avatica/javadocAggregate/org/apache/calcite/avatica/SqlType.html"><code>SqlType</code></a> is a friendly wrapper around <a href="https://docs.oracle.com/javase/8/docs/api/java/sql/Types.html?is-external=true"><code>java.sql.Types</code></a></td><td>yes</td></tr>
-<tr><td><code>value</code></td><td><code>Object</code></td><td>Value of the parameter</td><td>yes</td></tr>
-</tbody>
-</table>
-<p>Metadata is also available over the HTTP API by querying <a href="#metadata-tables">system tables</a>.</p>
+<p>Metadata is available over HTTP POST by querying <a href="#metadata-tables">metadata tables</a>.</p>
 <h4><a class="anchor" aria-hidden="true" id="responses"></a><a href="#responses" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.6 [...]
-<p>Druid SQL supports a variety of result formats. You can specify these by adding a &quot;resultFormat&quot; parameter, like:</p>
+<p>Druid SQL's HTTP POST API supports a variety of result formats. You can specify these by adding a &quot;resultFormat&quot;
+parameter, like:</p>
 <pre><code class="hljs css language-json">{
   <span class="hljs-attr">"query"</span> : <span class="hljs-string">"SELECT COUNT(*) FROM data_source WHERE foo = 'bar' AND __time &gt; TIMESTAMP '2000-01-01 00:00:00'"</span>,
   <span class="hljs-attr">"resultFormat"</span> : <span class="hljs-string">"object"</span>
@@ -700,8 +826,8 @@ multiple Druid Brokers, you should either connect to a specific Broker, or use a
 enabled. The Druid Router process provides connection stickiness when balancing JDBC requests, and can be used to achieve
 the necessary stickiness even with a normal non-sticky load balancer. Please see the
 <a href="/docs/0.18.0/design/router.html">Router</a> documentation for more details.</p>
-<p>Note that the non-JDBC <a href="#json-over-http">JSON over HTTP</a> API is stateless and does not require stickiness.</p>
-<h3><a class="anchor" aria-hidden="true" id="dynamic-parameters"></a><a href="#dynamic-parameters" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22- [...]
+<p>Note that the non-JDBC <a href="#http-post">JSON over HTTP</a> API is stateless and does not require stickiness.</p>
+<h3><a class="anchor" aria-hidden="true" id="dynamic-parameters-1"></a><a href="#dynamic-parameters-1" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
 <p>You can also use parameterized queries in JDBC code, as in this example;</p>
 <pre><code class="hljs css language-java">PreparedStatement statement = connection.prepareStatement(<span class="hljs-string">"SELECT COUNT(*) AS cnt FROM druid.foo WHERE dim1 = ? OR dim1 = ?"</span>);
 statement.setString(<span class="hljs-number">1</span>, <span class="hljs-string">"abc"</span>);
@@ -739,6 +865,10 @@ INFORMATION_SCHEMA tables described below. For example, to retrieve metadata for
 datasource &quot;foo&quot;, use the query:</p>
 <pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> INFORMATION_SCHEMA.COLUMNS <span class="hljs-keyword">WHERE</span> TABLE_SCHEMA = <span class="hljs-string">'druid'</span> <span class="hljs-keyword">AND</span> TABLE_NAME = <span class="hljs-string">'foo'</span>
 </code></pre>
+<blockquote>
+<p>Note: INFORMATION_SCHEMA tables do not currently support Druid-specific functions like <code>TIME_PARSE</code> and
+<code>APPROX_QUANTILE_DS</code>. Only standard SQL functions can be used.</p>
+</blockquote>
 <h4><a class="anchor" aria-hidden="true" id="schemata-table"></a><a href="#schemata-table" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <table>
 <thead>
@@ -793,6 +923,10 @@ datasource &quot;foo&quot;, use the query:</p>
 </table>
 <h3><a class="anchor" aria-hidden="true" id="system-schema"></a><a href="#system-schema" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.8 [...]
 <p>The &quot;sys&quot; schema provides visibility into Druid segments, servers and tasks.</p>
+<blockquote>
+<p>Note: &quot;sys&quot; tables do not currently support Druid-specific functions like <code>TIME_PARSE</code> and
+<code>APPROX_QUANTILE_DS</code>. Only standard SQL functions can be used.</p>
+</blockquote>
 <h4><a class="anchor" aria-hidden="true" id="segments-table"></a><a href="#segments-table" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0- [...]
 <p>Segments table provides details on all Druid segments, whether they are published yet or not.</p>
 <table>
@@ -919,50 +1053,13 @@ check out the documentation for <a href="../ingestion/tasks.html">ingestion task
 <p>For example, to retrieve supervisor tasks information filtered by health status, use the query</p>
 <pre><code class="hljs css language-sql"><span class="hljs-keyword">SELECT</span> * <span class="hljs-keyword">FROM</span> sys.supervisors <span class="hljs-keyword">WHERE</span> healthy=<span class="hljs-number">0</span>;
 </code></pre>
-<p>Note that sys tables may not support all the Druid SQL Functions.</p>
 <h2><a class="anchor" aria-hidden="true" id="server-configuration"></a><a href="#server-configuration" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1 [...]
-<p>The Druid SQL server is configured through the following properties on the Broker.</p>
-<table>
-<thead>
-<tr><th>Property</th><th>Description</th><th>Default</th></tr>
-</thead>
-<tbody>
-<tr><td><code>druid.sql.enable</code></td><td>Whether to enable SQL at all, including background metadata fetching. If false, this overrides all other SQL-related properties and disables SQL metadata, serving, and planning completely.</td><td>true</td></tr>
-<tr><td><code>druid.sql.avatica.enable</code></td><td>Whether to enable JDBC querying at <code>/druid/v2/sql/avatica/</code>.</td><td>true</td></tr>
-<tr><td><code>druid.sql.avatica.maxConnections</code></td><td>Maximum number of open connections for the Avatica server. These are not HTTP connections, but are logical client connections that may span multiple HTTP connections.</td><td>25</td></tr>
-<tr><td><code>druid.sql.avatica.maxRowsPerFrame</code></td><td>Maximum number of rows to return in a single JDBC frame. Setting this property to -1 indicates that no row limit should be applied. Clients can optionally specify a row limit in their requests; if a client specifies a row limit, the lesser value of the client-provided limit and <code>maxRowsPerFrame</code> will be used.</td><td>5,000</td></tr>
-<tr><td><code>druid.sql.avatica.maxStatementsPerConnection</code></td><td>Maximum number of simultaneous open statements per Avatica client connection.</td><td>4</td></tr>
-<tr><td><code>druid.sql.avatica.connectionIdleTimeout</code></td><td>Avatica client connection idle timeout.</td><td>PT5M</td></tr>
-<tr><td><code>druid.sql.http.enable</code></td><td>Whether to enable JSON over HTTP querying at <code>/druid/v2/sql/</code>.</td><td>true</td></tr>
-<tr><td><code>druid.sql.planner.maxTopNLimit</code></td><td>Maximum threshold for a <a href="/docs/0.18.0/querying/topnquery.html">TopN query</a>. Higher limits will be planned as <a href="/docs/0.18.0/querying/groupbyquery.html">GroupBy queries</a> instead.</td><td>100000</td></tr>
-<tr><td><code>druid.sql.planner.metadataRefreshPeriod</code></td><td>Throttle for metadata refreshes.</td><td>PT1M</td></tr>
-<tr><td><code>druid.sql.planner.useApproximateCountDistinct</code></td><td>Whether to use an approximate cardinality algorithm for <code>COUNT(DISTINCT foo)</code>.</td><td>true</td></tr>
-<tr><td><code>druid.sql.planner.useApproximateTopN</code></td><td>Whether to use approximate <a href="../querying/topnquery.html">TopN queries</a> when a SQL query could be expressed as such. If false, exact <a href="../querying/groupbyquery.html">GroupBy queries</a> will be used instead.</td><td>true</td></tr>
-<tr><td><code>druid.sql.planner.requireTimeCondition</code></td><td>Whether to require SQL to have filter conditions on __time column so that all generated native queries will have user specified intervals. If true, all queries without filter condition on __time column will fail</td><td>false</td></tr>
-<tr><td><code>druid.sql.planner.sqlTimeZone</code></td><td>Sets the default time zone for the server, which will affect how time functions and timestamp literals behave. Should be a time zone name like &quot;America/Los_Angeles&quot; or offset like &quot;-08:00&quot;.</td><td>UTC</td></tr>
-<tr><td><code>druid.sql.planner.metadataSegmentCacheEnable</code></td><td>Whether to keep a cache of published segments in broker. If true, broker polls coordinator in background to get segments from metadata store and maintains a local cache. If false, coordinator's REST API will be invoked when broker needs published segments info.</td><td>false</td></tr>
-<tr><td><code>druid.sql.planner.metadataSegmentPollPeriod</code></td><td>How often to poll coordinator for published segments list if <code>druid.sql.planner.metadataSegmentCacheEnable</code> is set to true. Poll period is in milliseconds.</td><td>60000</td></tr>
-</tbody>
-</table>
-<blockquote>
-<p>Previous versions of Druid had properties named <code>druid.sql.planner.maxQueryCount</code> and <code>druid.sql.planner.maxSemiJoinRowsInMemory</code>.
-These properties are no longer available. Since Druid 0.18.0, you can use <code>druid.server.http.maxSubqueryRows</code> to control the maximum
-number of rows permitted across all subqueries.</p>
-</blockquote>
-<h2><a class="anchor" aria-hidden="true" id="sql-metrics"></a><a href="#sql-metrics" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42 [...]
-<p>Broker will emit the following metrics for SQL.</p>
-<table>
-<thead>
-<tr><th>Metric</th><th>Description</th><th>Dimensions</th><th>Normal Value</th></tr>
-</thead>
-<tbody>
-<tr><td><code>sqlQuery/time</code></td><td>Milliseconds taken to complete a SQL.</td><td>id, nativeQueryIds, dataSource, remoteAddress, success.</td><td>&lt; 1s</td></tr>
-<tr><td><code>sqlQuery/bytes</code></td><td>number of bytes returned in SQL response.</td><td>id, nativeQueryIds, dataSource, remoteAddress, success.</td><td></td></tr>
-</tbody>
-</table>
-<h2><a class="anchor" aria-hidden="true" id="authorization-permissions"></a><a href="#authorization-permissions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c [...]
-<p>Please see <a href="../development/extensions-core/druid-basic-security.html#sql-permissions">Defining SQL permissions</a> for information on what permissions are needed for making SQL queries in a secured cluster.</p>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/ingestion/faq.html"><span class="arrow-prev">← </span><span>Troubleshooting FAQ</span></a><a class="docs-next button" href="/docs/0.18.0/querying/querying.html"><span>Making native queries</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#query-syntax">Query syntax</a></li><li><a href="#data-types-and-casts">Data  [...]
+<p>Druid SQL planning occurs on the Broker and is configured by
+<a href="../configuration/index.html#sql">Broker runtime properties</a>.</p>
+<h2><a class="anchor" aria-hidden="true" id="security"></a><a href="#security" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64  [...]
+<p>Please see <a href="../development/extensions-core/druid-basic-security.html#sql-permissions">Defining SQL permissions</a> in the
+basic security documentation for information on what permissions are needed for making SQL queries.</p>
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/ingestion/faq.html"><span class="arrow-prev">← </span><span>Troubleshooting FAQ</span></a><a class="docs-next button" href="/docs/0.18.0/querying/querying.html"><span>Native queries</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#query-syntax">Query syntax</a><ul class="toc-headings"><li><a href="#from">FROM</a> [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/timeboundaryquery.html b/docs/0.18.0/querying/timeboundaryquery.html
index 6e051d0..f6a3f33 100644
--- a/docs/0.18.0/querying/timeboundaryquery.html
+++ b/docs/0.18.0/querying/timeboundaryquery.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -77,6 +77,11 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes a query
+type that is only available in the native language.</p>
+</blockquote>
 <p>Time boundary queries return the earliest and latest data points of a data set. The grammar is:</p>
 <pre><code class="hljs css language-json">{
     "queryType" : "timeBoundary",
@@ -107,7 +112,7 @@
   }
 } ]
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/scan-query.html"><span class="arrow-prev">← </span><span>Scan</span></a><a class="docs-next button" href="/docs/0.18.0/querying/segmentmetadataquery.html"><span class="function-name-prevnext">SegmentMetadata</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="container"> [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/searchquery.html"><span class="arrow-prev">← </span><span>Search</span></a><a class="docs-next button" href="/docs/0.18.0/querying/segmentmetadataquery.html"><span class="function-name-prevnext">SegmentMetadata</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"></nav></div><footer class="nav-footer druid-footer" id="footer"><div class="containe [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/timeseriesquery.html b/docs/0.18.0/querying/timeseriesquery.html
index 2f366f5..bde2a92 100644
--- a/docs/0.18.0/querying/timeseriesquery.html
+++ b/docs/0.18.0/querying/timeseriesquery.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -77,6 +77,12 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes a query
+type in the native language. For information about when Druid SQL will use this query type, refer to the
+<a href="/docs/0.18.0/querying/sql.html#query-types">SQL documentation</a>.</p>
+</blockquote>
 <p>These types of queries take a timeseries query object and return an array of JSON objects where each object represents a value asked for by the timeseries query.</p>
 <p>An example timeseries query object is shown below:</p>
 <pre><code class="hljs css language-json">{
@@ -198,7 +204,7 @@ would be omitted from the results.</p>
   }
 }
 </code></pre>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/querying.html"><span class="arrow-prev">← </span><span>Making native queries</span></a><a class="docs-next button" href="/docs/0.18.0/querying/topnquery.html"><span class="function-name-prevnext">TopN</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#grand-totals">Grand totals</a></li><li><a href="#zero-f [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/query-context.html"><span class="arrow-prev">← </span><span>Context parameters</span></a><a class="docs-next button" href="/docs/0.18.0/querying/topnquery.html"><span class="function-name-prevnext">TopN</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#grand-totals">Grand totals</a></li><li><a href="#zero [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/topnmetricspec.html b/docs/0.18.0/querying/topnmetricspec.html
index a7f6a09..b9d300b 100644
--- a/docs/0.18.0/querying/topnmetricspec.html
+++ b/docs/0.18.0/querying/topnmetricspec.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>TopNMetricSpec · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/topnmetricspec.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.18.0" />< [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Sorting (topN) · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/topnmetricspec.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.18.0" />< [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/topnmetricspec.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">TopNMetricSpec</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/topnmetricspec.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Sorting (topN)</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -77,6 +77,11 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes the native
+language. For information about sorting in SQL, refer to the <a href="/docs/0.18.0/querying/sql.html#order-by">SQL documentation</a>.</p>
+</blockquote>
 <p>In Apache Druid, the topN metric spec specifies how topN values should be sorted.</p>
 <h2><a class="anchor" aria-hidden="true" id="numeric-topnmetricspec"></a><a href="#numeric-topnmetricspec" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0 [...]
 <p>The simplest metric specification is a String value indicating the metric to sort topN results by. They are included in a topN query with:</p>
@@ -133,7 +138,7 @@
 <tr><td>metric</td><td>the delegate metric spec.</td><td>yes</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/sorting-orders.html"><span class="arrow-prev">← </span><span>Sorting Orders</span></a><a class="docs-next button" href="/docs/0.18.0/querying/virtual-columns.html"><span>Virtual Columns</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#numeric-topnmetricspec">Numeric TopNMetricSpec</a></li><li><a href="#d [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/limitspec.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">Sorting and limiting (groupBy)</span></a><a class="docs-next button" href="/docs/0.18.0/querying/sorting-orders.html"><span>String comparators</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#numeric-topnmetricspec">Nu [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/querying/topnquery.html b/docs/0.18.0/querying/topnquery.html
index a6ca1a0..ae03dfe 100644
--- a/docs/0.18.0/querying/topnquery.html
+++ b/docs/0.18.0/querying/topnquery.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -77,6 +77,12 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes a query
+type in the native language. For information about when Druid SQL will use this query type, refer to the
+<a href="/docs/0.18.0/querying/sql.html#query-types">SQL documentation</a>.</p>
+</blockquote>
 <p>Apache Druid TopN queries return a sorted set of results for the values in a given dimension according to some criteria. Conceptually, they can be thought of as an approximate <a href="/docs/0.18.0/querying/groupbyquery.html">GroupByQuery</a> over a single dimension with an <a href="/docs/0.18.0/querying/limitspec.html">Ordering</a> spec. TopNs are much faster and resource efficient than GroupBys for this use case. These types of queries take a topN query object and return an array of [...]
 <p>TopNs are approximate in that each data process will rank their top K results and only return those top K results to the Broker. K, by default in Druid, is <code>max(1000, threshold)</code>. In practice, this means that if you ask for the top 1000 items ordered, the correctness of the first ~900 items will be 100%, and the ordering of the results after that is not guaranteed. TopNs can be made more accurate by increasing the threshold.</p>
 <p>A topN query object looks like:</p>
diff --git a/docs/0.18.0/querying/virtual-columns.html b/docs/0.18.0/querying/virtual-columns.html
index 1146360..e828b17 100644
--- a/docs/0.18.0/querying/virtual-columns.html
+++ b/docs/0.18.0/querying/virtual-columns.html
@@ -1,9 +1,9 @@
-<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Virtual Columns · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/virtual-columns.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.18.0" / [...]
+<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Virtual columns · Apache Druid</title><meta name="viewport" content="width=device-width"/><link rel="canonical" href="https://druid.apache.org/docs/0.18.0/querying/virtual-columns.html"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&lt;!--"/><meta name="docsearch:language" content="en"/><meta name="docsearch:version" content="0.18.0" / [...]
               window.dataLayer = window.dataLayer || [];
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
@@ -59,7 +59,7 @@
                 };
               }
             });
-        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/virtual-columns.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Virtual Columns</h1></header><article><div><span><!--
+        </script></nav></div><div class="container mainContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/druid/edit/master/docs/querying/virtual-columns.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 class="postHeaderTitle">Virtual columns</h1></header><article><div><span><!--
   ~ Licensed to the Apache Software Foundation (ASF) under one
   ~ or more contributor license agreements.  See the NOTICE file
   ~ distributed with this work for additional information
@@ -77,6 +77,12 @@
   ~ specific language governing permissions and limitations
   ~ under the License.
   -->
+<blockquote>
+<p>Apache Druid supports two query languages: <a href="/docs/0.18.0/querying/sql.html">Druid SQL</a> and <a href="/docs/0.18.0/querying/querying.html">native queries</a>.
+This document describes the native
+language. For information about functions available in SQL, refer to the
+<a href="/docs/0.18.0/querying/sql.html#scalar-functions">SQL documentation</a>.</p>
+</blockquote>
 <p>Virtual columns are queryable column &quot;views&quot; created from a set of columns during a query.</p>
 <p>A virtual column can potentially draw from multiple underlying columns, although a virtual column always presents itself as a single column.</p>
 <p>Virtual columns can be used as dimensions or as inputs to aggregators.</p>
@@ -124,7 +130,7 @@
 <tr><td>outputType</td><td>The expression's output will be coerced to this type. Can be LONG, FLOAT, DOUBLE, or STRING.</td><td>no, default is FLOAT</td></tr>
 </tbody>
 </table>
-</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/topnmetricspec.html"><span class="arrow-prev">← </span><span class="function-name-prevnext">TopNMetricSpec</span></a><a class="docs-next button" href="/docs/0.18.0/development/extensions-contrib/influx.html"><span class="function-name-prevnext">InfluxDB Line Protocol Parser</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headi [...]
+</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/0.18.0/querying/sorting-orders.html"><span class="arrow-prev">← </span><span>String comparators</span></a><a class="docs-next button" href="/docs/0.18.0/development/geo.html"><span>Spatial filters</span><span class="arrow-next"> →</span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#virtual-column-types">Virtual column types</a><ul class="toc-headings"><li> [...]
                 document.addEventListener('keyup', function(e) {
                   if (e.target !== document.body) {
                     return;
diff --git a/docs/0.18.0/tutorials/cluster.html b/docs/0.18.0/tutorials/cluster.html
index f159f40..c0d6181 100644
--- a/docs/0.18.0/tutorials/cluster.html
+++ b/docs/0.18.0/tutorials/cluster.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/tutorials/docker.html b/docs/0.18.0/tutorials/docker.html
index 5cb0ca9..dbce692 100644
--- a/docs/0.18.0/tutorials/docker.html
+++ b/docs/0.18.0/tutorials/docker.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/tutorials/index.html b/docs/0.18.0/tutorials/index.html
index a55b15b..ce3846a 100644
--- a/docs/0.18.0/tutorials/index.html
+++ b/docs/0.18.0/tutorials/index.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/tutorials/tutorial-batch-hadoop.html b/docs/0.18.0/tutorials/tutorial-batch-hadoop.html
index f386a3d..9656825 100644
--- a/docs/0.18.0/tutorials/tutorial-batch-hadoop.html
+++ b/docs/0.18.0/tutorials/tutorial-batch-hadoop.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/tutorials/tutorial-batch.html b/docs/0.18.0/tutorials/tutorial-batch.html
index fe12288..664bcbf 100644
--- a/docs/0.18.0/tutorials/tutorial-batch.html
+++ b/docs/0.18.0/tutorials/tutorial-batch.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/tutorials/tutorial-compaction.html b/docs/0.18.0/tutorials/tutorial-compaction.html
index a47a293..b4cc6ee 100644
--- a/docs/0.18.0/tutorials/tutorial-compaction.html
+++ b/docs/0.18.0/tutorials/tutorial-compaction.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/tutorials/tutorial-delete-data.html b/docs/0.18.0/tutorials/tutorial-delete-data.html
index ea9c516..3b9462d 100644
--- a/docs/0.18.0/tutorials/tutorial-delete-data.html
+++ b/docs/0.18.0/tutorials/tutorial-delete-data.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/tutorials/tutorial-ingestion-spec.html b/docs/0.18.0/tutorials/tutorial-ingestion-spec.html
index 7ba7734..fa8a8ce 100644
--- a/docs/0.18.0/tutorials/tutorial-ingestion-spec.html
+++ b/docs/0.18.0/tutorials/tutorial-ingestion-spec.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/tutorials/tutorial-kafka.html b/docs/0.18.0/tutorials/tutorial-kafka.html
index e9f75f7..12fa112 100644
--- a/docs/0.18.0/tutorials/tutorial-kafka.html
+++ b/docs/0.18.0/tutorials/tutorial-kafka.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/tutorials/tutorial-kerberos-hadoop.html b/docs/0.18.0/tutorials/tutorial-kerberos-hadoop.html
index 4c8e8f9..b68118b 100644
--- a/docs/0.18.0/tutorials/tutorial-kerberos-hadoop.html
+++ b/docs/0.18.0/tutorials/tutorial-kerberos-hadoop.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/tutorials/tutorial-query.html b/docs/0.18.0/tutorials/tutorial-query.html
index 79a5cf6..4540172 100644
--- a/docs/0.18.0/tutorials/tutorial-query.html
+++ b/docs/0.18.0/tutorials/tutorial-query.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/tutorials/tutorial-retention.html b/docs/0.18.0/tutorials/tutorial-retention.html
index 8f3e385..f85644c 100644
--- a/docs/0.18.0/tutorials/tutorial-retention.html
+++ b/docs/0.18.0/tutorials/tutorial-retention.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/tutorials/tutorial-rollup.html b/docs/0.18.0/tutorials/tutorial-rollup.html
index de743ba..caf42de 100644
--- a/docs/0.18.0/tutorials/tutorial-rollup.html
+++ b/docs/0.18.0/tutorials/tutorial-rollup.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/tutorials/tutorial-transform-spec.html b/docs/0.18.0/tutorials/tutorial-transform-spec.html
index 3bcf12e..719a29b 100644
--- a/docs/0.18.0/tutorials/tutorial-transform-spec.html
+++ b/docs/0.18.0/tutorials/tutorial-transform-spec.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {
diff --git a/docs/0.18.0/tutorials/tutorial-update-data.html b/docs/0.18.0/tutorials/tutorial-update-data.html
index d8e461f..44705ef 100644
--- a/docs/0.18.0/tutorials/tutorial-update-data.html
+++ b/docs/0.18.0/tutorials/tutorial-update-data.html
@@ -3,7 +3,7 @@
               function gtag(){dataLayer.push(arguments); }
               gtag('js', new Date());
               gtag('config', 'UA-131010415-1');
-            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
+            </script><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css"/><link rel="stylesheet" href="/css/code-block-buttons.css"/><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><script type="text/javascript" src="/js/code-block-buttons.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head>< [...]
             var coll = document.getElementsByClassName('collapsible');
             var checkActiveCategory = true;
             for (var i = 0; i < coll.length; i++) {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org