pub enum SortProperties {
Ordered(SortOptions),
Unordered,
Singleton,
}
Expand description
To propagate SortOptions
across the PhysicalExpr
, it is insufficient
to simply use Option<SortOptions>
: There must be a differentiation between
unordered columns and literal values, since literals may not break the ordering
when they are used as a child of some binary expression when the other child has
some ordering. On the other hand, unordered columns cannot maintain ordering when
they take part in such operations.
Example: ((a_ordered + b_unordered) + c_ordered) expression cannot end up with sorted data; however the ((a_ordered + 999) + c_ordered) expression can. Therefore, we need two different variants for literals and unordered columns as literals are often more ordering-friendly under most mathematical operations.
Variants§
Ordered(SortOptions)
Use the ordinary SortOptions
struct to represent ordered data:
Unordered
Singleton
Implementations§
Trait Implementations§
source§impl Clone for SortProperties
impl Clone for SortProperties
source§fn clone(&self) -> SortProperties
fn clone(&self) -> SortProperties
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for SortProperties
impl Debug for SortProperties
source§impl Default for SortProperties
impl Default for SortProperties
source§fn default() -> SortProperties
fn default() -> SortProperties
source§impl Neg for SortProperties
impl Neg for SortProperties
source§impl PartialEq for SortProperties
impl PartialEq for SortProperties
impl Copy for SortProperties
impl StructuralPartialEq for SortProperties
Auto Trait Implementations§
impl Freeze for SortProperties
impl RefUnwindSafe for SortProperties
impl Send for SortProperties
impl Sync for SortProperties
impl Unpin for SortProperties
impl UnwindSafe for SortProperties
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> CloneToUninit for Twhere
T: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)