blob: 68a8fd8e094e3cddb78cc793f405e350f85d2b42 [file] [log] [blame]
// 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.
namespace cpp impala
namespace java org.apache.impala.thrift
include "Status.thrift"
include "Types.thrift"
enum TExecState {
REGISTERED = 0,
PLANNING = 1,
QUEUED = 2,
RUNNING = 3,
FINISHED = 4,
CANCELLED = 5,
FAILED = 6,
}
// Execution stats for a single plan node.
struct TExecStats {
// The wall clock time spent on the "main" thread. This is the user perceived
// latency. This value indicates the current bottleneck.
// Note: anywhere we have a queue between operators, this time can fluctuate
// significantly without the overall query time changing much (i.e. the bottleneck
// moved to another operator). This is unavoidable though.
1: optional i64 latency_ns
// Total CPU time spent across all threads. For operators that have an async
// component (e.g. multi-threaded) this will be >= latency_ns.
// TODO-MT: remove this or latency_ns
2: optional i64 cpu_time_ns
// Number of rows returned.
3: optional i64 cardinality
// Peak memory used (in bytes).
4: optional i64 memory_used
}
// Summary for a single plan node. This includes labels for how to display the
// node as well as per instance stats.
struct TPlanNodeExecSummary {
1: required Types.TPlanNodeId node_id
2: required Types.TFragmentIdx fragment_idx
3: required string label
4: optional string label_detail
5: required i32 num_children
// Estimated stats generated by the planner
6: optional TExecStats estimated_stats
// One entry for each fragment instance executing this plan node.
7: optional list<TExecStats> exec_stats
// If true, this plan node is an exchange node that is the receiver of a broadcast.
8: optional bool is_broadcast
}
// Progress counters for an in-flight query.
struct TExecProgress {
1: optional i64 total_scan_ranges
2: optional i64 num_completed_scan_ranges
}
// Execution summary of an entire query.
struct TExecSummary {
// State of the query.
1: required TExecState state
// Contains the error if state is FAILED.
2: optional Status.TStatus status
// Flattened execution summary of the plan tree.
3: optional list<TPlanNodeExecSummary> nodes
// For each exch node in 'nodes', contains the index to the root node of the sending
// fragment for this exch. Both the key and value are indices into 'nodes'.
4: optional map<i32, i32> exch_to_sender_map
// List of errors that were encountered during execution. This can be non-empty
// even if status is okay, in which case it contains errors that impala skipped
// over.
5: optional list<string> error_logs
// Optional record indicating the query progress
6: optional TExecProgress progress
}