<!--
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='{{ __common__.host-url }}/query_plan?query_id={{query_id}}'>Details</a></td>
    <td><a href='{{ __common__.host-url }}/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='{{ __common__.host-url }}/query_plan?query_id={{query_id}}'>Details</a></td>
    <td><a href='{{ __common__.host-url }}/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='{{ __common__.host-url }}/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 }}
