<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="FETCH_ROWS_TIMEOUT_MS">
  <title>FETCH_ROWS_TIMEOUT_MS Query Option</title>
  <titlealts audience="PDF">
    <navtitle>FETCH_ROWS_TIMEOUT_MS</navtitle>
  </titlealts>
  <prolog>
    <metadata>
      <data name="Category" value="Impala"/>
      <data name="Category" value="Impala Query Options"/>
      <data name="Category" value="Querying"/>
      <data name="Category" value="Developers"/>
      <data name="Category" value="Data Analysts"/>
    </metadata>
  </prolog>
  <conbody>
    <p>Use the <codeph>FETCH_ROWS_TIMEOUT_MS</codeph> query option to control
      how long Impala waits for query results when clients fetch rows.</p>
    <p> When this query option is set to <codeph>0</codeph>, fetch requests wait
      indefinitely.</p>
    <p>The timeout applies both when query result spooling is enabled and disabled:<ul>
        <li>When result spooling is disabled (<codeph>SPOOL_QUERY_RESULTS =
            FALSE</codeph>), the timeout controls how long a client waits for a
          single row batch to be produced by the coordinator. </li>
        <li>When result spooling is enabled ( (<codeph>SPOOL_QUERY_RESULTS =
            TRUE</codeph>), a client can fetch multiple row batches at a time,
          so this timeout controls the total time a client waits for row batches
          to be produced.</li>
      </ul></p>
    <p>The timeout also applies to fetch requests issued against queries in the
      'RUNNING' state. A 'RUNNING' query has no rows available, so any fetch
      request will wait until the query transitions to the 'FINISHED' state and
      for it to fetch all requested rows. A query in the 'FINISHED' state means
      that the rows are available to be fetched.</p>
    <p><b>Type:</b>
      <codeph>INT</codeph></p>
    <p><b>Default:</b>
      <codeph>10000</codeph> (10 seconds)</p>
    <p><b>Added in:</b>
      <keyword keyref="impala34"/></p>
    <p><b>Related information:</b>
      <xref href="impala_max_result_spooling_mem.xml#MAX_RESULT_SPOOLING_MEM"/>,
        <xref
        href="impala_max_spilled_result_spooling_mem.xml#MAX_SPILLED_RESULT_SPOOLING_MEM"
      />, <xref href="impala_spool_query_results.xml#SPOOL_QUERY_RESULTS"/></p>
  </conbody>
</concept>
