<!--
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.
-->
{{> www/common-header.tmpl }}
<h2>Queries</h2>
<p class="lead">This page lists all running queries, plus any completed queries that are
archived in memory. The size of that archive is controlled with the
<samp>--query_log_size</samp> command line parameter.</p>

<h3>{{num_executing_queries}} queries in flight</h3>

<table class='table table-hover table-border'>
  <tr>
    <th>User</th>
    <th>Default Db</th>
    <th>Statement</th>
    <th>Query Type</th>
    <th>Start Time</th>
    <th>Duration</th>
    <th>Scan Progress</th>
    <th>State</th>
    <th>Last Event</th>
    <th># rows fetched</th>
    <th>Resource Pool</th>
    <th>Details</th>
    <th>Action</th>
  </tr>
{{! filter to get just executing queries from in_flight_queries}}
{{#in_flight_queries}}
{{?executing}}
  <tr>
    <td>{{effective_user}}</td>
    <td>{{default_db}}</td>
    <td><samp>{{stmt}}</samp></td>
    <td><samp>{{stmt_type}}</samp></td>
    <td>{{start_time}}</td>
    <td>{{duration}}</td>
    <td>{{progress}}</td>
    <td><samp>{{state}}</samp></td>
    <td><samp>{{last_event}}</samp></td>
    <td>{{rows_fetched}}</td>
    <td>{{resource_pool}}</td>
    <td><a href='/query_plan?query_id={{query_id}}'>Details</a></td>
    <td><a href='/cancel_query?query_id={{query_id}}'>Cancel</a></td>
  </tr>
{{/executing}}
{{/in_flight_queries}}
</table>

<h3>
  {{num_waiting_queries}} waiting to be closed
  <sup><a href='#' data-toggle="tooltip" title="{{waiting-tooltip}}">[?]</a></sup>
</h3>

<table class='table table-hover table-border'>
  <tr>
    <th>User</th>
    <th>Default Db</th>
    <th>Statement</th>
    <th>Query Type</th>
    <th>Start Time</th>
    <th>Waiting Time</th>
    <th>Duration</th>
    <th>Scan Progress</th>
    <th>State</th>
    <th>Last Event</th>
    <th># rows fetched</th>
    <th>Resource Pool</th>
    <th>Details</th>
    <th>Action</th>
  </tr>
{{! filter to get just waiting queries from in_flight_queries}}
{{#in_flight_queries}}
{{?waiting}}
  <tr>
    <td>{{effective_user}}</td>
    <td>{{default_db}}</td>
    <td><samp>{{stmt}}</samp></td>
    <td><samp>{{stmt_type}}</samp></td>
    <td>{{start_time}}</td>
    <td>{{waiting_time}}</td>
    <td>{{duration}}</td>
    <td>{{progress}}</td>
    <td><samp>{{state}}</samp></td>
    <td><samp>{{last_event}}</samp></td>
    <td>{{rows_fetched}}</td>
    <td>{{resource_pool}}</td>
    <td><a href='/query_plan?query_id={{query_id}}'>Details</a></td>
    <td><a href='/cancel_query?query_id={{query_id}}'>Close</a></td>
  </tr>
{{/waiting}}
{{/in_flight_queries}}
</table>

<h3>Last {{completed_log_size}} Completed Queries</h3>

<table class='table table-hover table-border'>
  <tr>
    <th>User</th>
    <th>Default Db</th>
    <th>Statement</th>
    <th>Query Type</th>
    <th>Start Time</th>
    <th>End Time</th>
    <th>Duration</th>
    <th>Scan Progress</th>
    <th>State</th>
    <th># rows fetched</th>
    <th>Resource Pool</th>
    <th>Details</th>
  </tr>
{{#completed_queries}}
  <tr>
    <td>{{effective_user}}</td>
    <td>{{default_db}}</td>
    <td><samp>{{stmt}}</samp></td>
    <td><samp>{{stmt_type}}</samp></td>
    <td>{{start_time}}</td>
    <td>{{end_time}}</td>
    <td>{{duration}}</td>
    <td>{{progress}}</td>
    <td><samp>{{state}}</samp></td>
    <td>{{rows_fetched}}</td>
    <td>{{resource_pool}}</td>
    <td><a href='/query_plan?query_id={{query_id}}'>Details</a></td>
  </tr>
{{/completed_queries}}
</table>

<h3>Query Locations</h3>

<table class='table table-hover table-bordered'>
  <tr>
    <th>Location</th>
    <th>Number of running queries with fragments on this host</th>
  </tr>
{{#query_locations}}
  <tr>
    <td>{{location}}</td>
    <td>{{count}}</td>
  </tr>
{{/query_locations}}
</table>

{{> www/common-footer.tmpl }}
