diff --git a/docs/0.9.8/sqlpp/parquet.html b/docs/0.9.8/sqlpp/parquet.html
new file mode 100644
index 0000000..facd6f3
--- /dev/null
+++ b/docs/0.9.8/sqlpp/parquet.html
@@ -0,0 +1,595 @@
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia Site Renderer 1.8.1 from src/site/markdown/sqlpp/parquet.md at 2022-05-12
+ | Rendered using Apache Maven Fluido Skin 1.7
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20220512" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>AsterixDB &#x2013; Querying Parquet Files</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.7.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+    <script type="text/javascript" src="../js/apache-maven-fluido-1.7.min.js"></script>
+
+  </head>
+  <body class="topBarDisabled">
+    <div class="container-fluid">
+      <div id="banner">
+        <div class="pull-left"><a href=".././" id="bannerLeft"><img src="../images/asterixlogo.png"  alt="AsterixDB"/></a></div>
+        <div class="pull-right"></div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+        <li id="publishDate">Last Published: 2022-05-12</li>
+      <li id="projectVersion" class="pull-right">Version: 0.9.8</li>
+      <li class="pull-right"><a href="../index.html" title="Documentation Home">Documentation Home</a></li>
+        </ul>
+      </div>
+      <div class="row-fluid">
+        <div id="leftColumn" class="span2">
+          <div class="well sidebar-nav">
+    <ul class="nav nav-list">
+      <li class="nav-header">Get Started - Installation</li>
+    <li><a href="../ncservice.html" title="Option 1: using NCService"><span class="none"></span>Option 1: using NCService</a></li>
+    <li><a href="../ansible.html" title="Option 2: using Ansible"><span class="none"></span>Option 2: using Ansible</a></li>
+    <li><a href="../aws.html" title="Option 3: using Amazon Web Services"><span class="none"></span>Option 3: using Amazon Web Services</a></li>
+      <li class="nav-header">AsterixDB Primer</li>
+    <li><a href="../sqlpp/primer-sqlpp.html" title="Using SQL++"><span class="none"></span>Using SQL++</a></li>
+      <li class="nav-header">Data Model</li>
+    <li><a href="../datamodel.html" title="The Asterix Data Model"><span class="none"></span>The Asterix Data Model</a></li>
+      <li class="nav-header">Queries</li>
+    <li><a href="../sqlpp/manual.html" title="The SQL++ Query Language"><span class="none"></span>The SQL++ Query Language</a></li>
+    <li><a href="../SQLPP.html" title="Raw SQL++ Grammar"><span class="none"></span>Raw SQL++ Grammar</a></li>
+    <li><a href="../sqlpp/builtins.html" title="Builtin Functions"><span class="none"></span>Builtin Functions</a></li>
+      <li class="nav-header">API/SDK</li>
+    <li><a href="../api.html" title="HTTP API"><span class="none"></span>HTTP API</a></li>
+    <li><a href="../csv.html" title="CSV Output"><span class="none"></span>CSV Output</a></li>
+      <li class="nav-header">Advanced Features</li>
+    <li><a href="../aql/externaldata.html" title="Accessing External Data"><span class="none"></span>Accessing External Data</a></li>
+    <li><a href="../feeds.html" title="Data Ingestion with Feeds"><span class="none"></span>Data Ingestion with Feeds</a></li>
+    <li><a href="../udf.html" title="User Defined Functions"><span class="none"></span>User Defined Functions</a></li>
+    <li><a href="../sqlpp/filters.html" title="Filter-Based LSM Index Acceleration"><span class="none"></span>Filter-Based LSM Index Acceleration</a></li>
+    <li><a href="../sqlpp/fulltext.html" title="Support of Full-text Queries"><span class="none"></span>Support of Full-text Queries</a></li>
+    <li><a href="../sqlpp/similarity.html" title="Support of Similarity Queries"><span class="none"></span>Support of Similarity Queries</a></li>
+    <li><a href="../geo/quickstart.html" title="GIS Support Overview"><span class="none"></span>GIS Support Overview</a></li>
+    <li><a href="../geo/functions.html" title="GIS Functions"><span class="none"></span>GIS Functions</a></li>
+    <li><a href="../interval_join.html" title="Support of Interval Joins"><span class="none"></span>Support of Interval Joins</a></li>
+    <li><a href="../spatial_join.html" title="Support of Spatial Joins"><span class="none"></span>Support of Spatial Joins</a></li>
+    <li><a href="../sqlpp/arrayindex.html" title="Support of Array Indexes"><span class="none"></span>Support of Array Indexes</a></li>
+      <li class="nav-header">Deprecated</li>
+    <li><a href="../aql/primer.html" title="AsterixDB Primer: Using AQL"><span class="none"></span>AsterixDB Primer: Using AQL</a></li>
+    <li><a href="../aql/manual.html" title="Queries: The Asterix Query Language (AQL)"><span class="none"></span>Queries: The Asterix Query Language (AQL)</a></li>
+    <li><a href="../aql/builtins.html" title="Queries: Builtin Functions (AQL)"><span class="none"></span>Queries: Builtin Functions (AQL)</a></li>
+</ul>
+          <hr />
+          <div id="poweredBy">
+            <div class="clear"></div>
+            <div class="clear"></div>
+            <div class="clear"></div>
+            <div class="clear"></div>
+<a href=".././" title="AsterixDB" class="builtBy"><img class="builtBy"  alt="AsterixDB" src="../images/asterixlogo.png"    /></a>
+            </div>
+          </div>
+        </div>
+        <div id="bodyColumn"  class="span10" >
+<!--
+ ! 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.
+ !-->
+<h1>Querying Parquet Files</h1>
+<div class="section">
+<h2><a name="Table_of_Contents"></a><a name="toc" id="toc">Table of Contents</a></h2>
+<ul>
+
+<li><a href="#Overview">Overview</a></li>
+<li><a href="#DDL">DDL</a></li>
+<li><a href="#QueryParquetFiles">Query Parquet Files</a></li>
+<li><a href="#TypeCompatibility">Type Compatibility</a></li>
+<li><a href="#ParquetTypeFlags">Parquet Type Flags</a></li>
+</ul></div>
+<div class="section">
+<h2><a name="Overview_.5BBack_to_TOC.5D"></a><a name="Overview" id="Overview">Overview</a> <font size="4"><a href="#toc">[Back to TOC]</a></font></h2>
+<p><a class="externalLink" href="https://parquet.apache.org/">Apache Parquet</a> is a columnar file format for storing semi-structured data (like JSON). Apache AsterixDB supports running queries against Parquet files that are stored in Amazon S3 and Microsoft Azure Blob Storage as <a href="../aql/externaldata.html">External Datasets</a>.</p></div>
+<div class="section">
+<h2><a name="DDL_.5BBack_to_TOC.5D"></a><a name="DDL" id="DDL">DDL</a> <font size="4"><a href="#toc">[Back to TOC]</a></font></h2>
+<p>To start, an end-user needs to create a type as follows:</p>
+
+<div>
+<div>
+<pre class="source">-- The type should not contain any declared fields
+CREATE TYPE ParquetType AS {
+}
+</pre></div></div>
+
+<p>Note that the created type does not have any declared fields. The reason is that Parquet files embed the schema within each file. Thus, no type is needed to be declared, and it is up to AsterixDB to read each file&#x2019;s schema. If the created type contains any declared type, AsterixDB will throw an error:</p>
+
+<div>
+<div>
+<pre class="source">Type 'ParquetType' contains declared fields, which is not supported for 'parquet' format
+</pre></div></div>
+
+<p>Next, the user can create an external dataset - using the declared type - as follows:</p>
+<div class="section">
+<h3><a name="Amazon_S3"></a>Amazon S3</h3>
+
+<div>
+<div>
+<pre class="source">CREATE EXTERNAL DATASET ParquetDataset(ParquetType) USING S3
+(
+    -- Replace &lt;ACCESS-KEY&gt; with your access key
+    (&quot;accessKeyId&quot;=&quot;&lt;ACCESS-KEY&gt;&quot;),
+
+    -- Replace &lt;SECRET-ACCESS-KEY&gt; with your access key
+    (&quot;secretAccessKey&quot; = &quot;&lt;SECRET-ACCESS-KEY&gt;&quot;),
+
+    -- S3 bucket
+    (&quot;container&quot;=&quot;parquetBucket&quot;),
+
+    -- Path to the parquet files within the bucket
+    (&quot;definition&quot;=&quot;path/to/parquet/files&quot;),
+
+    -- Specifying the format as parquet
+    (&quot;format&quot; = &quot;parquet&quot;)
+);
+</pre></div></div>
+</div>
+<div class="section">
+<h3><a name="Microsoft_Azure_Blob_Storage"></a>Microsoft Azure Blob Storage</h3>
+
+<div>
+<div>
+<pre class="source">CREATE EXTERNAL DATASET ParquetDataset(ParquetType) USING AZUREBLOB
+(
+    -- Replace &lt;ACCOUNT-NAME&gt; with your account name
+    (&quot;accountName&quot;=&quot;&lt;ACCOUNT-NAME&gt;&quot;),
+
+    -- Replace &lt;ACCOUNT-KEY&gt; with your account key
+    (&quot;accountKey&quot;=&quot;&lt;ACCOUNT-KEY&gt;&quot;),
+
+    -- Azure Blob container
+    (&quot;container&quot;=&quot;parquetContainer&quot;),
+
+    -- Path to the parquet files within the bucket
+    (&quot;definition&quot;=&quot;path/to/parquet/files&quot;),
+
+    -- Specifying the format as parquet
+    (&quot;format&quot; = &quot;parquet&quot;)
+);
+</pre></div></div>
+
+<p><i><b>Additional setting/properties could be set as detailed later in <a href="#ParquetTypeFlags">Parquet Type Flags</a></b></i></p></div></div>
+<div class="section">
+<h2><a name="Query_Parquet_Files_.5BBack_to_TOC.5D"></a><a name="QueryParquetFiles" id="QueryParquetFiles">Query Parquet Files</a> <font size="4"><a href="#toc">[Back to TOC]</a></font></h2>
+<p>To query the data stored in Parquet files, one can simply write a query against the created External Dataset. For example:</p>
+
+<div>
+<div>
+<pre class="source">SELECT COUNT(*)
+FROM ParquetDataset;
+</pre></div></div>
+
+<p>Another example:</p>
+
+<div>
+<div>
+<pre class="source">SELECT pd.age, COUNT(*) cnt
+FROM ParquetDataset pd
+GROUP BY pd.age;
+</pre></div></div>
+</div>
+<div class="section">
+<h2><a name="Type_Compatibility_.5BBack_to_TOC.5D"></a><a name="TypeCompatibility" id="TypeCompatibility">Type Compatibility</a> <font size="4"><a href="#toc">[Back to TOC]</a></font></h2>
+<p>AsterixDB supports Parquet&#x2019;s generic types such <tt>STRING</tt>, <tt>INT</tt> and <tt>DOUBLE</tt>. However, Parquet files could contain <a class="externalLink" href="https://github.com/apache/parquet-format/blob/master/LogicalTypes.md">additional types</a> such as <tt>DATE</tt> and <tt>DATETIME</tt> like types. The following table show the type mapping between Apache Parquet and AsterixDB:</p>
+
+<table border="0" class="table table-striped">
+    <thead>
+        
+<tr class="a">
+            
+<th>Parquet</th>
+            
+<th>AsterixDB</th>
+            
+<th>Value Examples</th>
+            
+<th>Comment</th>
+        </tr>
+    </thead>
+    <tbody>
+        
+<tr class="b">
+            
+<td><tt>BOOLEAN</tt></td>
+            
+<td><tt>BOOLEAN</tt></td>
+            
+<td><tt>true</tt> / <tt>false</tt></td>
+            
+<td>-</td>
+        </tr>
+        
+<tr class="a">
+            
+<td><tt>INT_8</tt></td>
+            
+<td rowspan="8"><tt>BIGINT</tt></td>
+            
+<td rowspan="8">
+                AsterixDB <tt>BIGINT</tt> Range:
+                
+<ul>
+                    
+<li><b>Min</b>:-9,223,372,036,854,775,808</li>
+                    
+<li><b>Max</b>: 9,223,372,036,854,775,807</li>
+                </ul>
+            </td>
+            
+<td rowspan="7">-</td>
+        </tr>
+        
+<tr class="b">
+            
+<td><tt>INT_16</tt></td>
+        </tr>
+        
+<tr class="a">
+            
+<td><tt>INT_32</tt></td>
+        </tr>
+        
+<tr class="b">
+            
+<td><tt>INT_64</tt></td>
+        </tr>
+        
+<tr class="a">
+            
+<td><tt>UNIT_8</tt></td>
+        </tr>
+        
+<tr class="b">
+            
+<td><tt>UINT_16</tt></td>
+        </tr>
+        
+<tr class="a">
+            
+<td><tt>UINT_32</tt></td>
+        </tr>
+        
+<tr class="b">
+            
+<td><tt>UINT_64</tt></td>
+            
+<td>There is a possibility that a value overflows. A warning will be issued in case of an overflow and
+                <tt>MISSING</tt> would be returned.
+            </td>
+        </tr>
+        
+<tr class="a">
+            
+<td><tt>FLOAT</tt></td>
+            
+<td rowspan="4"><tt>DOUBLE</tt></td>
+            
+<td rowspan="4">
+                AsterixDB <tt>DOUBLE</tt> Range:
+                
+<ul>
+                    
+<li><b>Min Positive Value</b>: 2^-1074</li>
+                    
+<li><b>Max Positive Value</b>: 2^1023</li>
+                </ul>
+            </td>
+            
+<td rowspan="2">-</td>
+        </tr>
+        
+<tr class="b">
+            
+<td><tt>DOUBLE</tt></td>
+        </tr>
+        
+<tr class="a">
+            
+<td><tt>FIXED_LEN_BYTE_ARRAY (DECIMAL)</tt></td>
+            
+<td rowspan="2">
+                Parquet <tt>DECIMAL</tt> values are converted to doubles, with the possibility of precision loss.
+                The flag <tt>decimal-to-double</tt> must be set upon creating the dataset.
+                
+<ul>
+<li><i>See <a href="#ParquetTypeFlags">Parquet Type Flags</a></i></li></ul>
+            </td>
+        </tr>
+        
+<tr class="b">
+            
+<td><tt>BINARY (DECIMAL)</tt></td>
+        </tr>
+        
+<tr class="a">
+            
+<td><tt>BINARY (ENUM)</tt></td>
+            
+<td><tt>&quot;Fruit&quot;</tt></td>
+            
+<td>Parquet Enum values are parsed as Strings</td>
+        </tr>
+        
+<tr class="b">
+            
+<td><tt>BINARY (UTF8)</tt></td>
+            
+<td><tt>STRING</tt></td>
+            
+<td><tt>&quot;Hello World&quot;</tt></td>
+            
+<td>-</td>
+        </tr>
+        
+<tr class="a">
+            
+<td><tt>FIXED_LEN_BYTE_ARRAY (UUID)</tt></td>
+            
+<td><tt>UUID</tt></td>
+            
+<td><tt>uuid(&quot;123e4567-e89b-12d3-a456-426614174000&quot;)</tt></td>
+            
+<td>-</td>
+        </tr>
+        
+<tr class="b">
+            
+<td><tt>INT_32 (DATE)</tt></td>
+            
+<td><tt>DATE</tt></td>
+            
+<td><tt>date(&quot;2021-11-01&quot;)</tt></td>
+            
+<td>-</td>
+        </tr>
+        
+<tr class="a">
+            
+<td><tt>INT_32 (TIME)</tt></td>
+            
+<td><tt>TIME</tt></td>
+            
+<td rowspan="2"><tt>time(&quot;00:00:00.000&quot;)</tt></td>
+            
+<td>Time in milliseconds.</td>
+        </tr>
+        
+<tr class="b">
+            
+<td><tt>INT_64 (TIME)</tt></td>
+            
+<td><tt>TIME</tt></td>
+            
+<td>Time in micro/nano seconds.</td>
+        </tr>
+        
+<tr class="a">
+            
+<td><tt>INT_64 (TIMESTAMP)</tt></td>
+            
+<td rowspan="2"><tt>DATETIME</tt></td>
+            
+<td rowspan="2"><tt>datetime(&quot;2021-11-01T21:37:13.738&quot;)&quot;</tt></td>
+            
+<td>Timestamp in milli/micro/nano seconds. Parquet also can store the timestamp values with the option
+                <tt>isAdjustedToUTC = true</tt>. To get the local timestamp value, the user can set the time zone ID 
+                by setting the value using the option <tt>timezone</tt> to get the local <tt>DATETIME</tt> value.
+                
+<ul>
+<li><i>See <a href="#ParquetTypeFlags">Parquet Type Flags</a></i></li></ul>
+            </td>
+        </tr>
+        
+<tr class="b">
+            
+<td><tt>INT96</tt></td>
+            
+<td>A timestamp values that separate days and time to form a timestamp. INT96 is always in localtime.</td>
+        </tr>
+        
+<tr class="a">
+            
+<td><tt>BINARY (JSON)</tt></td>
+            
+<td>any type</td>
+            
+<td>
+                
+<ul>
+                    
+<li><tt>{&quot;name&quot;: &quot;John&quot;}</tt></li>
+                    
+<li><tt>[1, 2, 3]</tt></li>
+                </ul> 
+            </td>
+            
+<td>
+                Parse JSON string into internal AsterixDB value.
+                The flag <tt>parse-json-string</tt> is set by default. To get the string value (i.e., not parsed as
+                AsterixDB value), unset the flag <tt>parse-json-string</tt>.
+                
+<ul>
+<li><i>See <a href="#ParquetTypeFlags">Parquet Type Flags</a></i></li></ul>
+            </td>
+        </tr>
+        
+<tr class="b">
+            
+<td><tt>BINARY</tt></td>
+            
+<td rowspan="2"><tt>BINARY</tt></td>
+            
+<td><tt>hex(&quot;0101FF&quot;)</tt></td>
+            
+<td>-</td>
+        </tr>
+        
+<tr class="a">
+            
+<td><tt>BSON</tt></td>
+            
+<td>N/A</td>
+            
+<td>BSON values will be returned as <tt>BINARY</tt></td>
+        </tr>
+        
+<tr class="b">
+            
+<td><tt>LIST</tt></td>
+            
+<td><tt>ARRAY</tt></td>
+            
+<td><tt>[1, 2, 3]</tt></td>
+            
+<td>Parquet's <tt>LIST</tt> type is converted into <tt>ARRAY</tt></td>
+        </tr>
+        
+<tr class="a">
+            
+<td><tt>MAP</tt></td>
+            
+<td><tt>ARRAY</tt> of <tt>OBJECT</tt></td>
+            
+<td><tt>[{&quot;key&quot;:1, &quot;value&quot;:1}, {&quot;key&quot;:2, &quot;value&quot;:2}]</tt></td>
+            
+<td>Parquet's <tt>MAP</tt> types are converted into an <tt>ARRAY</tt> of <tt>OBJECT</tt>. Each 
+                <tt>OBJECT</tt> value consists of two fields: <tt>key</tt> and <tt>value</tt>
+            </td>
+        </tr>
+        
+<tr class="b">
+            
+<td><tt>FIXED_LEN_BYTE_ARRAY (INTERVAL)</tt></td>
+            
+<td>-</td>
+            
+<td>N/A</td>
+            
+<td><tt>INTERVAL</tt> is not supported. A warning will be issued and <tt>MISSING</tt> value
+                will be returned.
+            </td>
+        </tr>
+    </tbody>
+</table>
+</div>
+<div class="section">
+<h2><a name="Parquet_Type_Flags_.5BBack_to_TOC.5D"></a><a name="ParquetTypeFlags" id="ParquetTypeFlags">Parquet Type Flags</a> <font size="4"><a href="#toc">[Back to TOC]</a></font></h2>
+<p>The table in <a href="#TypeCompatibility">Type Compatibility</a> shows the type mapping between Parquet and AsterixDB. Some of the Parquet types are not parsed by default as those type are not natively supported in AsterixDB. However, the user can set a flag to convert some of those types into a supported AsterixDB type.</p>
+<div class="section">
+<div class="section">
+<div class="section">
+<h5><a name="DECIMAL_TYPE"></a>DECIMAL TYPE</h5>
+<p>The user can enable parsing <tt>DECIMAL</tt> Parquet values by enabling a certain flag as in the following example:</p>
+
+<div>
+<div>
+<pre class="source">CREATE EXTERNAL DATASET ParquetDataset(ParquetType) USING S3
+(
+    -- Credintials and path to Parquet files
+    ...
+
+    -- Enable converting decimal values to double
+    (&quot;decimal-to-double&quot; = &quot;true&quot;)
+);
+</pre></div></div>
+
+<p>This flag will enable parsing/converting <tt>DECIMAL</tt> values/types into <tt>DOUBLE</tt>. For example, if the flag <tt>decimal-to-double</tt> is not set and a Parquet file contains a <tt>DECIMAL</tt> value, the following error will be thrown when running a query that request a <tt>DECIMAL</tt> value:</p>
+
+<div>
+<div>
+<pre class="source">Parquet type &quot;optional fixed_len_byte_array(16) decimalType (DECIMAL(38,18))&quot; is not supported by default. To enable type conversion, recreate the external dataset with the option &quot;decimal-to-double&quot; enabled
+</pre></div></div>
+
+<p>and the returned value will be <tt>MISSING</tt>. If the flag <tt>decimal-to-double</tt> is set, the converted <tt>DOUBLE</tt> value will be returned.</p></div>
+<div class="section">
+<h5><a name="TEMPORAL_TYPES"></a>TEMPORAL TYPES</h5>
+<p>For the temporal types (namely <tt>DATETIME</tt>), their values could be stored in Parquet with the option <tt>isAdjustedToUTC = true</tt>. Hence, the user has to provide the timezone ID to adjust their values to the local value by setting the flag <tt>timezone</tt>. To do so, a user can set the timezone ID to &#x201c;<b>PST</b>&#x201d; upon creating a dataset as in the following example:</p>
+
+<div>
+<div>
+<pre class="source">CREATE EXTERNAL DATASET ParquetDataset(ParquetType) USING S3
+(
+    -- Credintials and path to Parquet files
+    ...
+
+    -- Converting UTC time to PST time
+    (&quot;timezone&quot; = &quot;PST&quot;)
+);
+</pre></div></div>
+
+<p>If the flag <tt>timezone</tt> is not set, a warning will appear when running a query:</p>
+
+<div>
+<div>
+<pre class="source">Parquet file(s) contain &quot;datetime&quot; values that are adjusted to UTC. Recreate the external dataset and set &quot;timezone&quot; to get the local &quot;datetime&quot; value.
+</pre></div></div>
+
+<p>and the UTC <tt>DATETIME</tt> will be returned.</p></div>
+<div class="section">
+<h5><a name="JSON_TYPE"></a>JSON TYPE</h5>
+<p>By default, we parse the JSON values into AsterixDB values, where a user can process those values using <tt>SQL++</tt> queries. However, one could disable the parsing of JSON string values (which stored as <tt>STRING</tt>) by unsetting the flag <tt>parseJsonString</tt> as in the following example:</p>
+
+<div>
+<div>
+<pre class="source">CREATE EXTERNAL DATASET ParquetDataset(ParquetType) USING S3
+(
+    -- Credintials and path to Parquet files
+    ...
+
+    -- Stop parsing JSON string values
+    (&quot;parse-json-string&quot; = &quot;false&quot;)
+);
+</pre></div></div>
+
+<p>And the returned value will be of type <tt>STRING</tt>.</p></div>
+<div class="section">
+<h5><a name="INTERVAL_TYPE"></a>INTERVAL TYPE</h5>
+<p>Currently, AsterixDB do not support Parquet&#x2019;s <tt>INTERVAL</tt> type. When a query requests (or projects) an <tt>INTERVAL</tt> value, a warning will be issued and <tt>MISSING</tt> value will be returned instead.</p></div></div></div></div>
+        </div>
+      </div>
+    </div>
+    <hr/>
+    <footer>
+      <div class="container-fluid">
+        <div class="row-fluid">
+<div class="row-fluid">Apache AsterixDB, AsterixDB, Apache, the Apache
+        feather logo, and the Apache AsterixDB project logo are either
+        registered trademarks or trademarks of The Apache Software
+        Foundation in the United States and other countries.
+        All other marks mentioned may be trademarks or registered
+        trademarks of their respective owners.
+      </div>
+        </div>
+      </div>
+    </footer>
+  </body>
+</html>
