blob: b9c05a773b4833ac51dbfe2941f8640c4d33569c [file] [log] [blame]
<!DOCTYPE html>
<html class="no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Identifier clause - Spark 4.1.0-preview1 Documentation</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&Courier+Prime:wght@400;700&display=swap" rel="stylesheet">
<link href="css/custom.css" rel="stylesheet">
<script src="js/vendor/modernizr-2.6.1-respond-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/pygments-default.css">
<link rel="stylesheet" href="css/docsearch.min.css" />
<link rel="stylesheet" href="css/docsearch.css">
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(["disableCookies"]);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '40']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</head>
<body class="global">
<!-- This code is taken from http://twitter.github.com/bootstrap/examples/hero.html -->
<nav class="navbar navbar-expand-lg navbar-dark p-0 px-4 fixed-top" style="background: #1d6890;" id="topbar">
<div class="navbar-brand"><a href="index.html">
<img src="https://spark.apache.org/images/spark-logo-rev.svg" width="141" height="72"/></a><span class="version">4.1.0-preview1</span>
</div>
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarCollapse" aria-controls="navbarCollapse"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav me-auto">
<li class="nav-item"><a href="index.html" class="nav-link">Overview</a></li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" id="navbarQuickStart" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Programming Guides</a>
<div class="dropdown-menu" aria-labelledby="navbarQuickStart">
<a class="dropdown-item" href="quick-start.html">Quick Start</a>
<a class="dropdown-item" href="rdd-programming-guide.html">RDDs, Accumulators, Broadcasts Vars</a>
<a class="dropdown-item" href="sql-programming-guide.html">SQL, DataFrames, and Datasets</a>
<a class="dropdown-item" href="streaming/index.html">Structured Streaming</a>
<a class="dropdown-item" href="streaming-programming-guide.html">Spark Streaming (DStreams)</a>
<a class="dropdown-item" href="ml-guide.html">MLlib (Machine Learning)</a>
<a class="dropdown-item" href="graphx-programming-guide.html">GraphX (Graph Processing)</a>
<a class="dropdown-item" href="sparkr.html">SparkR (R on Spark)</a>
<a class="dropdown-item" href="api/python/getting_started/index.html">PySpark (Python on Spark)</a>
<a class="dropdown-item" href="declarative-pipelines-programming-guide.html">Declarative Pipelines</a>
</div>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" id="navbarAPIDocs" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">API Docs</a>
<div class="dropdown-menu" aria-labelledby="navbarAPIDocs">
<a class="dropdown-item" href="api/python/index.html">Python</a>
<a class="dropdown-item" href="api/scala/org/apache/spark/index.html">Scala</a>
<a class="dropdown-item" href="api/java/index.html">Java</a>
<a class="dropdown-item" href="api/R/index.html">R</a>
<a class="dropdown-item" href="api/sql/index.html">SQL, Built-in Functions</a>
</div>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" id="navbarDeploying" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Deploying</a>
<div class="dropdown-menu" aria-labelledby="navbarDeploying">
<a class="dropdown-item" href="cluster-overview.html">Overview</a>
<a class="dropdown-item" href="submitting-applications.html">Submitting Applications</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="spark-standalone.html">Spark Standalone</a>
<a class="dropdown-item" href="running-on-yarn.html">YARN</a>
<a class="dropdown-item" href="running-on-kubernetes.html">Kubernetes</a>
</div>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" id="navbarMore" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">More</a>
<div class="dropdown-menu" aria-labelledby="navbarMore">
<a class="dropdown-item" href="configuration.html">Configuration</a>
<a class="dropdown-item" href="monitoring.html">Monitoring</a>
<a class="dropdown-item" href="tuning.html">Tuning Guide</a>
<a class="dropdown-item" href="job-scheduling.html">Job Scheduling</a>
<a class="dropdown-item" href="security.html">Security</a>
<a class="dropdown-item" href="hardware-provisioning.html">Hardware Provisioning</a>
<a class="dropdown-item" href="migration-guide.html">Migration Guide</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="building-spark.html">Building Spark</a>
<a class="dropdown-item" href="https://spark.apache.org/contributing.html">Contributing to Spark</a>
<a class="dropdown-item" href="https://spark.apache.org/third-party-projects.html">Third Party Projects</a>
</div>
</li>
<li class="nav-item">
<input type="text" id="docsearch-input" placeholder="Search the docs…">
</li>
</ul>
<!--<span class="navbar-text navbar-right"><span class="version-text">v4.1.0-preview1</span></span>-->
</div>
</nav>
<div class="container">
<div class="left-menu-wrapper">
<div class="left-menu">
<h3><a href="sql-programming-guide.html">Spark SQL Guide</a></h3>
<ul>
<li>
<a href="sql-getting-started.html">
Getting Started
</a>
</li>
<li>
<a href="sql-data-sources.html">
Data Sources
</a>
</li>
<li>
<a href="sql-performance-tuning.html">
Performance Tuning
</a>
</li>
<li>
<a href="sql-distributed-sql-engine.html">
Distributed SQL Engine
</a>
</li>
<li>
<a href="sql-pyspark-pandas-with-arrow.html">
PySpark Usage Guide for Pandas with Apache Arrow
</a>
</li>
<li>
<a href="sql-migration-guide.html">
Migration Guide
</a>
</li>
<li>
<a href="sql-ref.html">
SQL Reference
</a>
</li>
<ul>
<li>
<a href="sql-ref-ansi-compliance.html">
ANSI Compliance
</a>
</li>
<li>
<a href="sql-ref-datatypes.html">
Data Types
</a>
</li>
<li>
<a href="sql-ref-datetime-pattern.html">
Datetime Pattern
</a>
</li>
<li>
<a href="sql-ref-number-pattern.html">
Number Pattern
</a>
</li>
<li>
<a href="sql-ref-operators.html">
Operators
</a>
</li>
<li>
<a href="sql-ref-functions.html">
Functions
</a>
</li>
<li>
<a href="sql-ref-identifier.html">
Identifiers
</a>
</li>
<li>
<a href="sql-ref-identifier-clause.html">
IDENTIFIER clause
</a>
</li>
<li>
<a href="sql-ref-literals.html">
Literals
</a>
</li>
<li>
<a href="sql-ref-null-semantics.html">
Null Semantics
</a>
</li>
<li>
<a href="sql-ref-syntax.html">
SQL Syntax
</a>
</li>
</ul>
<li>
<a href="sql-error-conditions.html">
Error Conditions
</a>
</li>
</ul>
</div>
</div>
<input id="nav-trigger" class="nav-trigger" checked type="checkbox">
<label for="nav-trigger"></label>
<div class="content-with-sidebar mr-3" id="content">
<h1 class="title">IDENTIFIER clause</h1>
<h3 id="description">Description</h3>
<p>Converts a constant <code class="language-plaintext highlighter-rouge">STRING</code> expression into a SQL object name.
The purpose of this clause is to allow for templating of identifiers in SQL statements without opening up the risk of SQL injection attacks.
Typically, this clause is used with a parameter marker or a variable as argument.</p>
<h3 id="syntax">Syntax</h3>
<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">IDENTIFIER</span> <span class="p">(</span> <span class="n">strExpr</span> <span class="p">)</span>
</code></pre></div></div>
<h3 id="parameters">Parameters</h3>
<ul>
<li><strong>strExpr</strong>: A constant <code class="language-plaintext highlighter-rouge">STRING</code> expression. Typically, the expression includes a parameter marker.</li>
</ul>
<h3 id="returns">Returns</h3>
<p>A (qualified) identifier which can be used as a:</p>
<ul>
<li>qualified table name</li>
<li>namespace name</li>
<li>function name</li>
<li>qualified column or attribute reference</li>
</ul>
<h3 id="examples">Examples</h3>
<h4 id="scala-examples">Scala examples</h4>
<p>These examples use named parameter markers to templatize queries.</p>
<div class="language-scala highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// Creation of a table using parameter marker.</span>
<span class="nv">spark</span><span class="o">.</span><span class="py">sql</span><span class="o">(</span><span class="s">"CREATE TABLE IDENTIFIER(:mytab)(c1 INT)"</span><span class="o">,</span> <span class="n">args</span> <span class="k">=</span> <span class="nc">Map</span><span class="o">(</span><span class="s">"mytab"</span> <span class="o">-&gt;</span> <span class="s">"tab1"</span><span class="o">)).</span><span class="py">show</span><span class="o">()</span>
<span class="nv">spark</span><span class="o">.</span><span class="py">sql</span><span class="o">(</span><span class="s">"DESCRIBE IDENTIFIER(:mytab)"</span><span class="o">,</span> <span class="n">args</span> <span class="k">=</span> <span class="nc">Map</span><span class="o">(</span><span class="s">"mytab"</span> <span class="o">-&gt;</span> <span class="s">"tab1"</span><span class="o">)).</span><span class="py">show</span><span class="o">()</span>
<span class="o">+--------+---------+-------+</span>
<span class="o">|</span><span class="n">col_name</span><span class="o">|</span><span class="n">data_type</span><span class="o">|</span><span class="n">comment</span><span class="o">|</span>
<span class="o">+--------+---------+-------+</span>
<span class="o">|</span> <span class="n">c1</span><span class="o">|</span> <span class="n">int</span><span class="o">|</span> <span class="nc">NULL</span><span class="o">|</span>
<span class="o">+--------+---------+-------+</span>
<span class="c1">// Altering a table with a fixed schema and a parameterized table name. </span>
<span class="nv">spark</span><span class="o">.</span><span class="py">sql</span><span class="o">(</span><span class="s">"ALTER TABLE IDENTIFIER('default.' || :mytab) ADD COLUMN c2 INT"</span><span class="o">,</span> <span class="n">args</span> <span class="k">=</span> <span class="nc">Map</span><span class="o">(</span><span class="s">"mytab"</span> <span class="o">-&gt;</span> <span class="s">"tab1"</span><span class="o">)).</span><span class="py">show</span><span class="o">()</span>
<span class="nv">spark</span><span class="o">.</span><span class="py">sql</span><span class="o">(</span><span class="s">"DESCRIBE IDENTIFIER(:mytab)"</span><span class="o">,</span> <span class="n">args</span> <span class="k">=</span> <span class="nc">Map</span><span class="o">(</span><span class="s">"mytab"</span> <span class="o">-&gt;</span> <span class="s">"default.tab1"</span><span class="o">)).</span><span class="py">show</span><span class="o">()</span>
<span class="o">+--------+---------+-------+</span>
<span class="o">|</span><span class="n">col_name</span><span class="o">|</span><span class="n">data_type</span><span class="o">|</span><span class="n">comment</span><span class="o">|</span>
<span class="o">+--------+---------+-------+</span>
<span class="o">|</span> <span class="n">c1</span><span class="o">|</span> <span class="n">int</span><span class="o">|</span> <span class="nc">NULL</span><span class="o">|</span>
<span class="o">|</span> <span class="n">c2</span><span class="o">|</span> <span class="n">int</span><span class="o">|</span> <span class="nc">NULL</span><span class="o">|</span>
<span class="o">+--------+---------+-------+</span>
<span class="c1">// A parameterized reference to a table in a query. This table name is qualified and uses back-ticks.</span>
<span class="nv">spark</span><span class="o">.</span><span class="py">sql</span><span class="o">(</span><span class="s">"SELECT * FROM IDENTIFIER(:mytab)"</span><span class="o">,</span> <span class="n">args</span> <span class="k">=</span> <span class="nc">Map</span><span class="o">(</span><span class="s">"mytab"</span> <span class="o">-&gt;</span> <span class="s">"`default`.`tab1`"</span><span class="o">)).</span><span class="py">show</span><span class="o">()</span>
<span class="o">+---+---+</span>
<span class="o">|</span> <span class="n">c1</span><span class="o">|</span> <span class="n">c2</span><span class="o">|</span>
<span class="o">+---+---+</span>
<span class="o">+---+---+</span>
<span class="c1">// You cannot qualify the IDENTIFIER clause or use it as a qualifier itself.</span>
<span class="nv">spark</span><span class="o">.</span><span class="py">sql</span><span class="o">(</span><span class="s">"SELECT * FROM myschema.IDENTIFIER(:mytab)"</span><span class="o">,</span> <span class="n">args</span> <span class="k">=</span> <span class="nc">Map</span><span class="o">(</span><span class="s">"mytab"</span> <span class="o">-&gt;</span> <span class="s">"`tab1`"</span><span class="o">)).</span><span class="py">show</span><span class="o">()</span>
<span class="o">[</span><span class="kt">INVALID_SQL_SYNTAX.INVALID_TABLE_VALUED_FUNC_NAME</span><span class="o">]</span> <span class="n">`myschema`</span><span class="o">.</span><span class="n">`IDENTIFIER`</span><span class="o">.</span>
<span class="nv">spark</span><span class="o">.</span><span class="py">sql</span><span class="o">(</span><span class="s">"SELECT * FROM IDENTIFIER(:myschema).mytab"</span><span class="o">,</span> <span class="n">args</span> <span class="k">=</span> <span class="nc">Map</span><span class="o">(</span><span class="s">"mychema"</span> <span class="o">-&gt;</span> <span class="s">"`default`"</span><span class="o">)).</span><span class="py">show</span><span class="o">()</span>
<span class="o">[</span><span class="kt">PARSE_SYNTAX_ERROR</span><span class="o">]</span>
<span class="c1">// Dropping a table with separate schema and table parameters.</span>
<span class="nv">spark</span><span class="o">.</span><span class="py">sql</span><span class="o">(</span><span class="s">"DROP TABLE IDENTIFIER(:myschema || '.' || :mytab)"</span><span class="o">,</span> <span class="n">args</span> <span class="k">=</span> <span class="nc">Map</span><span class="o">(</span><span class="s">"myschema"</span> <span class="o">-&gt;</span> <span class="s">"default"</span><span class="o">,</span> <span class="s">"mytab"</span> <span class="o">-&gt;</span> <span class="s">"tab1"</span><span class="o">)).</span><span class="py">show</span><span class="o">()</span>
<span class="c1">// A parameterized column reference</span>
<span class="nv">spark</span><span class="o">.</span><span class="py">sql</span><span class="o">(</span><span class="s">"SELECT IDENTIFIER(:col) FROM VALUES(1) AS T(c1)"</span><span class="o">,</span> <span class="n">args</span> <span class="k">=</span> <span class="nc">Map</span><span class="o">(</span><span class="s">"col"</span> <span class="o">-&gt;</span> <span class="s">"t.c1"</span><span class="o">)).</span><span class="py">show</span><span class="o">()</span>
<span class="o">+---+</span>
<span class="o">|</span> <span class="n">c1</span><span class="o">|</span>
<span class="o">+---+</span>
<span class="o">|</span> <span class="mi">1</span><span class="o">|</span>
<span class="o">+---+</span>
<span class="c1">// Passing in a function name as a parameter</span>
<span class="nv">spark</span><span class="o">.</span><span class="py">sql</span><span class="o">(</span><span class="s">"SELECT IDENTIFIER(:func)(-1)"</span><span class="o">,</span> <span class="n">args</span> <span class="k">=</span> <span class="nc">Map</span><span class="o">(</span><span class="s">"func"</span> <span class="o">-&gt;</span> <span class="s">"abs"</span><span class="o">)).</span><span class="py">show</span><span class="o">();</span>
<span class="o">+-------+</span>
<span class="o">|</span><span class="nf">abs</span><span class="o">(-</span><span class="mi">1</span><span class="o">)|</span>
<span class="o">+-------+</span>
<span class="o">|</span> <span class="mi">1</span><span class="o">|</span>
<span class="o">+-------+</span>
</code></pre></div></div>
<h4 id="sql-examples">SQL examples</h4>
<p>These examples use SQL variables to templatize queries.</p>
<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">DECLARE</span> <span class="n">mytab</span> <span class="o">=</span> <span class="s1">'tab1'</span><span class="p">;</span>
<span class="c1">-- Creation of a table using variable.</span>
<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">IDENTIFIER</span><span class="p">(</span><span class="n">mytab</span><span class="p">)(</span><span class="n">c1</span> <span class="nb">INT</span><span class="p">);</span>
<span class="k">DESCRIBE</span> <span class="n">IDENTIFIER</span><span class="p">(</span><span class="n">mytab</span><span class="p">);</span>
<span class="o">+</span><span class="c1">--------+---------+-------+</span>
<span class="o">|</span><span class="n">col_name</span><span class="o">|</span><span class="n">data_type</span><span class="o">|</span><span class="k">comment</span><span class="o">|</span>
<span class="o">+</span><span class="c1">--------+---------+-------+</span>
<span class="o">|</span> <span class="n">c1</span><span class="o">|</span> <span class="nb">int</span><span class="o">|</span> <span class="k">NULL</span><span class="o">|</span>
<span class="o">+</span><span class="c1">--------+---------+-------+</span>
<span class="c1">-- Altering a table with a fixed schema and a parameterized table name. </span>
<span class="k">ALTER</span> <span class="k">TABLE</span> <span class="n">IDENTIFIER</span><span class="p">(</span><span class="s1">'default.'</span> <span class="o">||</span> <span class="n">mytab</span><span class="p">)</span> <span class="k">ADD</span> <span class="k">COLUMN</span> <span class="n">c2</span> <span class="nb">INT</span><span class="p">;</span>
<span class="k">SET</span> <span class="n">VAR</span> <span class="n">mytab</span> <span class="o">=</span> <span class="s1">'`default`.`tab1`'</span><span class="p">;</span>
<span class="k">DESCRIBE</span> <span class="n">IDENTIFIER</span><span class="p">(</span><span class="n">mytab</span><span class="p">);</span>
<span class="o">+</span><span class="c1">--------+---------+-------+</span>
<span class="o">|</span><span class="n">col_name</span><span class="o">|</span><span class="n">data_type</span><span class="o">|</span><span class="k">comment</span><span class="o">|</span>
<span class="o">+</span><span class="c1">--------+---------+-------+</span>
<span class="o">|</span> <span class="n">c1</span><span class="o">|</span> <span class="nb">int</span><span class="o">|</span> <span class="k">NULL</span><span class="o">|</span>
<span class="o">|</span> <span class="n">c2</span><span class="o">|</span> <span class="nb">int</span><span class="o">|</span> <span class="k">NULL</span><span class="o">|</span>
<span class="o">+</span><span class="c1">--------+---------+-------+</span>
<span class="c1">-- A parameterized reference to a table in a query. This table name is qualified and uses back-ticks.</span>
<span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">IDENTIFIER</span><span class="p">(</span><span class="n">mytab</span><span class="p">);</span>
<span class="o">+</span><span class="c1">---+---+</span>
<span class="o">|</span> <span class="n">c1</span><span class="o">|</span> <span class="n">c2</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---+---+</span>
<span class="o">+</span><span class="c1">---+---+</span>
<span class="c1">-- Dropping a table with separate schema and table parameters.</span>
<span class="k">DECLARE</span> <span class="n">myschema</span> <span class="o">=</span> <span class="s1">'default'</span><span class="p">;</span>
<span class="k">SET</span> <span class="n">VAR</span> <span class="n">mytab</span> <span class="o">=</span> <span class="s1">'tab1'</span><span class="p">;</span>
<span class="k">DROP</span> <span class="k">TABLE</span> <span class="n">IDENTIFIER</span><span class="p">(</span><span class="n">myschema</span> <span class="o">||</span> <span class="s1">'.'</span> <span class="o">||</span> <span class="n">mytab</span><span class="p">);</span>
<span class="c1">-- A parameterized column reference</span>
<span class="k">DECLARE</span> <span class="n">col</span> <span class="o">=</span> <span class="s1">'t.c1'</span><span class="p">;</span>
<span class="k">SELECT</span> <span class="n">IDENTIFIER</span><span class="p">(</span><span class="n">col</span><span class="p">)</span> <span class="k">FROM</span> <span class="k">VALUES</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="k">AS</span> <span class="n">T</span><span class="p">(</span><span class="n">c1</span><span class="p">);</span>
<span class="o">+</span><span class="c1">---+</span>
<span class="o">|</span> <span class="n">c1</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---+</span>
<span class="o">|</span> <span class="mi">1</span><span class="o">|</span>
<span class="o">+</span><span class="c1">---+</span>
<span class="c1">-- Passing in a function name as a parameter</span>
<span class="k">DECLARE</span> <span class="n">func</span> <span class="o">=</span> <span class="s1">'abs'</span><span class="p">;</span>
<span class="k">SELECT</span> <span class="n">IDENTIFIER</span><span class="p">(</span><span class="n">func</span><span class="p">)(</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<span class="o">+</span><span class="c1">-------+</span>
<span class="o">|</span><span class="k">abs</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-------+</span>
<span class="o">|</span> <span class="mi">1</span><span class="o">|</span>
<span class="o">+</span><span class="c1">-------+</span>
</code></pre></div></div>
</div>
<!-- /container -->
</div>
<script src="js/vendor/jquery-3.5.1.min.js"></script>
<script src="js/vendor/bootstrap.bundle.min.js"></script>
<script src="js/vendor/anchor.min.js"></script>
<script src="js/main.js"></script>
<script type="text/javascript" src="js/vendor/docsearch.min.js"></script>
<script type="text/javascript">
// DocSearch is entirely free and automated. DocSearch is built in two parts:
// 1. a crawler which we run on our own infrastructure every 24 hours. It follows every link
// in your website and extract content from every page it traverses. It then pushes this
// content to an Algolia index.
// 2. a JavaScript snippet to be inserted in your website that will bind this Algolia index
// to your search input and display its results in a dropdown UI. If you want to find more
// details on how works DocSearch, check the docs of DocSearch.
docsearch({
apiKey: 'd62f962a82bc9abb53471cb7b89da35e',
appId: 'RAI69RXRSK',
indexName: 'apache_spark',
inputSelector: '#docsearch-input',
enhancedSearchInput: true,
algoliaOptions: {
'facetFilters': ["version:4.1.0-preview1"]
},
debug: false // Set debug to true if you want to inspect the dropdown
});
</script>
<!-- MathJax Section -->
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
TeX: { equationNumbers: { autoNumber: "AMS" } }
});
</script>
<script>
// Note that we load MathJax this way to work with local file (file://), HTTP and HTTPS.
// We could use "//cdn.mathjax...", but that won't support "file://".
(function(d, script) {
script = d.createElement('script');
script.type = 'text/javascript';
script.async = true;
script.onload = function(){
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ["$", "$"], ["\\\\(","\\\\)"] ],
displayMath: [ ["$$","$$"], ["\\[", "\\]"] ],
processEscapes: true,
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre']
}
});
};
script.src = ('https:' == document.location.protocol ? 'https://' : 'http://') +
'cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js' +
'?config=TeX-AMS-MML_HTMLorMML';
d.getElementsByTagName('head')[0].appendChild(script);
}(document));
</script>
</body>
</html>