Skip to main content

WorkTable

Struct WorkTable 

Source
pub struct WorkTable<Row, PrimaryKey, AvailableTypes = (), AvailableIndexes = (), SecondaryIndexes = (), LockType = (), PkGen = <PrimaryKey as TablePrimaryKey>::Generator, const DATA_LENGTH: usize = INNER_PAGE_SIZE, PkNodeType = Vec<Pair<PrimaryKey, OffsetEqLink<DATA_LENGTH>>>>
where PrimaryKey: Clone + Ord + Send + 'static + Hash, Row: StorableRow + Send + Clone + 'static, PkNodeType: NodeLike<Pair<PrimaryKey, OffsetEqLink<DATA_LENGTH>>> + Send + 'static,
{ pub data: Arc<DataPages<Row, DATA_LENGTH>>, pub primary_index: Arc<PrimaryIndex<PrimaryKey, DATA_LENGTH, PkNodeType>>, pub indexes: Arc<SecondaryIndexes>, pub pk_gen: PkGen, pub lock_manager: Arc<LockMap<LockType, PrimaryKey>>, pub update_state: IndexMap<PrimaryKey, Row>, pub table_name: &'static str, pub pk_phantom: PhantomData<(AvailableTypes, AvailableIndexes)>, }

Fields§

§data: Arc<DataPages<Row, DATA_LENGTH>>§primary_index: Arc<PrimaryIndex<PrimaryKey, DATA_LENGTH, PkNodeType>>§indexes: Arc<SecondaryIndexes>§pk_gen: PkGen§lock_manager: Arc<LockMap<LockType, PrimaryKey>>§update_state: IndexMap<PrimaryKey, Row>§table_name: &'static str§pk_phantom: PhantomData<(AvailableTypes, AvailableIndexes)>

Implementations§

Source§

impl<Row, PrimaryKey, AvailableTypes, AvailableIndexes, SecondaryIndexes, LockType, PkGen, const DATA_LENGTH: usize, NodeType> WorkTable<Row, PrimaryKey, AvailableTypes, AvailableIndexes, SecondaryIndexes, LockType, PkGen, DATA_LENGTH, NodeType>
where PrimaryKey: Debug + Clone + Ord + Send + 'static + Hash, Row: StorableRow + Send + Clone + 'static, <Row as StorableRow>::WrappedRow: RowWrapper<Row>, NodeType: NodeLike<Pair<PrimaryKey, OffsetEqLink<DATA_LENGTH>>> + Send + 'static, SecondaryIndexes: MemStat + TableSecondaryIndexInfo,

Source

pub fn system_info(&self) -> SystemInfo

Source§

impl<Row, PrimaryKey, AvailableTypes, AvailableIndexes, SecondaryIndexes, LockType, PkGen, const DATA_LENGTH: usize, PkNodeType> WorkTable<Row, PrimaryKey, AvailableTypes, AvailableIndexes, SecondaryIndexes, LockType, PkGen, DATA_LENGTH, PkNodeType>
where Row: TableRow<PrimaryKey> + StorableRow + Send + Clone + 'static, PrimaryKey: Debug + Clone + Ord + Send + TablePrimaryKey + Hash, PkNodeType: NodeLike<Pair<PrimaryKey, OffsetEqLink<DATA_LENGTH>>> + Send + 'static, <Row as StorableRow>::WrappedRow: RowWrapper<Row>,

Source

pub fn get_next_pk(&self) -> PrimaryKey
where PkGen: PrimaryKeyGenerator<PrimaryKey>,

Source

pub fn select(&self, pk: PrimaryKey) -> Option<Row>

Selects Row from table identified with provided primary key. Returns None if no value presented.

Source

pub fn insert(&self, row: Row) -> Result<PrimaryKey, WorkTableError>
where Row: Archive + Clone + for<'a> Serialize<Strategy<Serializer<AlignedVec, ArenaHandle<'a>, Share>, Error>>, <Row as StorableRow>::WrappedRow: Archive + for<'a> Serialize<Strategy<Serializer<AlignedVec, ArenaHandle<'a>, Share>, Error>>, <<Row as StorableRow>::WrappedRow as Archive>::Archived: ArchivedRowWrapper, PrimaryKey: Clone, AvailableTypes: 'static, AvailableIndexes: AvailableIndex, SecondaryIndexes: TableSecondaryIndex<Row, AvailableTypes, AvailableIndexes>, LockType: 'static,

Source

pub fn insert_cdc<SecondaryEvents>( &self, row: Row, ) -> Result<(PrimaryKey, Operation<<PkGen as PrimaryKeyGeneratorState>::State, PrimaryKey, SecondaryEvents>), WorkTableError>
where Row: Archive + Clone + for<'a> Serialize<Strategy<Serializer<AlignedVec, ArenaHandle<'a>, Share>, Error>>, <Row as StorableRow>::WrappedRow: Archive + for<'a> Serialize<Strategy<Serializer<AlignedVec, ArenaHandle<'a>, Share>, Error>>, <<Row as StorableRow>::WrappedRow as Archive>::Archived: ArchivedRowWrapper, PrimaryKey: Clone, SecondaryIndexes: TableSecondaryIndex<Row, AvailableTypes, AvailableIndexes> + TableSecondaryIndexCdc<Row, AvailableTypes, SecondaryEvents, AvailableIndexes>, PkGen: PrimaryKeyGeneratorState, AvailableIndexes: Debug + AvailableIndex,

Source

pub async fn reinsert( &self, row_old: Row, row_new: Row, ) -> Result<PrimaryKey, WorkTableError>
where Row: Archive + Clone + for<'a> Serialize<Strategy<Serializer<AlignedVec, ArenaHandle<'a>, Share>, Error>>, <Row as StorableRow>::WrappedRow: Archive + for<'a> Serialize<Strategy<Serializer<AlignedVec, ArenaHandle<'a>, Share>, Error>>, <<Row as StorableRow>::WrappedRow as Archive>::Archived: ArchivedRowWrapper, PrimaryKey: Clone, AvailableTypes: 'static, AvailableIndexes: Debug + AvailableIndex, SecondaryIndexes: TableSecondaryIndex<Row, AvailableTypes, AvailableIndexes>, LockType: 'static,

Reinserts provided row with updating indexes and saving it’s data in new place. Is used to not delete and insert because this situation causes a possible gap when row doesn’t exist.

For reinsert it’s ok that part of indexes will lead to old row and other part is for new row. Goal is to make PrimaryKey of the row always acceptable. As for reinsert PrimaryKey will be same for both old and new Link’s, goal will be achieved.

Source

pub fn reinsert_cdc<SecondaryEvents>( &self, row_old: Row, row_new: Row, ) -> Result<(PrimaryKey, Operation<<PkGen as PrimaryKeyGeneratorState>::State, PrimaryKey, SecondaryEvents>), WorkTableError>
where Row: Archive + Clone + for<'a> Serialize<Strategy<Serializer<AlignedVec, ArenaHandle<'a>, Share>, Error>>, <Row as StorableRow>::WrappedRow: Archive + for<'a> Serialize<Strategy<Serializer<AlignedVec, ArenaHandle<'a>, Share>, Error>>, <<Row as StorableRow>::WrappedRow as Archive>::Archived: ArchivedRowWrapper, PrimaryKey: Clone, SecondaryIndexes: TableSecondaryIndex<Row, AvailableTypes, AvailableIndexes> + TableSecondaryIndexCdc<Row, AvailableTypes, SecondaryEvents, AvailableIndexes>, PkGen: PrimaryKeyGeneratorState, AvailableIndexes: Debug + AvailableIndex,

Trait Implementations§

Source§

impl<Row, PrimaryKey, AvailableTypes: Debug, AvailableIndexes: Debug, SecondaryIndexes: Debug, LockType: Debug, PkGen: Debug, const DATA_LENGTH: usize, PkNodeType> Debug for WorkTable<Row, PrimaryKey, AvailableTypes, AvailableIndexes, SecondaryIndexes, LockType, PkGen, DATA_LENGTH, PkNodeType>
where PrimaryKey: Clone + Ord + Send + 'static + Hash + Debug, Row: StorableRow + Send + Clone + 'static + Debug, PkNodeType: NodeLike<Pair<PrimaryKey, OffsetEqLink<DATA_LENGTH>>> + Send + 'static + Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<Row, PrimaryKey, AvailableTypes, AvailableIndexes, SecondaryIndexes, LockType, PkGen, const DATA_LENGTH: usize, PkNodeType> Default for WorkTable<Row, PrimaryKey, AvailableTypes, AvailableIndexes, SecondaryIndexes, LockType, PkGen, DATA_LENGTH, PkNodeType>
where PrimaryKey: Debug + Clone + Ord + Send + TablePrimaryKey + Hash, SecondaryIndexes: Default, PkGen: Default, PkNodeType: NodeLike<Pair<PrimaryKey, OffsetEqLink<DATA_LENGTH>>> + Send + 'static, Row: StorableRow + Send + Clone + 'static, <Row as StorableRow>::WrappedRow: RowWrapper<Row>,

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<Row, PrimaryKey, AvailableTypes = (), AvailableIndexes = (), SecondaryIndexes = (), LockType = (), PkGen = <PrimaryKey as TablePrimaryKey>::Generator, const DATA_LENGTH: usize = INNER_PAGE_SIZE, PkNodeType = Vec<Pair<PrimaryKey, OffsetEqLink<DATA_LENGTH>>>> !Freeze for WorkTable<Row, PrimaryKey, AvailableTypes, AvailableIndexes, SecondaryIndexes, LockType, PkGen, DATA_LENGTH, PkNodeType>

§

impl<Row, PrimaryKey, AvailableTypes = (), AvailableIndexes = (), SecondaryIndexes = (), LockType = (), PkGen = <PrimaryKey as TablePrimaryKey>::Generator, const DATA_LENGTH: usize = INNER_PAGE_SIZE, PkNodeType = Vec<Pair<PrimaryKey, OffsetEqLink<DATA_LENGTH>>>> !RefUnwindSafe for WorkTable<Row, PrimaryKey, AvailableTypes, AvailableIndexes, SecondaryIndexes, LockType, PkGen, DATA_LENGTH, PkNodeType>

§

impl<Row, PrimaryKey, AvailableTypes, AvailableIndexes, SecondaryIndexes, LockType, PkGen, const DATA_LENGTH: usize, PkNodeType> Send for WorkTable<Row, PrimaryKey, AvailableTypes, AvailableIndexes, SecondaryIndexes, LockType, PkGen, DATA_LENGTH, PkNodeType>
where PkGen: Send, SecondaryIndexes: Sync + Send, AvailableTypes: Send, AvailableIndexes: Send, PrimaryKey: Sync, Row: Sync, <Row as StorableRow>::WrappedRow: Send, LockType: Send + Sync,

§

impl<Row, PrimaryKey, AvailableTypes, AvailableIndexes, SecondaryIndexes, LockType, PkGen, const DATA_LENGTH: usize, PkNodeType> Sync for WorkTable<Row, PrimaryKey, AvailableTypes, AvailableIndexes, SecondaryIndexes, LockType, PkGen, DATA_LENGTH, PkNodeType>
where PkGen: Sync, SecondaryIndexes: Sync + Send, AvailableTypes: Sync, AvailableIndexes: Sync, PrimaryKey: Sync, Row: Sync, <Row as StorableRow>::WrappedRow: Send, LockType: Send + Sync,

§

impl<Row, PrimaryKey, AvailableTypes, AvailableIndexes, SecondaryIndexes, LockType, PkGen, const DATA_LENGTH: usize, PkNodeType> Unpin for WorkTable<Row, PrimaryKey, AvailableTypes, AvailableIndexes, SecondaryIndexes, LockType, PkGen, DATA_LENGTH, PkNodeType>
where PkGen: Unpin, AvailableTypes: Unpin, AvailableIndexes: Unpin,

§

impl<Row, PrimaryKey, AvailableTypes = (), AvailableIndexes = (), SecondaryIndexes = (), LockType = (), PkGen = <PrimaryKey as TablePrimaryKey>::Generator, const DATA_LENGTH: usize = INNER_PAGE_SIZE, PkNodeType = Vec<Pair<PrimaryKey, OffsetEqLink<DATA_LENGTH>>>> !UnwindSafe for WorkTable<Row, PrimaryKey, AvailableTypes, AvailableIndexes, SecondaryIndexes, LockType, PkGen, DATA_LENGTH, PkNodeType>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more