Struct tidb_query_executors::interface::BatchExecuteResult [−][src]
Data to be flowed between parent and child executors’ single next_batch()
invocation.
Note: there are other data flow between executors, like metrics and output statistics.
However they are flowed at once, just before response, instead of each step during execution.
Hence they are not covered by this structure. See BatchExecuteMetaData
.
It is only Send
but not Sync
because executor returns its own data copy. However Send
enables executors to live in different threads.
It is designed to be used in new generation executors, i.e. executors support batch execution. The old executors will not be refined to return this kind of result.
Fields
physical_columns: LazyBatchColumnVec
The physical columns data generated during this invocation.
Note 1: Empty column data doesn’t mean that there is no more data. See is_drained
.
Note 2: This is only a physical store of data. The data may not be in desired order and
there could be filtered out data stored inside. You should access the logical
data via the logical_rows
field. For the same reason, rows_len() > 0
doesn’t
mean that there is logical data inside.
logical_rows: Vec<usize>
Valid row offsets in physical_columns
, placed in the logical order.
warnings: EvalWarnings
The warnings generated during this invocation.
is_drained: Result<bool>
Whether or not there is no more data.
This structure is a Result
. When it is:
Ok(false)
: The normal case, means that there could be more data. The caller should continue callingnext_batch()
although for each call the returned data may be empty.Ok(true)
: Means that the executor is drained and no more data will be returned in future. However there could be some (last) data in thedata
field this time. The caller should NOT callnext_batch()
any more.Err(_)
: Means that there is an error when trying to retrieve more data. In this case, the error is returned and the executor is also drained. Similar toOk(true)
, there could be some remaining data in thedata
field which is valid data and should be processed. The caller should NOT callnext_batch()
any more.
Auto Trait Implementations
impl !RefUnwindSafe for BatchExecuteResult
impl Send for BatchExecuteResult
impl Sync for BatchExecuteResult
impl Unpin for BatchExecuteResult
impl !UnwindSafe for BatchExecuteResult
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<V, W> ConvertFrom<W> for V where
W: ConvertTo<V>,
[src]
W: ConvertTo<V>,
pub fn convert_from(ctx: &mut EvalContext, from: W) -> Result<V, Error>
[src]
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Pointable for T
[src]
pub const ALIGN: usize
[src]
type Init = T
The type for initializers.
pub unsafe fn init(init: <T as Pointable>::Init) -> usize
[src]
pub unsafe fn deref<'a>(ptr: usize) -> &'a T
[src]
pub unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T
[src]
pub unsafe fn drop(ptr: usize)
[src]
impl<T> Same<T> for T
[src]
type Output = T
Should always be Self
impl<T> Sealed<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> SendSyncUnwindSafe for T where
T: Send + Sync + UnwindSafe + ?Sized,
[src]
T: Send + Sync + UnwindSafe + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
[src]
V: MultiLane<T>,